RAD Security

官方

與RAD Security平台互動,該平台為Kubernetes和雲端環境提供AI驅動的安全洞察。

你可以用 RAD Security MCP 做什麼?

  • 列出安全發現 — 要求您的助理列出並分析 Kubernetes 與雲端環境中的安全發現。
  • 調查執行期行為 — 取得執行中容器的程序樹、執行期基線與程序行為分析。
  • 查詢映像檔與漏洞 — 擷取 SBOM、列出高風險映像檔,並管理 CVE 處置狀態,例如忽略或取消忽略 CVE。
  • 管理自動化 — 直接從聊天中列出、建立、更新及執行具有 cron 排程的自動化(工作流程)。
  • 搜尋知識庫 — 搜尋集合與文件,並針對特定文件執行結構化查詢。
  • 執行 RadQL 查詢 — 對容器與安全發現等資料類型執行進階查詢,包含篩選、搜尋與彙總。

文件

RAD Security MCP 伺服器

npm version

一個用於 RAD Security 的 Model Context Protocol (MCP) 伺服器,為 Kubernetes 和雲端環境提供 AI 驅動的安全洞察。

RAD Security MCP server

連線(託管 — 建議)

RAD Security 為您代管 MCP 伺服器,因此大多數使用者無需自行安裝或託管任何東西。將您的 MCP 用戶端指向託管端點,並使用您的 RAD Security 憑證進行驗證。

  • 端點: https://api.rad.security/mcp/ — 請注意結尾斜線

  • 傳輸方式: Streamable HTTP。

  • 驗證:Authorization 標頭中傳送您的憑證:

    Authorization: Bearer <access_key_id>:<secret_key>:<account_id>
    

    <access_key_id><secret_key> 是 RAD Security API 存取金鑰(請在 RAD Security 主控台中建立);<account_id> 是您的帳戶 ID。伺服器會針對 RAD Security API 驗證每個請求 — 伺服器端不會儲存任何憑證。

短效的 Bearer ory_st_<session_token>:<account_id> 表單也可運作,但工作階段權杖會過期 — 對於任何長期用途(例如 Slack / Claude Tag),請優先使用存取金鑰。

Claude Code

claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
  --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>"

OpenAI Codex CLI

~/.codex/config.toml

[mcp_servers.rad-security]
url = "https://api.rad.security/mcp/"
http_headers = { "Authorization" = "Bearer <access_key_id>:<secret_key>:<account_id>" }

或透過 CLI,將密鑰保存在環境變數中(export RAD_MCP_TOKEN=<access_key_id>:<secret_key>:<account_id>):

codex mcp add rad-security --url https://api.rad.security/mcp/ --bearer-token-env-var RAD_MCP_TOKEN

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "rad-security": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

VS Code(GitHub Copilot)

.vscode/mcp.json — 請注意包裝鍵是 servers,而非 mcpServers

{
  "servers": {
    "rad-security": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Gemini CLI

~/.gemini/settings.json — 請注意 URL 欄位是 httpUrl(而非 url):

{
  "mcpServers": {
    "rad-security": {
      "httpUrl": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Cline

cline_mcp_settings.json — 請注意 type 必須完全為 streamableHttp(camelCase):

{
  "mcpServers": {
    "rad-security": {
      "type": "streamableHttp",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json — 請注意 URL 欄位是 serverUrl

{
  "mcpServers": {
    "rad-security": {
      "serverUrl": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>"
      }
    }
  }
}

其他用戶端

大多數 MCP 用戶端接受具有 URL 和 Authorization 標頭的遠端 Streamable HTTP 伺服器 — 只有欄位名稱不同。在所有情況下,請在 URL 上保留結尾斜線

用戶端設定位置URL 欄位傳輸標記標頭欄位
Claude Codeclaude mcp add位置引數--transport http--header
OpenAI Codex CLI~/.codex/config.tomlurl自動推斷http_headers / bearer_token_env_var
Cursor.cursor/mcp.jsonurltype: "http"headers
VS Code.vscode/mcp.jsonserversurltype: "http"headers
Gemini CLI~/.gemini/settings.jsonhttpUrl自動推斷headers
Clinecline_mcp_settings.jsonurltype: "streamableHttp"headers
Windsurf~/.codeium/windsurf/mcp_config.jsonserverUrl自動推斷headers

Claude.ai / Claude Desktop / Claude Tag(Slack)

這些介面將遠端 MCP 伺服器新增為連接器,這些連接器使用自己的憑證設定,而非原始請求標頭。將 https://api.rad.security/mcp/ 新增為自訂連接器,然後透過連接器的設定提供 bearer 憑證:

  • Claude Tag(Slack): 將伺服器附加為外掛程式,其 .mcp.json 指向端點,並在 Access 套件的憑證標籤頁中新增 bearer 憑證。請參閱 Claude Tag — 連接自訂 MCP 伺服器
  • Claude.ai / Desktop: 在「設定 → 連接器」下新增;請參閱自訂連接器

測試(MCP Inspector 或 curl)

npx @modelcontextprotocol/inspector
# Transport:      Streamable HTTP
# URL:            https://api.rad.security/mcp/   (trailing slash)
# Custom headers: { "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>" }
curl -H "authorization: Bearer <access_key_id>:<secret_key>:<account_id>" \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -X POST https://api.rad.security/mcp/ \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'

限制代理程式可見的工具範圍

預設情況下,連線會取得所有工具組。若要為代理程式提供較小的集合 — 減少上下文/權杖開銷,並實現最小權限 — 請在該連線中與 Authorization 一起新增範圍限制標頭。該子集是強制執行的:超出範圍的工具會從 tools/list 中隱藏並且在呼叫時被拒絕。

標頭效果
X-Rad-Toolkits: findings, images僅限這些工具組
X-Rad-Exclude-Toolkits: workflows除這些之外的所有工具組
X-Rad-Readonly: true僅限唯讀工具(移除寫入工具)

工具組:containersclustersauditimageskubeobjectruntimefindingsinboxworkflowsknowledge_baseradqldashboardsintegrations。所有工具組預設皆為啟用 — 請使用上述標頭縮小範圍,並在您想要排除所有寫入工具時使用 X-Rad-Readonly

範例 — 唯讀的 findings/images 代理程式(任何支援標頭的用戶端;此處以 Cursor 為例):

{
  "mcpServers": {
    "rad-security-findings": {
      "type": "http",
      "url": "https://api.rad.security/mcp/",
      "headers": {
        "Authorization": "Bearer <access_key_id>:<secret_key>:<account_id>",
        "X-Rad-Toolkits": "findings, images",
        "X-Rad-Readonly": "true"
      }
    }
  }
}

在 Claude Code 中,傳遞額外的 --header

claude mcp add --transport http rad-security https://api.rad.security/mcp/ \
  --header "Authorization: Bearer <access_key_id>:<secret_key>:<account_id>" \
  --header "X-Rad-Toolkits: findings, images"

功能

所有工具都需要驗證以及 RAD Security 中的帳戶。託管端點預設會公開以下所有工具組;請使用 X-Rad-Toolkits / X-Rad-Exclude-Toolkits 縮小用戶端範圍,或使用 X-Rad-Readonly: true 移除所有寫入工具。

  • 帳戶庫存(Account Inventory)

    • 列出叢集及其詳細資訊
  • 容器庫存(Containers Inventory)

    • 列出容器及其詳細資訊
  • 安全發現(Security Findings)

    • 列出並分析安全發現
    • 更新安全發現的狀態
  • 執行時期安全(Runtime Security)

    • 取得執行中容器的程序樹
    • 取得執行中容器的執行時期基準
    • 分析執行中容器的程序行為
  • 稽核(Audit)

    • 列出誰登入過 Pod
  • 映像與漏洞(Images and Vulnerabilities)

    • 取得 SBOM
    • 列出映像及其漏洞
    • 取得漏洞最嚴重的映像
    • 忽略 / 取消忽略 CVE 並列出有效的 CVE 處置
  • Kubernetes 物件(Kubernetes Objects)

    • 取得特定 Kubernetes 資源的詳細資訊
    • 列出 Kubernetes 資源
  • 收件匣(Inbox)

    • 列出收件匣項目及其詳細資訊
    • 將收件匣項目標記為誤報
  • 自動化(workflows

    • 列出自動化、執行和排程
    • 取得自動化和執行詳細資訊
    • 執行自動化
    • 建立和更新自動化,並新增 cron 排程

    「Automation」是使用者看到的產品名稱;「workflow」是 API 和工具名稱所使用的底層 Windmill 物件。它們是同一件事。

  • 知識庫(Knowledge Base)

    • 搜尋知識庫
    • 列出集合和文件
    • 對文件執行結構化查詢
  • 儀表板(Dashboards)

    • 列出儀表板並取得其詳細資訊
    • 列出並取得儀表板和 widget 範本
    • 建立儀表板,並就地更新(省略的欄位保持不變,因此小幅編輯不需要重新傳送整個儀表板)
  • 整合(Integrations)

    • 列出外部整合
  • RadQL(進階查詢)

    • 列出可查詢的資料類型(containers、findings、kubernetes_resources 等)
    • 取得特定資料類型的 schema/中繼資料
    • 列出篩選欄位的可能值
    • 使用篩選、搜尋和彙總執行 RadQL 查詢
    • 從結構化條件以程式方式建立查詢
    • 並行執行多個查詢

自行託管

偏好自己執行伺服器 — 例如在氣隙環境、資料落地要求,或您不想透過託管閘道路由?它已發布到 npm 並提供容器映像。

先決條件

  • Node.js 20.x 或更高版本

憑證

透過環境變數提供您的 RAD Security 憑證:

RAD_SECURITY_ACCESS_KEY_ID="your_access_key"
RAD_SECURITY_SECRET_KEY="your_secret_key"
RAD_SECURITY_ACCOUNT_ID="your_account_id"

# Optional: fetched automatically from the account if not set
RAD_SECURITY_TENANT_ID="your_tenant_id"

npx(stdio)— 例如 Claude Desktop

{
  "mcpServers": {
    "rad-security": {
      "command": "npx",
      "args": ["-y", "@rad-security/mcp-server"],
      "env": {
        "RAD_SECURITY_ACCESS_KEY_ID": "<your-access-key-id>",
        "RAD_SECURITY_SECRET_KEY": "<your-secret-key>",
        "RAD_SECURITY_ACCOUNT_ID": "<your-account-id>"
      }
    }
  }
}

Docker(Streamable HTTP)

docker build -t rad-security/mcp-server .
docker run \
  -e TRANSPORT_TYPE=streamable \
  -e RAD_SECURITY_ACCESS_KEY_ID=your_access_key \
  -e RAD_SECURITY_SECRET_KEY=your_secret_key \
  -e RAD_SECURITY_ACCOUNT_ID=your_account_id \
  -p 3000:3000 \
  rad-security/mcp-server

工具組篩選

控制自行託管伺服器公開哪些工具組:

  • INCLUDE_TOOLKITS:以逗號分隔的工具組清單,指定要包含的工具組(僅啟用這些)。
  • EXCLUDE_TOOLKITS:以逗號分隔的工具組清單,指定要排除的工具組(啟用所有其他工具組)。若設定了 INCLUDE_TOOLKITS,則忽略此項。

可用的工具組:containersclustersauditimageskubeobjectruntimefindingsinboxworkflowsknowledge_baseradqldashboardsintegrations。所有工具組預設皆為啟用。

# Only the workflows toolkit
INCLUDE_TOOLKITS="workflows"

# Everything except runtime
EXCLUDE_TOOLKITS="runtime"

多租戶(每請求驗證)

MCP_AUTH_MODE 控制 streamable HTTP 部署如何驗證傳入請求 — 這就是託管端點所使用的機制:

  • MCP_AUTH_MODE=env(預設)— 每個工作階段都使用 RAD_SECURITY_* 環境憑證。單租戶,且在 HTTP 層未驗證,因此不得從不受信任的網路存取。
  • MCP_AUTH_MODE=header — 每個請求都必須在 Authorization 標頭中攜帶自己的憑證(上述 Bearer <access_key_id>:<secret_key>:<account_id> 表單);缺少或格式錯誤的標頭會以 401 拒絕。僅在 TRANSPORT_TYPE=streamable 下支援。RAD_SECURITY_API_URL 取自伺服器設定,而非呼叫端。
docker run \
  -e TRANSPORT_TYPE=streamable \
  -e MCP_AUTH_MODE=header \
  -e RAD_SECURITY_API_URL=https://api.rad.security \
  -p 3000:3000 \
  rad-security/mcp-server

SSE 傳輸(TRANSPORT_TYPE=sse)已棄用,建議改用 Streamable HTTP,且僅使用環境憑證。

開發

# Install dependencies
npm install

# Run type checking
npm run type-check

# Run linter
npm run lint

# Build
npm run build

授權

MIT 授權 — 詳細資訊請參閱 LICENSE 檔案