关于 RAD Security MCP Server
RAD Security MCP Server 将 MCP 客户端连接到 RAD Security 的 Kubernetes 与云安全数据,提供调查发现项、工作负载、漏洞及审计等工具,并可限制工具集和写入权限。
主要功能
- 01查看集群和容器
- 02审查并更新安全发现项
- 03分析运行时进程与基线
- 04查询镜像、漏洞和 Kubernetes 资源
- 05管理自动化、仪表板和集成
- 06筛选工具集并限制写入权限
适用场景
- 01调查 Kubernetes 安全发现项
- 02检查易受攻击的镜像和 SBOM
- 03查看容器中运行的进程
- 04为 Agent 配置选定工具的只读权限
MCP 相关
通过托管 Streamable HTTP 或自托管服务,将 RAD Security 数据和操作作为 MCP 工具提供。客户端可限定可用工具集,并启用只读访问。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
52收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| filters | string | 否 | 筛选字符串(例如,'image_name:nginx' 或 'image_digest:sha256:...' 或 'owner_namespace:namespace' 或 'cluster_id:cluster_id')。多个筛选条件可用逗号组合。 |
| offset | number | 否 | 分页偏移量。默认值:0 |
| limit | number | 否 | 要返回的最大结果数。默认值:20 |
| q | string | 否 | 自由文本搜索查询 |
详细介绍
RAD Security MCP Server
面向 RAD Security 的模型上下文协议(MCP)服务,为 Kubernetes 和云环境提供 AI 驱动的安全洞察。
连接(托管式 — 推荐)
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 Code | claude mcp add | 位置参数 | --transport http | --header |
| OpenAI Codex CLI | ~/.codex/config.toml | url | 自动推断 | http_headers / bearer_token_env_var |
| Cursor | .cursor/mcp.json | url | type: "http" | headers |
| VS Code | .vscode/mcp.json(servers) | url | type: "http" | headers |
| Gemini CLI | ~/.gemini/settings.json | httpUrl | 自动推断 | headers |
| Cline | cline_mcp_settings.json | url | type: "streamableHttp" | headers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl | 自动推断 | 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 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。