Skip to main content
Glama
NikGariel

incidentrelay-mcp

by NikGariel

incidentrelay-mcp

Сервер MCP для IncidentRelay — самостоятельно развертываемое планирование дежурств, маршрутизация оповещений и управление инцидентами.

Он предоставляет MCP-клиентам (Claude Desktop, Claude Code, Cursor, …) весь REST API IncidentRelay (279 операций) через два уровня:

  • 3 инструмента-шлюза, которые делают доступной каждую операцию, на основе собственного OpenAPI-документа сервера.

  • 25 подобранных инструментов, которые оборачивают типовые сценарии дежурств (подтверждение/ разрешение оповещений, инциденты, расписание дежурств, тишины, окна обслуживания) с типизированными и эргономичными входными параметрами.

Сервер никогда не изменяет IncidentRelay. Это чистый REST-клиент, который аутентифицируется с помощью предоставляемого вами bearer-токена.

Запуск

Установка не требуется — запустите через 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 автоматически собирает пакет при первом запуске (скрипт prepare компилирует TypeScript), поэтому отдельный шаг сборки не требуется.

Из исходного кода

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

Related MCP server: level-mcp

Конфигурация

Серверу требуется базовый URL IncidentRelay и bearer-токен (JWT-токен доступа или персональный API-токен, созданный в IncidentRelay в разделе Профиль → API-токены, с областями доступа, которые вы хотите разрешить).

Настройка

Переменная окружения

Флаг

Обязателен

По умолчанию

Базовый URL

IR_BASE_URL

--base-url

да

—

Bearer-токен

IR_TOKEN

--token

да¹

—

Транспорт

IR_TRANSPORT

--transport

нет

stdio

HTTP-порт

IR_PORT

--port

нет

3000

HTTP-хост

IR_HOST

--host

нет

127.0.0.1

Только чтение

IR_READONLY

--readonly

нет

false

Таймаут запроса (мс)

IR_TIMEOUT_MS

—

нет

30000

Переопределение URL OpenAPI

IR_OPENAPI_URL

—

нет

{base}/api/openapi.json

Проверка TLS

IR_VERIFY_TLS

—

нет

true

¹ Токен необязателен только в том случае, если вы никогда не вызываете операции записи.

При запуске сервер получает {IR_BASE_URL}/api/openapi.json (публичная конечная точка) для построения каталога операций, поэтому он всегда соответствует развернутой версии IncidentRelay. Если получение не удается, он использует встроенный снимок и записывает предупреждение в журнал.

Использование с Claude Desktop / Claude Code (stdio)

Добавьте в конфигурацию вашего MCP-клиента (например, claude_desktop_config.json).

Рекомендуется — запускайте предварительно собранный бинарный файл напрямую (запускается менее чем за 0,5 с, поэтому никогда не превышает таймаут запуска клиента):

{
  "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>"
      }
    }
  }
}

Соберите его один раз командой npm install && npm run build (или npm install -g .).

Альтернатива — npx. После публикации в npm:

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

⚠️ Избегайте npx -y github:… в конфигурации клиента: при первом запуске он клонирует репозиторий, устанавливает зависимости и компилирует TypeScript, что может превысить таймаут подключения MCP-клиента (~30 с) при холодном кэше. Используйте предварительно собранный бинарный файл (или npm-версию после публикации) для клиента, который запускает сервер по требованию.

Сам сервер запускается мгновенно независимо от сети: он синхронно загружает встроенный снимок OpenAPI, а затем в фоновом режиме обновляет каталог с работающего сервера.

Использование через 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

HTTP-транспорт не сохраняет состояние (один сервер на запрос), по умолчанию привязывается к 127.0.0.1 и включает защиту от DNS-rebinding.

Инструменты

Шлюз (покрывает все 279 операций)

Инструмент

Назначение

ir_list_operations

Поиск/вывод списка каталога API по запросу, тегу или методу.

ir_describe_operation

Показать параметры и схему тела запроса одной операции.

ir_call

Выполнить любую операцию по operationId (или method+path).

Типичный сценарий: ir_list_operations → ir_describe_operation → ir_call.

Подобранные (типовые сценарии дежурств)

Оповещения: ir_list_alerts, ir_get_alert, ir_ack_alert, ir_resolve_alert, ir_comment_alert · Инциденты: ir_list_incidents, ir_get_incident, ir_create_incident, ir_add_incident_responder, ir_set_incident_priority · Дежурства: ir_who_is_on_call, ir_oncall_health, ir_list_rotations, ir_create_rotation_override · Тишины: ir_list_silences, ir_create_silence, ir_remove_silence · Обслуживание: ir_list_maintenance_windows, ir_create_maintenance_window · Контекст: ir_list_teams, ir_list_routes, ir_list_channels, ir_whoami · Хартбиты: ir_list_heartbeats, ir_send_heartbeat.

Безопасность

  • Защита подтверждением. Деструктивные операции (DELETE, а также пути с disable/remove/delete/reset/regenerate-token/intake-token/ cancel/merge/revoke) не выполняются, если вы не передадите confirm: true. Без него инструмент возвращает предварительный просмотр (dry-run).

  • Режим только чтения. Установите IR_READONLY=true, чтобы отклонять все операции, кроме GET, на уровне инструментов.

  • Сокрытие токенов. Bearer-токены удаляются из журналов и сообщений об ошибках.

Безопасность

IR_VERIFY_TLS=false отключает проверку сертификатов TLS для исходящих вызовов к IncidentRelay. Это делает трафик уязвимым для атак типа man-in-the-middle, и этот параметр следует использовать только в доверенной сети. Для самозаверяющих сертификатов self-hosted предпочтительнее добавить CA сервера в ваше хранилище доверия (или использовать правильно выпущенный сертификат) вместо отключения проверки. При отключенной проверке сервер выводит предупреждение при запуске.

Разработка

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

Пересоздание встроенного снимка OpenAPI: см. scripts/generate-snapshot.md.

Проектирование и план

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP server for the Rootly incident management platform — alerts, incidents, on-call schedules
    -
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for the Level v2 REST API, enabling management of alerts, automations, devices, groups, tags, updates, and custom fields through typed tools.
    35
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    AI-powered incident management MCP server that enables investigation, root cause analysis, and response actions for production incidents using mocked data for demo purposes.
    8
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Opsgenie (Atlassian's incident/alert management and on-call platform) exposing the full public Opsgenie REST API as MCP tools.
    -