incident-assistant
incident-assistant — MCP „Hallo Welt“
Ein Test-MCP-Server (Model Context Protocol), der der Übung „Incident Response“ aus dem MCP-Buch/-Kurs folgt – mit dem Unterschied, dass er hier an Claude Code als Client angebunden ist, statt an Gemini CLI.
Der Server simuliert ein Alert-Dashboard für ein Produktionssystem und stellt Folgendes bereit:
Eine Ressource (
resource://incidents/active) mit der Liste aktiver Alerts (Mock-Daten).Ein Tool (
resolve_incident), das einen Dienst „neu startet“, um einen Alert aufzulösen, mit einer simulierten Erfolgsrate von 80 % (damit man auch den Fehlerpfad sehen kann).
Quelle: src/index.ts
Stack
@modelcontextprotocol/sdk– offizielles MCP-SDK für TypeScript/Node.stdio-Transport (der Client startet den Server als Unterprozess und sie kommunizieren über stdin/stdout).
TypeScript kompiliert nach
dist/(siehe tsconfig.json).
Related MCP server: mcp-live-telemetry
1. Installieren und Builden
npm install
npx tscDies kompiliert src/index.ts → dist/index.js (den Einstiegspunkt, der den Server startet).
Hinweis:
console.errorwird absichtlich für Logging im Server verwendet –stdoutist für das MCP-JSON-RPC-Protokoll reserviert, sodass jedesconsole.logdort die Kommunikation mit dem Client stören würde.
2. Server bei Claude Code registrieren
Anders als im Buch (das Gemini CLIs settings.json verwendet), wird ein lokaler MCP-Server in Claude Code mit dem Befehl claude mcp add registriert:
cd /absolute/path/to/incident-assistant
claude mcp add --scope project incident-assistant -- node /absolute/path/to/incident-assistant/dist/index.jsWichtige Punkte:
Das
--trennt die eigenen Flags vonclaude mcp addvom eigentlichen Befehl, der den Server startet.Ein absoluter Pfad zu
dist/index.jswird verwendet (ein relativer Pfad würde relativ zum Verzeichnis aufgelöst, aus demclaudegestartet wurde, nicht relativ zum Speicherort von.mcp.json).--scope projectspeichert die Konfiguration in .mcp.json im Repository-Stamm (in git versionierbar). Alternativen:--scope local(privat für mich, nicht geteilt) oder--scope user(verfügbar in allen meinen Projekten, gespeichert in~/.claude.json).
Dies erzeugt eine lokale .mcp.json mit dem absoluten Pfad deiner Maschine. Da dieser Pfad spezifisch für dein Setup ist, ist .mcp.json selbst gitignored – das Repository enthält stattdessen .mcp.json.example, das die erwartete Form mit einem Platzhalterpfad zeigt:
{
"mcpServers": {
"incident-assistant": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/incident-assistant/dist/index.js"]
}
}
}3. Server genehmigen
Da .mcp.json eine Projektdatei ist (sie könnte aus einem geteilten Repository stammen), fragt Claude Code beim ersten Mal nach expliziter Genehmigung:
claudeBeim Start zeigt es einen Vertrauenshinweis für incident-assistant – akzeptiere ihn einmal pro Projekt (es sei denn, die Befehle/Argumente des Servers ändern sich später).
4. Überprüfen
claude mcp list
claude mcp get incident-assistantErwartete Ausgabe nach der Genehmigung:
incident-assistant: node /absolute/path/to/incident-assistant/dist/index.js - ✔ ConnectedInnerhalb einer claude-Sitzung listet /mcp die verfügbaren Tools/Ressourcen des Servers auf.
5. Demo – echtes Ergebnis
Prompt an den Agenten: „Gibt es kritische Alerts? Wenn ja, versuche sie zu beheben und lass mich das Ergebnis wissen“
Der Agent:
Listete die verfügbaren MCP-Ressourcen auf (
listMcpResources) und fandresource://incidents/active.Las diese Ressource (
readMcpResource) und erhielt die Mock-Alerts:ID
Service
Status
Message
ALRT-001
auth-api
🔴 KRITISCH
Speicherleck erkannt
ALRT-002
payment-gateway
🟡 WARNUNG (nicht kritisch)
Latenz > 500ms
Erkannte, dass nur
ALRT-001kritisch ist, und rief das Toolresolve_incidentmitserviceName: "auth-api"auf.Ergebnis:
✅ Behoben: auth-api wurde sauber neu gestartet, um das Speicherleck zu beseitigen (ALRT-001, KRITISCH). Neustart erfolgreich.
⚠️ Nicht angefasst: payment-gateway zeigt weiterhin eine WARNUNG (Latenz > 500ms), aber das ist nicht kritisch, also wurde es so gelassen.
Hinweis des Agenten: Ein Neustart beseitigt das Symptom, nicht unbedingt die Ursache – es lohnt sich, den Speicher von
auth-apiim Auge zu behalten, um zu bestätigen, dass das Leck nicht wieder auftritt.Wenn explizit „payment-gateway auch neu starten“ gefragt wird, ruft der Agent
resolve_incidenterneut mitserviceName: "payment-gateway"auf (das genaue Ergebnis wird hier nicht festgehalten, da es von der simulierten Erfolgsrate von 80 % abhängt – es kann ✅ oder ❌ FEHLER zurückkommen).
Dies bestätigt den vollständigen Kreislauf: MCP-Client (Claude Code) → Ressourcen-/Tool-Erkennung → Lesen einer Ressource → Entscheidung → Tool-Aufruf → Ergebnis.
Danksagungen
Diese Übung basiert auf / wurde gelernt von maliksahil/mcp-incident-assistant. Die ursprüngliche Anleitung verwendet Gemini CLI als MCP-Client; dieses Repository passt denselben Server an, um ihn stattdessen mit Claude Code zu verwenden.
Hinweise / Stolperfallen
Der Server läuft unter WSL; da Claude Code in diesem Setup ebenfalls aus einem WSL-Terminal gestartet wird, sind Pfade in
.mcp.jsonnative Linux-Pfade (z. B./home/<user>/...), keine Windows-UNC-Pfade (\\wsl.localhost\...).Wenn src/index.ts bearbeitet wird, muss es neu gebaut werden (
npx tsc), bevor die Änderung wirksam wird – der Server startet vondist/index.js, nicht direkt von der.ts-Datei.resolve_incidenthat absichtlich eine simulierte Erfolgsrate von 80 % (Math.random() > 0.2), sodass du beobachten kannst, wie der Agent sowohl den Erfolgs- als auch den Fehlerfall (isError: true) behandelt.
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.-