mcpField
R
RAD Security MCP Server

RAD Security MCP Server

本地服务
rad.security开发工具62 天前更新

关于 RAD Security MCP Server

RAD Security MCP Server 将 MCP 客户端连接到 RAD Security 的 Kubernetes 与云安全数据,提供调查发现项、工作负载、漏洞及审计等工具,并可限制工具集和写入权限。

主要功能

  1. 01查看集群和容器
  2. 02审查并更新安全发现项
  3. 03分析运行时进程与基线
  4. 04查询镜像、漏洞和 Kubernetes 资源
  5. 05管理自动化、仪表板和集成
  6. 06筛选工具集并限制写入权限

适用场景

  1. 01调查 Kubernetes 安全发现项
  2. 02检查易受攻击的镜像和 SBOM
  3. 03查看容器中运行的进程
  4. 04为 Agent 配置选定工具的只读权限

MCP 相关

通过托管 Streamable HTTP 或自托管服务,将 RAD Security 数据和操作作为 MCP 工具提供。客户端可限定可用工具集,并启用只读访问。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"rad-security": {
"command": "npx",
"args": [
"-y",
"@rad-security/mcp-server"
],
"env": {
"RAD_SECURITY_ACCESS_KEY_ID": "<RAD_SECURITY_ACCESS_KEY_ID>",
"RAD_SECURITY_SECRET_KEY": "<RAD_SECURITY_SECRET_KEY>",
"RAD_SECURITY_ACCOUNT_ID": "<RAD_SECURITY_ACCOUNT_ID>"
}
}
}
}
启动命令npx -y @rad-security/mcp-server
需要配置的环境变量
RAD_SECURITY_ACCESS_KEY_ID密钥
RAD_SECURITY_SECRET_KEY密钥
RAD_SECURITY_ACCOUNT_ID

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@rad-security/mcp-server

工具

52

收录的工具列表 · 更新于 3 周前

参数类型必填说明
filtersstring否筛选字符串(例如,'image_name:nginx' 或 'image_digest:sha256:...' 或 'owner_namespace:namespace' 或 'cluster_id:cluster_id')。多个筛选条件可用逗号组合。
offsetnumber否分页偏移量。默认值:0
limitnumber否要返回的最大结果数。默认值:20
qstring否自由文本搜索查询

详细介绍

RAD Security MCP Server

npm version

面向 RAD Security 的模型上下文协议(MCP)服务,为 Kubernetes 和云环境提供 AI 驱动的安全洞察。

RAD Security MCP 服务

连接(托管式 — 推荐)

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(驼峰式):

{
  "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: 在“设置” → “连接器”中添加;请参阅自定义连接器。
测试(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"}}}'
限定 Agent 可见的工具

默认情况下,连接会获得所有工具包。若要为 Agent 提供更精简的集合——减少上下文/令牌开销,并遵循最小权限原则——请在该连接中与 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。

示例——只读的 findings/images Agent(任何支持标头的客户端均可;此处以 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 移除所有写入工具。

  • 账户清单

    • 列出集群及其详细信息
  • 容器清单

    • 列出容器及其详细信息
  • 安全发现项

    • 列出并分析安全发现项
    • 更新安全发现项的状态
  • 运行时安全

    • 获取正在运行的容器的进程树
    • 获取正在运行的容器的运行时基线
    • 分析正在运行的容器的进程行为
  • 审计

    • 列出通过 shell 进入 Pod 的用户
  • 镜像和漏洞

    • 获取 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
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,则忽略此项。

可用工具包: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 用于控制可流式传输的 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 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。