incident-assistant
incident-assistant — MCP «Hello World»
Тестовый MCP-сервер (Model Context Protocol), созданный в рамках упражнения «реагирование на инциденты» из книги/курса по MCP — с тем отличием, что здесь он подключён к Claude Code в качестве клиента вместо Gemini CLI.
Сервер имитирует панель оповещений для продакшн-системы и предоставляет:
Ресурс (
resource://incidents/active) со списком активных оповещений (мок-данные).Инструмент (
resolve_incident), который «перезапускает» сервис для устранения оповещения, с симулированным уровнем успеха 80% (чтобы можно было увидеть и сценарий сбоя).
Исходный код: src/index.ts
Стек
@modelcontextprotocol/sdk— официальный MCP SDK для TypeScript/Node.Транспорт stdio (клиент запускает сервер как подпроцесс, и они общаются через stdin/stdout).
TypeScript компилируется в
dist/(см. tsconfig.json).
Related MCP server: mcp-live-telemetry
1. Установка и сборка
npm install
npx tscЭто компилирует src/index.ts → dist/index.js (точка входа, которая запускает сервер).
Примечание:
console.errorнамеренно используется для логирования внутри сервера —stdoutзарезервирован для протокола MCP JSON-RPC, поэтому любойconsole.logтам нарушил бы связь с клиентом.
2. Регистрация сервера в Claude Code
В отличие от книги (где используется settings.json от Gemini CLI), в Claude Code локальный MCP-сервер регистрируется командой claude mcp add:
cd /absolute/path/to/incident-assistant
claude mcp add --scope project incident-assistant -- node /absolute/path/to/incident-assistant/dist/index.jsКлючевые моменты:
--отделяет собственные флагиclaude mcp addот фактической команды, которая запускает сервер.Используется абсолютный путь к
dist/index.js(относительный путь разрешался бы относительно каталога, из которого был запущенclaude, а не относительно расположения.mcp.json).--scope projectсохраняет конфигурацию в .mcp.json в корне репозитория (контролируется в git). Альтернативы:--scope local(приватно для меня, не публикуется) или--scope user(доступно во всех моих проектах, хранится в~/.claude.json).
Это создаёт локальный .mcp.json с встроенным абсолютным путём вашей машины. Поскольку этот путь специфичен для вашего окружения, сам .mcp.json находится в gitignore — вместо него репозиторий содержит .mcp.json.example, показывающий ожидаемую структуру с путём-заглушкой:
{
"mcpServers": {
"incident-assistant": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/incident-assistant/dist/index.js"]
}
}
}3. Подтверждение сервера
Поскольку .mcp.json — это файл проекта (он может прийти из общего репозитория), Claude Code запрашивает явное подтверждение при первом запуске:
claudeПри запуске появляется запрос на доверие для incident-assistant — примите его один раз для проекта (если только команда/аргументы сервера не изменятся позже).
4. Проверка
claude mcp list
claude mcp get incident-assistantОжидаемый вывод после подтверждения:
incident-assistant: node /absolute/path/to/incident-assistant/dist/index.js - ✔ ConnectedВнутри сессии claude команда /mcp показывает доступные инструменты/ресурсы сервера.
5. Демонстрация — реальный результат
Запрос агенту: «есть ли критические оповещения? Если да, попробуй исправить их и сообщи мне результат»
Агент:
Перечислил доступные MCP-ресурсы (
listMcpResources) и нашёлresource://incidents/active.Прочитал этот ресурс (
readMcpResource) и получил мок-оповещения:ID
Service
Status
Message
ALRT-001
auth-api
🔴 CRITICAL
Memory leak detected
ALRT-002
payment-gateway
🟡 WARNING (not critical)
Latency > 500ms
Определил, что критическим является только
ALRT-001, и вызвал инструментresolve_incidentсserviceName: "auth-api".Результат:
✅ Исправлено: auth-api был корректно перезапущен для устранения утечки памяти (ALRT-001, CRITICAL). Перезапуск прошёл успешно.
⚠️ Не тронуто: payment-gateway всё ещё показывает WARNING (latency > 500ms), но это не критично, поэтому его оставили как есть.
Примечание агента: перезапуск устраняет симптом, но не обязательно первопричину — стоит следить за памятью
auth-api, чтобы убедиться, что утечка не повторится.Когда агента явно просят «перезапусти также payment-gateway», он снова вызывает
resolve_incidentсserviceName: "payment-gateway"(точный результат здесь не зафиксирован, поскольку он зависит от 80% симулированного уровня успеха — может вернуться ✅ или ❌ FAILURE).
Это подтверждает полный цикл: MCP-клиент (Claude Code) → обнаружение ресурсов/инструментов → чтение ресурса → принятие решения → вызов инструмента → результат.
Благодарности
Это упражнение основано на / изучено из maliksahil/mcp-incident-assistant. В оригинальном руководстве в качестве MCP-клиента используется Gemini CLI; этот репозиторий адаптирует тот же сервер для использования с Claude Code.
Заметки / подводные камни
Сервер работает под WSL; поскольку в этой конфигурации Claude Code также запускается из WSL-терминала, пути в
.mcp.jsonявляются нативными Linux-путями (например,/home/<user>/...), а не Windows UNC-путями (\\wsl.localhost\...).Если src/index.ts изменён, его нужно пересобрать (
npx tsc), чтобы изменение вступило в силу — сервер запускается изdist/index.js, а не напрямую из.ts-файла.resolve_incidentимеет намеренно симулированный уровень успеха 80% (Math.random() > 0.2), поэтому можно наблюдать, как агент обрабатывает как успешный случай, так и случай сбоя (isError: true).
This server cannot be deployed
Maintenance
Related MCP Connectors
Track errors, manage performance alerts, and configure dashboards and monitors
Mock REST APIs, fake OAuth2/OIDC provider, uptime monitors + heartbeats, live badge/QR images.
Manage incidents and on-call: list/create/update incidents, who is on call, on-call overrides.
Monitor websites, APIs, and servers: create monitors, triage incidents, and query uptime stats.
Related MCP Servers
- FlicenseAqualityDmaintenanceAI-powered incident management MCP server that enables investigation, root cause analysis, and response actions for production incidents using mocked data for demo purposes.8-
- AlicenseAqualityBmaintenanceExposes live industrial IoT telemetry to any MCP client, streaming simulated sensor data from a fleet of machines and detecting anomalies, with the ability to inject faults on demand.4MIT
- AlicenseNot gradedqualityBmaintenanceA simulated CloudOps MCP server exposing tools, resources, and prompts backed by fake Azure-style infrastructure data to demonstrate AI-driven operational workflows without real credentials.MIT
- FlicenseNot gradedqualityCmaintenanceExposes MCP tools to discover and operate simulated lab devices such as incubators and centrifuges, with read/write access, safety-limit enforcement, and interlock logic.-