Rootly

io.github.WYRE-AI由 GitHub 帳號 WYRE-AI 發布v1.2.9更新於 Oct 24, 2026

MCP server for Rootly — incidents, alerts, escalations, and post-incident reports.

發布方自己的服務:Rootly

已驗證STDIO僅桌面效率與工作流安全與監控

概覽

AI 產生的概覽

面向 Rootly 事件管理的本機 MCP 伺服器,讓助理列出、建立、更新與解決事件和警示,並讀取值班表與組織資訊。

可以做什麼
透過導覽工具在事件、警示、值班表、組織等領域間切換,查看連線狀態或返回選單。列出、查看、建立、更新與解決事件,可依狀態與嚴重程度篩選。列出、建立、更新、確認與解決警示。列出並查看值班表。列出團隊與嚴重程度,取得目前通過驗證的使用者。在支援 MCP Apps 的宿主中,事件查詢會顯示為唯讀卡片,呈現狀態、嚴重程度、服務、環境、團隊與生命週期時間軸。
適用情境
適合讓助理參與 Rootly 事件應變:分流或彙整事件、確認或解決警示、建立或更新事件,以及查詢誰在值班、有哪些團隊與嚴重程度。
執行需求
以本機程序執行(可用 Node.js 從原始碼建置,或使用已發布的容器映像走 stdio)。stdio 與 env 驗證模式需要 ROOTLY_API_TOKEN 中的 Rootly API 權杖,可於 Rootly 個人資料取得。HTTP 模式另需 CONDUIT_S2S_SECRET;gateway 模式要求每個請求在 X-Rootly-Api-Token 標頭中攜帶 Rootly 權杖。需要連線至 Rootly API 的網路。
安裝前請注意
Rootly API 權杖是 bearer 憑證,可存取事件資料,請勿寫入日誌或提交至儲存庫。多個工具會寫入:建立、更新與解決事件和警示,以及確認警示。Rootly 限制每 60 秒最多 3 次寫入操作,批次修改會失敗。HTTP 模式需要 CONDUIT_S2S_SECRET 且拒絕預留值;不安全的開發繞過會關閉請求驗證,應僅限本機使用。事件資料會傳送至 Rootly API。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Rootly,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

rootly-mcp

MCP server for the Rootly incident management platform.

Built by WYRE Technology — part of the wyre-projects MCP server collection.

Uses decision-tree navigation: start with rootly_navigate to select a domain, then use that domain's tools. Call rootly_back to return.

Domains & Tools

Navigation (always available)

ToolDescription
rootly_navigateNavigate to a domain: incidents, alerts, schedules, org
rootly_statusCheck connection status and available domains
rootly_backReturn to the navigation menu

Domain: incidents

ToolDescription
rootly_incidents_listList incidents with optional status/severity filters
rootly_incidents_getGet a single incident by ID
rootly_incidents_createCreate a new incident
rootly_incidents_updateUpdate title, summary, status, or severity
rootly_incidents_resolveResolve an incident

Domain: alerts

ToolDescription
rootly_alerts_listList alerts with optional status filter
rootly_alerts_acknowledgeAcknowledge an alert
rootly_alerts_resolveResolve an alert
rootly_alerts_createCreate a new alert
rootly_alerts_updateUpdate alert status or summary

Domain: schedules

ToolDescription
rootly_schedules_listList on-call schedules
rootly_schedules_getGet a single on-call schedule

Domain: org

ToolDescription
rootly_org_list_teamsList teams
rootly_org_list_severitiesList severity levels
rootly_org_current_userGet current authenticated user

Interactive Incident Card (MCP Apps)

rootly_incidents_get renders as an interactive read-only card in MCP Apps hosts (Claude Desktop/web) showing status, severity, services, environments, teams, and a lifecycle timeline; plain-JSON behavior is unchanged in other hosts. The card is neutral by default and brandable via window.__BRAND__ injection or MCP_BRAND_* env vars (MCP_BRAND_NAME, MCP_BRAND_LOGO_URL, MCP_BRAND_PRIMARY_COLOR, MCP_BRAND_ACCENT_COLOR, MCP_BRAND_BG, MCP_BRAND_TEXT) — no rebuild needed. Rebuild the card bundle itself with npm run build:ui (only needed when ui/ changes; the embedded output is committed).

Setup

1. Install & build

bash
cd rootly-mcpnpm installnpm run build

2. Set your API token

bash
export ROOTLY_API_TOKEN=rootly_xxxxxxxxxxxxxxxx

Get your token from Rootly → Profile → API Tokens.

3. Run (stdio — for mcporter/Claude Desktop)

bash
ROOTLY_API_TOKEN=your_token node dist/index.js

4. Run (HTTP streaming transport)

CONDUIT_S2S_SECRET is required. If it is empty or a known placeholder (changeme, change-me, secret, example, placeholder, replace-me, your-secret, your-s2s-secret, s2s-secret, replace-with-a-real-secret), the HTTP server logs an error and exits non-zero. It never prints the secret.

bash
# 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 stays unauthenticated, does not require X-Gateway-S2S, and does not return the API token. The stdio transport does not use CONDUIT_S2S_SECRET.

5. Run with Docker

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode the Rootly token arrives on each request as X-Rootly-Api-Token; it is not read from the environment.

bash
docker build -t rootly-mcp .docker run \  -e CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" \  -p 127.0.0.1:8080:8080 \  rootly-mcp

Do not pass a known placeholder such as your-s2s-secret or changeme. Startup treats those as unset and exits. Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, does not pass ROOTLY_API_TOKEN, and publishes 127.0.0.1:8080:8080. A project .env is interpolation only — do not add env_file to the gateway service.

bash
CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" docker compose up

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses ROOTLY_API_TOKEN:

bash
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

Configuration

Copy .env.example and set the variables below.

VariableRequiredDescription
ROOTLY_API_TOKENFor stdio and AUTH_MODE=envRootly API token (Bearer). Gateway mode does not read this.
MCP_TRANSPORTNostdio (default) or http
AUTH_MODENogateway (Docker image and Compose default) or env. Gateway mode requires X-Rootly-Api-Token on each /mcp request and never falls back to ROOTLY_API_TOKEN. env uses that variable after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder. Compose will not start without it. Never commit a real value.
MCP_ALLOW_INSECURE_DEVNoSet to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and binds 127.0.0.1 only. A non-loopback MCP_HTTP_HOST is overridden and logged. A placeholder secret still refuses to start.
MCP_HTTP_HOSTNoBind address when a secret is configured. Unset means 0.0.0.0. The container image sets 0.0.0.0. Ignored in favor of 127.0.0.1 when the insecure-dev bypass is on.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.
LOG_LEVELNodebug, info, warn, or error. Defaults to info.

HTTP authentication

With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The value is t=<unix seconds>,v1=<hex hmac-sha256>. The hex digest is HMAC-SHA256 over the exact ASCII string t=<unix seconds> (the same prefix that appears in the header), keyed with CONDUIT_S2S_SECRET, encoded as 64 lowercase hex characters. The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns 401. The secret is never written to logs or the response.

X-Gateway-S2S: t=1710000000,v1=<64 lowercase hex chars>

In AUTH_MODE=gateway, /mcp also requires X-Rootly-Api-Token. That header is the only Rootly credential for the request. A request without it returns 401 and does not fall back to ROOTLY_API_TOKEN.

bash
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 Configuration

json
{  "rootly": {    "command": "node",    "args": ["/path/to/rootly-mcp/dist/index.js"],    "env": {      "ROOTLY_API_TOKEN": "rootly_xxxxxxxxxxxxxxxx"    }  }}

Then: mcporter call rootly.rootly_navigate --domain alerts

Claude Desktop (MCPB)

Download the .mcpb bundle from Releases and install it in Claude Desktop.

Or manually add to claude_desktop_config.json:

json
{  "mcpServers": {    "rootly": {      "command": "node",      "args": ["/path/to/rootly-mcp/dist/index.js"],      "env": { "ROOTLY_API_TOKEN": "your_token" }    }  }}

Rate Limiting

Rootly enforces 3 write operations per 60 seconds. The server tracks this in-process and returns a descriptive error with retry-after time if exceeded.

API Reference

Development

bash
npm run dev        # watch modenpm run lint       # TypeScript type-checknpm run test       # run tests

License

Apache-2.0 © WYRE Technology

來源:README.md,提交 514e44d

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

4
  1. v1.2.9最新Oct 14, 2026
  2. v1.2.8Oct 13, 2026
  3. v1.2.7Oct 9, 2026
  4. v1.2.6Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Rootly 整合