Skip to main content
Glama
NikGariel

incidentrelay-mcp

by NikGariel

incidentrelay-mcp

An MCP server for IncidentRelay — self-hosted on-call scheduling, alert routing, and incident management.

It exposes IncidentRelay's entire REST API (279 operations) to MCP clients (Claude Desktop, Claude Code, Cursor, …) through two layers:

  • 3 gateway tools that make every operation reachable, driven by the server's own OpenAPI document.

  • 25 curated tools that wrap the common on-call workflows (acknowledge/ resolve alerts, incidents, on-call schedule, silences, maintenance windows) with typed, ergonomic inputs.

The server never modifies IncidentRelay. It is a pure REST client that authenticates with a bearer token you provide.

Run

No install needed — run it with npx (Node.js ≥ 20):

# from GitHub (works today)
IR_BASE_URL=https://incidentrelay.example.com IR_TOKEN=<token> \
  npx -y github:NikGariel/IncidentRelay-mcp

# from npm (after the package is published)
IR_BASE_URL=https://incidentrelay.example.com IR_TOKEN=<token> \
  npx -y incidentrelay-mcp

npx builds the package automatically on first run (a prepare script compiles TypeScript), so no separate build step is required.

From source

npm install   # runs the build via the prepare script
npm start

Configure

The server needs the IncidentRelay base URL and a bearer token (a JWT access token or a personal API token created in IncidentRelay under Profile → API tokens, with the scopes you want to allow).

Setting

Env

Flag

Required

Default

Base URL

IR_BASE_URL

--base-url

yes

Bearer token

IR_TOKEN

--token

yes¹

Transport

IR_TRANSPORT

--transport

no

stdio

HTTP port

IR_PORT

--port

no

3000

HTTP host

IR_HOST

--host

no

127.0.0.1

Read-only

IR_READONLY

--readonly

no

false

Request timeout (ms)

IR_TIMEOUT_MS

no

30000

OpenAPI URL override

IR_OPENAPI_URL

no

{base}/api/openapi.json

TLS verification

IR_VERIFY_TLS

no

true

¹ The token is optional only if you never call write operations.

At startup the server fetches {IR_BASE_URL}/api/openapi.json (a public endpoint) to build its operation catalog, so it always matches the deployed IncidentRelay version. If that fetch fails, it falls back to a bundled snapshot and logs a warning.

Use with Claude Desktop / Claude Code (stdio)

Add to your MCP client config (e.g. claude_desktop_config.json).

Recommended — run the prebuilt binary directly (starts in <0.5s, so it never hits the client's startup timeout):

{
  "mcpServers": {
    "incidentrelay": {
      "command": "node",
      "args": ["/absolute/path/to/incidentrelay-mcp/dist/index.js"],
      "env": {
        "IR_BASE_URL": "https://incidentrelay.example.com",
        "IR_TOKEN": "<personal-api-token>"
      }
    }
  }
}

Build it once with npm install && npm run build (or npm install -g .).

Alternative — npx. Once published to npm:

{ "command": "npx", "args": ["-y", "incidentrelay-mcp"], "env": { "…": "…" } }

⚠️ Avoid npx -y github:… in a client config: its first run clones the repo, installs dependencies, and compiles TypeScript, which can exceed an MCP client's ~30s connection timeout on a cold cache. Use the prebuilt binary (or the npm form after publishing) for a client that spawns the server on demand.

The server itself starts instantly regardless of network: it loads a bundled OpenAPI snapshot synchronously, then refreshes the catalog from the live server in the background.

Use over HTTP (Streamable HTTP)

IR_BASE_URL=https://incidentrelay.example.com IR_TOKEN=... \
  npx -y github:NikGariel/IncidentRelay-mcp --transport http --port 3000
# serves MCP at http://127.0.0.1:3000/mcp

The HTTP transport is stateless (one server per request), binds to 127.0.0.1 by default, and has DNS-rebinding protection enabled.

Tools

Gateway (cover all 279 operations)

Tool

Purpose

ir_list_operations

Search/list the API catalog by query, tag, or method.

ir_describe_operation

Show one operation's params and request-body schema.

ir_call

Execute any operation by operationId (or method+path).

Typical flow: ir_list_operationsir_describe_operationir_call.

Curated (common on-call workflows)

Alerts: ir_list_alerts, ir_get_alert, ir_ack_alert, ir_resolve_alert, ir_comment_alert · Incidents: ir_list_incidents, ir_get_incident, ir_create_incident, ir_add_incident_responder, ir_set_incident_priority · On-call: ir_who_is_on_call, ir_oncall_health, ir_list_rotations, ir_create_rotation_override · Silences: ir_list_silences, ir_create_silence, ir_remove_silence · Maintenance: ir_list_maintenance_windows, ir_create_maintenance_window · Context: ir_list_teams, ir_list_routes, ir_list_channels, ir_whoami · Heartbeats: ir_list_heartbeats, ir_send_heartbeat.

Safety

  • Confirm-guard. Destructive operations (DELETE, and paths with disable/remove/delete/reset/regenerate-token/intake-token/ cancel/merge/revoke) do not run unless you pass confirm: true. Without it, the tool returns a dry-run preview.

  • Read-only mode. Set IR_READONLY=true to refuse every non-GET operation at the tool layer.

  • Token redaction. Bearer tokens are stripped from logs and error output.

Security

IR_VERIFY_TLS=false disables TLS certificate verification for outbound calls to IncidentRelay. This exposes traffic to man-in-the-middle attacks and should only be used on a trusted network. For self-hosted self-signed certificates, prefer adding the server's CA to your trust store (or use a properly-issued certificate) instead of disabling verification. When disabled, the server prints a warning at startup.

Development

npm test          # run the vitest suite
npm run dev       # run from source with tsx
npm run build     # typecheck + emit dist/ + copy the OpenAPI snapshot

Regenerating the bundled OpenAPI snapshot: see scripts/generate-snapshot.md.

Design & plan

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Hosted MCP server for business-day math, deadline planning, meeting overlap, and SLA calculations.

  • MCP Server for agents to onboard, pay, and provision services autonomously with InFlow

  • MCP server for InsForge BaaS — database, storage, edge functions, and deployments

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NikGariel/IncidentRelay-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server