mcpField
R
Rootly

Rootly

本地服务
github.com云与基础设施02 周前更新

关于 Rootly

Rootly 的 MCP 服务,将事故管理平台的事故、告警、值班排班和组织信息提供给运维团队使用。它采用决策树导航,并支持在 MCP Apps 主机中呈现只读事故卡片。

主要功能

  1. 01按领域导航工具
  2. 02列出、创建和更新事故
  3. 03管理告警状态
  4. 04查询值班排班
  5. 05查看团队与严重级别
  6. 06渲染只读事故卡片

适用场景

  1. 01筛选并跟进不同状态或严重级别的事故
  2. 02确认并解决告警
  3. 03查看值班安排
  4. 04在 MCP Apps 中查看事故生命周期

MCP 相关

向 MCP 客户端提供 Rootly 的事故、告警、排班和组织操作工具。通过先选择领域再调用领域工具的决策树组织访问,并可在支持的主机中显示交互式只读事故卡片。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"wyre-technology-rootly": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ROOTLY_API_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-technology/rootly-mcp:v1.2.4"
],
"env": {
"ROOTLY_API_TOKEN": "<ROOTLY_API_TOKEN>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令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.4
需要配置的环境变量
ROOTLY_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/wyre-technology/rootly-mcp:v1.2.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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_TOKENstdio 和 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_SECRETHTTP 模式下必需服务间密钥。如果该变量为空或为已知占位值,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

评论

支持 Markdown

第一次接触 MCP?

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

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