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).
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 installed
Maintenance
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
Operate smplkit from your agent: feature flags, config, logging, audit, and scheduled jobs.
Investigate errors, track deployments, analyze performance, and manage application monitoring
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/gmgalvan/hello-world-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server