关于 Rootly
Rootly 的 MCP 服务,将事故管理平台的事故、告警、值班排班和组织信息提供给运维团队使用。它采用决策树导航,并支持在 MCP Apps 主机中呈现只读事故卡片。
主要功能
- 01按领域导航工具
- 02列出、创建和更新事故
- 03管理告警状态
- 04查询值班排班
- 05查看团队与严重级别
- 06渲染只读事故卡片
适用场景
- 01筛选并跟进不同状态或严重级别的事故
- 02确认并解决告警
- 03查看值班安排
- 04在 MCP Apps 中查看事故生命周期
MCP 相关
向 MCP 客户端提供 Rootly 的事故、告警、排班和组织操作工具。通过先选择领域再调用领域工具的决策树组织访问,并可在支持的主机中显示交互式只读事故卡片。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e ROOTLY_API_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-technology/rootly-mcp:v1.2.4ROOTLY_API_TOKEN密钥Rootly API token (Bearer credential)MCP_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-technology/rootly-mcp:v1.2.4stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
rootly-mcp
适用于 Rootly 事件管理平台的 MCP 服务。
由 WYRE Technology 构建,是 wyre-projects MCP 服务集合的一部分。
采用决策树导航:先调用 rootly_navigate 选择一个领域,再使用该领域的工具。调用 rootly_back 返回。
领域与工具
导航(始终可用)
| 工具 | 描述 |
|---|---|
rootly_navigate | 导航到某个领域:incidents、alerts、schedules、org |
rootly_status | 检查连接状态和可用领域 |
rootly_back | 返回导航菜单 |
领域:incidents
| 工具 | 描述 |
|---|---|
rootly_incidents_list | 列出事件,可选按状态/严重程度筛选 |
rootly_incidents_get | 按 ID 获取单个事件 |
rootly_incidents_create | 创建新事件 |
rootly_incidents_update | 更新标题、摘要、状态或严重程度 |
rootly_incidents_resolve | 解决事件 |
领域:alerts
| 工具 | 描述 |
|---|---|
rootly_alerts_list | 列出告警,可选按状态筛选 |
rootly_alerts_acknowledge | 确认告警 |
rootly_alerts_resolve | 解决告警 |
rootly_alerts_create | 创建新告警 |
rootly_alerts_update | 更新告警状态或摘要 |
领域:schedules
| 工具 | 描述 |
|---|---|
rootly_schedules_list | 列出值班计划 |
rootly_schedules_get | 获取单个值班计划 |
领域:org
| 工具 | 描述 |
|---|---|
rootly_org_list_teams | 列出团队 |
rootly_org_list_severities | 列出严重程度级别 |
rootly_org_current_user | 获取当前已认证用户 |
交互式事件卡片(MCP Apps)
在 MCP Apps 宿主(Claude Desktop/web)中,rootly_incidents_get 会呈现为交互式只读卡片,显示状态、严重程度、服务、环境、团队和生命周期时间线;在其他宿主中的纯 JSON 行为保持不变。卡片默认采用中性样式,可通过注入 window.__BRAND__ 或使用 MCP_BRAND_* 环境变量(MCP_BRAND_NAME、MCP_BRAND_LOGO_URL、MCP_BRAND_PRIMARY_COLOR、MCP_BRAND_ACCENT_COLOR、MCP_BRAND_BG、MCP_BRAND_TEXT)进行品牌定制,无需重新构建。使用 npm run build:ui 重新构建卡片包本身(仅在 ui/ 发生更改时需要;嵌入的输出已提交)。
设置
1. 安装并构建
cd rootly-mcp
npm install
npm run build
2. 设置 API 令牌
export ROOTLY_API_TOKEN=rootly_xxxxxxxxxxxxxxxx
在 Rootly → Profile → API Tokens 中获取令牌。
3. 运行(stdio — 适用于 mcporter/Claude Desktop)
ROOTLY_API_TOKEN=your_token node dist/index.js
4. 运行(HTTP 流式传输)
必须设置 CONDUIT_S2S_SECRET。如果该变量为空或为已知占位值(changeme、change-me、secret、example、placeholder、replace-me、your-secret、your-s2s-secret、s2s-secret、replace-with-a-real-secret),HTTP 服务会记录错误并以非零状态退出。它绝不会打印该密钥。
# Refuses to start until CONDUIT_S2S_SECRET is set. With a secret and no
# MCP_HTTP_HOST, the process binds 0.0.0.0 (same as container deploys).
CONDUIT_S2S_SECRET="$CONDUIT_S2S_SECRET" \
ROOTLY_API_TOKEN=your_token \
MCP_HTTP_HOST=127.0.0.1 \
npm run start:http
# Local HTTP only, without a service-to-service secret. Always binds 127.0.0.1.
# A non-loopback MCP_HTTP_HOST is overridden and that override is logged.
MCP_ALLOW_INSECURE_DEV=1 npm run start:http
/health 无需身份验证,不要求提供 X-Gateway-S2S,也不会返回 API 令牌。stdio 传输不使用 CONDUIT_S2S_SECRET。
5. 使用 Docker 运行
镜像会在容器内监听 0.0.0.0(MCP_HTTP_HOST),并默认使用 AUTH_MODE=gateway。将端口发布到回环地址,并传入 S2S 密钥。在网关模式下,Rootly 令牌会随每个请求通过 X-Rootly-Api-Token 传入;不会从环境中读取。
docker build -t rootly-mcp .
docker run \
-e CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" \
-p 127.0.0.1:8080:8080 \
rootly-mcp
请勿传入已知占位值,例如 your-s2s-secret 或 changeme。启动时会将这些值视为未设置并退出。若未设置 CONDUIT_S2S_SECRET,Compose 会拒绝启动;它会设置 AUTH_MODE=gateway,不会传入 ROOTLY_API_TOKEN,并发布 127.0.0.1:8080:8080。项目 .env 文件仅用于插值——请勿向网关服务添加 env_file。
CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" docker compose up
单租户 HTTP(AUTH_MODE=env)仍需要 S2S 密钥,之后会使用 ROOTLY_API_TOKEN:
docker run \
-e CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" \
-e AUTH_MODE=env \
-e ROOTLY_API_TOKEN=your_token \
-e MCP_HTTP_HOST=0.0.0.0 \
-p 127.0.0.1:8080:8080 \
rootly-mcp
配置
复制 .env.example,并设置以下变量。
| 变量 | 必需 | 描述 |
|---|---|---|
ROOTLY_API_TOKEN | stdio 和 AUTH_MODE=env 时必需 | Rootly API 令牌(Bearer)。网关模式不会读取此变量。 |
MCP_TRANSPORT | 否 | stdio(默认)或 http |
AUTH_MODE | 否 | gateway(Docker 镜像和 Compose 的默认值)或 env。网关模式要求每个 /mcp 请求都携带 X-Rootly-Api-Token,且绝不会回退到 ROOTLY_API_TOKEN。env 模式会在 S2S 身份验证成功后使用该变量。 |
CONDUIT_S2S_SECRET | HTTP 模式下必需 | 服务间密钥。如果该变量为空或为已知占位值,HTTP 服务会记录错误并以非零状态码退出。未设置该变量时,Compose 不会启动。切勿提交真实值。 |
MCP_ALLOW_INSECURE_DEV | 否 | 仅在本地开发时将其精确设为 1,以便在未设置 CONDUIT_S2S_SECRET 时启动 HTTP。进程会记录警告,不会强制要求 X-Gateway-S2S,且仅绑定到 127.0.0.1。如果 MCP_HTTP_HOST 是非回环地址,则会覆盖该值并记录日志。占位密钥仍会导致启动失败。 |
MCP_HTTP_HOST | 否 | 已配置密钥时的绑定地址。未设置时为 0.0.0.0。容器镜像会将其设为 0.0.0.0。启用不安全开发绕过选项时,将改用 127.0.0.1。 |
MCP_HTTP_PORT | 否 | HTTP 端口。默认为 8080。 |
LOG_LEVEL | 否 | debug、info、warn 或 error。默认为 info。 |
HTTP 身份验证
设置 MCP_TRANSPORT=http 和 CONDUIT_S2S_SECRET 后,每个 /mcp 请求都必须包含 X-Gateway-S2S。其值格式为 t=<unix seconds>,v1=<hex hmac-sha256>。十六进制摘要是对精确的 ASCII 字符串 t=<unix seconds>(与标头中出现的相同前缀)计算的 HMAC-SHA256,使用 CONDUIT_S2S_SECRET 作为密钥,并编码为 64 个小写十六进制字符。时间戳与服务器时钟的偏差不得超过 300 秒。缺少标头或标头无效时会返回 401。密钥绝不会写入日志或响应。
X-Gateway-S2S: t=1710000000,v1=<64 lowercase hex chars>
在 AUTH_MODE=gateway 模式下,/mcp 还要求提供 X-Rootly-Api-Token。该标头是此请求唯一的 Rootly 凭据。未提供该标头的请求会返回 401,且不会回退到 ROOTLY_API_TOKEN。
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: $X_GATEWAY_S2S" \
-H "x-rootly-api-token: $ROOTLY_API_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"rootly_status","arguments":{}}}'
mcporter 配置
{
"rootly": {
"command": "node",
"args": ["/path/to/rootly-mcp/dist/index.js"],
"env": {
"ROOTLY_API_TOKEN": "rootly_xxxxxxxxxxxxxxxx"
}
}
}
然后:mcporter call rootly.rootly_navigate --domain alerts
Claude Desktop(MCPB)
从 Releases 下载 .mcpb 包,并将其安装到 Claude Desktop 中。
或者手动添加到 claude_desktop_config.json:
{
"mcpServers": {
"rootly": {
"command": "node",
"args": ["/path/to/rootly-mcp/dist/index.js"],
"env": { "ROOTLY_API_TOKEN": "your_token" }
}
}
}
速率限制
Rootly 强制限制为每 60 秒 3 次写操作。服务会在进程内跟踪操作次数,超出限制时会返回包含重试等待时间的说明性错误。
API 参考
- Rootly API 文档:https://docs.rootly.com/api-reference
- API 基础 URL:
https://api.rootly.com/v1 - 身份验证:
Authorization: Bearer <token> - 写入内容类型:
application/vnd.api+json
开发
npm run dev # watch mode
npm run lint # TypeScript type-check
npm run test # run tests
许可证
Apache-2.0 © WYRE Technology
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。