RAD Security

官方

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

你可以用 RAD Security MCP 做什麼?

  • 檢視安全性發現 — 列出並分析安全性發現,然後更新發現的狀態。
  • 檢查映像檔與 CVE — 取得 SBOM、列出含有漏洞的映像檔、找出漏洞最多的映像檔,以及忽略或取消忽略 CVE。
  • 追蹤執行階段行為 — 取得執行中容器的程序樹與執行階段基準,並分析其程序行為。
  • 稽核 Pod 存取 — 列出曾進入 Pod shell 的使用者。
  • 執行 RadQL 查詢 — 列出資料類型、取得結構描述,並執行篩選或彙總查詢,包括平行執行多個查詢。
  • 管理自動化 — 列出自動化項目、執行記錄與排程;取得執行詳細資料;執行自動化;或建立及更新自動化項目。

文件

RAD Security MCP Server

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),建議使用存取金鑰。

使用一個連線存取整個租用戶

若要透過一個 MCP 設定存取所有帳戶,請在租用戶上建立存取金鑰,並以 tenant=<tenant_id> 取代帳戶 ID:

Authorization: Bearer <access_key_id>:<secret_key>:tenant=<tenant_id>

在租用戶範圍的工作階段中:

  • list_accounts 工具會傳回租用戶的帳戶。
  • 帳戶範圍的工具需要 account_id 引數,且該引數必須是租用戶的子帳戶。每次呼叫只會涵蓋一個帳戶;結果不會跨帳戶合併。
  • 預設只提供唯讀工具,因為租用戶憑證可存取每個帳戶。若要啟用寫入工具,請傳送 X-Rad-Readonly: false。

對於 npx/stdio 伺服器,請設定 RAD_SECURITY_TENANT_ID,但不要設定 RAD_SECURITY_ACCOUNT_ID,並使用 RAD_SECURITY_READONLY=false 啟用寫入工具。

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(駝峰式大小寫):

{
  "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.json (servers)urltype: "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 bundle 的 Credentials 索引標籤中新增 bearer 憑證。請參閱 Claude Tag — 連線自訂 MCP 伺服器。
  • Claude.ai / Desktop: 在 Settings → Connectors 下新增;請參閱自訂連接器。

測試(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僅限唯讀工具(移除寫入工具)

工具組:containers、clusters、audit、images、kubeobject、runtime、findings、inbox、workflows、knowledge_base、radql、dashboards、integrations。預設全部啟用 — 使用上述標頭縮小範圍;若要排除所有寫入工具,請使用 X-Rad-Readonly。

範例 — 唯讀的發現項目/映像代理程式(任何支援標頭的用戶端;此處以 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 移除所有寫入工具。

  • 帳戶清查

    • 列出叢集及其詳細資料
  • 容器清查

    • 列出容器及其詳細資料
  • 安全性發現項目

    • 列出並分析安全性發現項目
    • 更新安全性發現項目的狀態
  • 執行階段安全性

    • 取得執行中容器的程序樹
    • 取得執行中容器的執行階段基準
    • 分析執行中容器的程序行為
  • 稽核

    • 列出曾進入 Pod shell 的使用者
  • 映像與弱點

    • 取得 SBOM
    • 列出映像及其弱點
    • 取得弱點最多的映像
    • 忽略/取消忽略 CVE,並列出有效的 CVE 處置
  • Kubernetes 物件

    • 取得特定 Kubernetes 資源的詳細資料
    • 列出 Kubernetes 資源
  • 收件匣

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

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

    「Automation」是使用者看到的產品名稱;「workflow」是 API 和工具名稱所使用的底層 Windmill 物件。 兩者指的是同一項功能。

  • 知識庫

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

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

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

    • 列出可供查詢的資料類型(containers、findings、kubernetes_resources 等)
    • 取得特定資料類型的結構描述/中繼資料
    • 列出篩選欄位的可能值
    • 使用篩選、搜尋和彙總執行 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.
# Set this without RAD_SECURITY_ACCOUNT_ID for a session across all the tenant's accounts.
RAD_SECURITY_TENANT_ID="your_tenant_id"

# Optional: true exposes only read-only tools. Tenant-scoped sessions are read-only unless this is false.
RAD_SECURITY_READONLY="true"

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,則會忽略此設定。

可用工具組:containers、clusters、audit、images、kubeobject、runtime、findings、inbox、workflows、knowledge_base、radql、dashboards、integrations。預設全部啟用。

# 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 - 詳情請參閱 LICENSE 檔案