关于 RocketCyber
RocketCyber 是一个 MCP 服务,提供对 RocketCyber Managed SOC 数据的只读访问,适合需要查看事件、受监控终端及安全遥测的客户端。支持 stdio 和 HTTP Streamable 传输。
主要功能
- 0110 个只读 RocketCyber 数据工具
- 02账户、事件和 Agent 资源
- 03查询事件、设备及状态
- 04支持 stdio 和 HTTP Streamable
- 05连接验证工具
适用场景
- 01查看安全事件和告警记录
- 02检查受监控 Agent 与防火墙设备
- 03查看 Defender 和 Office 365 状态
MCP 相关
通过 10 个只读 MCP 工具和 3 个资源提供 RocketCyber API 数据,支持 stdio 与 HTTP Streamable 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e ROCKETCYBER_API_KEY -e ROCKETCYBER_CUSTOMER_ID -e ROCKETCYBER_API_URL -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/rocketcyber-mcp:v1.6.3ROCKETCYBER_API_KEY密钥RocketCyber API key for authenticating to the Managed SOC APIROCKETCYBER_CUSTOMER_IDRocketCyber customer (tenant) identifierROCKETCYBER_API_URLRocketCyber API base URL — override only if using a non-default regionMCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.LOG_LEVELLog verbosity: debug, info, warn, error本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/wyre-ai/rocketcyber-mcp:v1.6.3stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
rocketcyber-mcp
用于 RocketCyber 托管 SOC 平台的 MCP(模型上下文协议)服务。通过 10 个工具和 3 个资源,提供对 RocketCyber 安全数据的只读访问。
功能
- 10 个只读工具,涵盖所有 RocketCyber API 资源;每个工具均标注
readOnlyHint: true,因此 MCP 客户端(例如 Microsoft 365 Copilot)可跳过每次调用的确认提示 - 3 个 MCP 资源,便于快速访问数据
- 双传输方式:stdio(默认)和 HTTP Streamable
- 首次调用工具时延迟初始化 SDK
- 使用 Winston 日志记录器,所有输出均路由到 stderr
- 用于验证凭据的连接测试工具
一键部署
重要
**开始前请注意:**此服务依赖
@wyre-ai/node-rocketcyber, 该包托管在 GitHub Packages npm 注册表中。GitHub Packages 不提供 匿名访问权限——即使该包是公开的,每次npm install仍需要令牌。云构建器会为你运行npm install,因此你必须向其提供令牌,否则 构建将失败并显示npm error 401 Unauthorized ... npm.pkg.github.com。
- 创建具有
read:packages范围的 GitHub 个人访问令牌(classic token)。 任何 GitHub 账户都可以——读取公开包不需要是WYRE-AI组织成员。- 部署流程提示时,将令牌添加为构建变量:
- Cloudflare Workers → 将名为
NODE_AUTH_TOKEN的构建变量设为你的 PAT (Workers → Settings → Build → Variables and Secrets)。- DigitalOcean App Platform → 将名为
GITHUB_TOKEN的加密环境变量设为你的 PAT, 范围选择 Build Time(Dockerfile 会读取该变量以安装依赖)。
安装
本项目依赖 @wyre-ai/node-rocketcyber,该包发布在
GitHub Packages npm 注册表中,即使是公开包也需要令牌。
完成一次身份验证,然后安装:
# Authenticate npm to GitHub Packages (token needs the read:packages scope)
export NODE_AUTH_TOKEN=$(gh auth token) # or a PAT with read:packages
npm install
npm run build
仓库中的 .npmrc 已将 @wyre-ai 作用域指向 GitHub Packages,
并从 NODE_AUTH_TOKEN 读取令牌,因此无需进一步配置。
配置
复制 .env.example,并设置以下变量。
| Environment Variable | Required | Default | Description |
|---|---|---|---|
ROCKETCYBER_API_KEY | 对 stdio 和 AUTH_MODE=env 必需 | - | RocketCyber API 密钥 |
ROCKETCYBER_REGION | 否 | us | API 区域:us 或 eu |
MCP_TRANSPORT | 否 | stdio | 传输类型:stdio 或 http |
AUTH_MODE | 否 | env(镜像和 Compose 设置为 gateway) | gateway 要求每个 /mcp 请求都携带 X-RocketCyber-API-Key,且绝不会回退到 ROCKETCYBER_*。env 仅在 S2S 身份验证成功后使用这些变量。 |
CONDUIT_S2S_SECRET | HTTP 必需 | - | 服务间密钥。如果此项为空或为已知占位值(changeme、secret、replace-me、your-s2s-secret 以及其他示例值),HTTP 服务会记录错误并以非零状态码退出。使用 openssl rand -hex 32 生成密钥。未设置此项时,Compose 不会启动。此值绝不会被记录。 |
MCP_ALLOW_INSECURE_DEV | 否 | - | 仅在本地开发时精确设置为 1,以便在没有 CONDUIT_S2S_SECRET 的情况下启动 HTTP。进程会记录警告、不强制验证 X-Gateway-S2S,且只绑定到 127.0.0.1。非环回地址的 MCP_HTTP_HOST 会被覆盖。使用已知占位密钥时仍会拒绝启动。 |
MCP_HTTP_PORT | 否 | 8080 | HTTP 端口(使用 http 传输时) |
MCP_HTTP_HOST | 否;设置有效密钥时为 0.0.0.0 | 0.0.0.0 | 设置 CONDUIT_S2S_SECRET 时使用的绑定地址。未设置时保持为 0.0.0.0。未设置密钥时,开发绕过模式会忽略此项并绑定到 127.0.0.1。容器镜像会将其设置为 0.0.0.0。 |
LOG_LEVEL | 否 | info | 日志级别:error、warn、info、debug |
LOG_FORMAT | 否 | simple | 日志格式:json 或 simple |
/health 无需身份验证,且不会读取凭据。stdio 传输不使用 CONDUIT_S2S_SECRET。
HTTP 身份验证
使用 MCP_TRANSPORT=http 且设置了有效的 CONDUIT_S2S_SECRET 时,每个 /mcp 请求都必须包含 X-Gateway-S2S。验证逻辑位于 src/mcp/s2s-verify.ts 中的 verifyS2sHeader:标头值的格式为 t=<unix seconds>,v1=<hex>,其中十六进制字符串是以 CONDUIT_S2S_SECRET 为密钥、对字面字符串 t=<unix seconds> 计算的 HMAC-SHA256(64 个小写十六进制字符)。时间戳与服务器时钟的偏差必须在 300 秒以内。若标头缺失或无效,将返回 HTTP 401,且此时尚未读取供应商凭据。
TS=$(date +%s)
SIG=$(printf 't=%s' "$TS" | openssl dgst -sha256 -hmac "$CONDUIT_S2S_SECRET" -hex | awk '{print $NF}')
curl -sS http://127.0.0.1:8080/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H "X-Gateway-S2S: t=${TS},v1=${SIG}" \
-H "X-RocketCyber-API-Key: $ROCKETCYBER_API_KEY" \
-H "X-RocketCyber-Region: us" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
在 AUTH_MODE=gateway 模式下,/mcp 还要求提供 X-RocketCyber-API-Key(X-RocketCyber-Region 可选)。该标头是此请求唯一的凭据来源。若 API 密钥缺失或为空白,将返回 HTTP 401,且不会回退到 ROCKETCYBER_API_KEY。AUTH_MODE=env 仍要求提供已签名的 X-Gateway-S2S 标头,然后使用环境变量中的 ROCKETCYBER_API_KEY。
用法
Claude Desktop(stdio)
将以下内容添加到 Claude Desktop 配置文件(claude_desktop_config.json)中:
{
"mcpServers": {
"rocketcyber": {
"command": "node",
"args": ["/path/to/rocketcyber-mcp/dist/entry.js"],
"env": {
"ROCKETCYBER_API_KEY": "your-api-key"
}
}
}
}
HTTP 传输
在 CONDUIT_S2S_SECRET 为有效密钥(而非已知占位值)之前,HTTP 不会启动。请将端口发布到环回地址。
# Single-tenant HTTP. Uses ROCKETCYBER_API_KEY after X-Gateway-S2S verifies.
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
ROCKETCYBER_API_KEY=your-api-key \
MCP_TRANSPORT=http \
npm start
# Local HTTP only, without a service-to-service secret. Always binds 127.0.0.1.
MCP_TRANSPORT=http MCP_ALLOW_INSECURE_DEV=1 npm start
Docker
镜像在容器内监听 0.0.0.0(MCP_HTTP_HOST),并默认使用 AUTH_MODE=gateway。请将端口发布到环回地址,并传入有效的 S2S 密钥。在 gateway 模式下,RocketCyber 凭据通过每个请求的标头传入,不会从环境中读取。
docker build -t rocketcyber-mcp --build-arg GITHUB_TOKEN="$GITHUB_TOKEN" .
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-p 127.0.0.1:8080:8080 \
rocketcyber-mcp
未设置 CONDUIT_S2S_SECRET 时,Compose 不会启动。gateway 服务会设置 AUTH_MODE=gateway,不会注入 ROCKETCYBER_API_KEY,并将端口发布为 127.0.0.1:8080:8080:
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" GITHUB_TOKEN="$GITHUB_TOKEN" docker compose up
单租户 HTTP(AUTH_MODE=env)仍要求提供 S2S 密钥,然后使用 ROCKETCYBER_API_KEY。它与上文的 gateway Compose 服务相互独立。
docker run \
-e CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
-e AUTH_MODE=env \
-e ROCKETCYBER_API_KEY=your-api-key \
-e ROCKETCYBER_REGION=us \
-p 127.0.0.1:8080:8080 \
rocketcyber-mcp
工具
以下每个工具都只读取数据(没有工具会向 RocketCyber API 写入数据),因此在 tools/list 响应中均标注为 annotations: { readOnlyHint: true }。遵循 readOnlyHint 的 MCP 客户端(包括 Microsoft 365 Copilot / Copilot Studio)会利用此标注,跳过每次调用工具前原本都会显示的确认提示。
| 工具 | 描述 | readOnlyHint |
|---|---|---|
rocketcyber_test_connection | 测试与 RocketCyber API 的连接 | true |
rocketcyber_get_account | 获取账户信息 | true |
rocketcyber_list_agents | 列出受监控的 Agent/终端 | true |
rocketcyber_list_incidents | 列出安全事件 | true |
rocketcyber_list_events | 列出安全活动 | true |
rocketcyber_get_event_summary | 获取活动摘要/统计信息 | true |
rocketcyber_list_firewalls | 列出防火墙设备 | true |
rocketcyber_list_apps | 列出受管理的应用 | true |
rocketcyber_get_defender | 获取 Windows Defender 状态 | true |
rocketcyber_get_office | 获取 Office 365 状态 | true |
资源
| URI | 描述 |
|---|---|
rocketcyber://account | 账户信息 |
rocketcyber://incidents | 安全事件 |
rocketcyber://agents | 受监控的 Agent/终端 |
开发
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build
npm run build
# Start production server
npm start
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。