Zurück zu den Updates
New releaseSep 12, 2026

mcpsnoop v0.22.0

Wireshark für MCP. Ein transparenter Proxy zwischen deinem KI-Client und dem MCP-Server. Beobachte jeden Aufruf live in deinem Terminal, lass CI bei Funden fehlschlagen, exportiere OpenTelemetry-Spans.

Teilen

mcpsnoop

Wireshark für MCP. mcpsnoop sitzt zwischen deinem KI-Client und deinem MCP-Server und zeichnet jeden JSON-RPC-Frame auf, den beide austauschen, ohne dass eine der beiden Seiten geändert werden muss. Beobachte es live in deinem Terminal, lass CI aufgrund der Befunde fehlschlagen oder sende es als OpenTelemetry-Spans an dein Tracing-Backend.

CI Go Reference MIT Marketplace

mcpsnoop demo

Das Problem

Der offizielle MCP Inspector verbindet sich als eigener Client und sieht daher nie, was dein Client (Cursor, Claude Code, Codex) tatsächlich an deinen Server sendet. Und alles, was auf das Eintreffen einer Anfrage wartet, kann den Aufruf nicht zeigen, den das Modell nie ausgeführt hat oder mit den falschen Argumenten ausgeführt hat. Wenn ein Tool stillschweigend nicht aufgerufen wird, die Capabilities nicht zusammenpassen oder ein Aufruf einfach hängt, bleibt dir nur das Durchwühlen von Logs und Raten.

mcpsnoop sitzt stattdessen im echten Datenpfad. Umgib deinen Server-Befehl damit und beobachte jeden JSON-RPC-Frame live, während dein echter Client und Server kommunizieren.

In CI

Diese Seite ist auch der Eintrag für die mcpsnoop GitHub Action, hier also der vollständige Inhalt. Sie prüft eine aufgezeichnete Sitzung, meldet jeden Befund als Code-Scanning-Alert und lässt den Job anhand dessen fehlschlagen, worauf du die Prüfung beschränkt hast.

permissions:
  security-events: write
  contents: read

steps:
  - uses: kerlenton/[email protected]
    with:
      session: artifacts/session.jsonl

Keine Aufzeichnung zur Hand? Zeichnen Sie einmal eine Sitzung mit Ihrem eigenen Client auf, committen Sie sie und lassen Sie die Action sie gegen jeden Build erneut abspielen. In CI läuft weder ein Modell noch ein API-Schlüssel. Die Wiedergabe wird wie jede Aufzeichnung geprüft, und der Job schlägt auch fehl, wenn der Server schlechter geworden ist als in der Aufzeichnung. Ein Server, der über Streamable HTTP erreicht wird, erhält target mit seinem Endpoint, und eine Aufzeichnung lässt sich über beide Transportwege wiedergeben.

steps:
  - uses: kerlenton/[email protected]
    with:
      replay: tests/mcp/claude-code-session.jsonl
      server: node dist/index.js

Binden Sie die gewünschte Version ein. Die neueste finden Sie auf der Releases-Seite. Jede Eingabe und Ausgabe ist weiter unten in The GitHub Action aufgeführt, und jedes Signal, bei dem die Prüfung fehlschlagen kann, ist in docs/CI.md dokumentiert.

OpenTelemetry

MCP-Revision 2026-07-28 stuft Logging auf Protokollebene als veraltet ein und weist Implementierungen an, auf stderr bei stdio oder auf OpenTelemetry für strukturierte Observability umzusteigen. mcpsnoop deckt beides ab, ohne den Client oder den Server zu verändern. Die stderr-Zeilen eines stdio-Servers erscheinen im Stream neben seinen Frames, und jede Anfrage wird zu einem Span, der den OpenTelemetry-Semantikkonventionen für MCP folgt.

mcpsnoop export -T otlp -o trace.json   # spans from a capture
mcpsnoop --otlp-endpoint http://localhost:4318/v1/traces -- node build/index.js   # spans as calls complete

Ein Tool-Aufruf kommt als Span namens tools/call search an und trägt mcp.method.name, gen_ai.tool.name und error.type, sodass er in einem für MCP gebauten Dashboard landet statt in einem für mcpsnoop gebauten. Live-Tool-Metriken für Prometheus sind nur einen Flag entfernt. Beides ist in docs/OPENTELEMETRY.md beschrieben.

Schnellstart

Sofort ansehen, ohne etwas einrichten zu müssen.

mcpsnoop demo

Um es tatsächlich zu nutzen, binden Sie Ihren Server in die MCP-Konfiguration Ihres Clients ein.

{
  "mcpServers": {
    "my-server": {
      "command": "mcpsnoop",
      "args": ["--", "node", "build/index.js"]
    }
  }
}

Alles nach -- ist der Befehl, der normalerweise deinen Server startet. Ersetze ihn durch das, was du bereits verwendest, etwa python server.py, npx -y @scope/server oder eine kompilierte Binärdatei.

Auf Claude Desktop musst du diese Änderung nicht von Hand vornehmen.

mcpsnoop wrap my-server     # route my-server through mcpsnoop
mcpsnoop unwrap my-server   # put it back

wrap findet claude_desktop_config.json, kopiert die Datei beim ersten Mal nach claude_desktop_config.json.mcpsnoop.bak und schreibt nur den Eintrag dieses einen Servers um, sodass deine Formatierung und alle anderen Server unangetastet bleiben. Innerhalb des umgeschriebenen Eintrags werden die Schlüssel in alphabetischer Reihenfolge zurückgegeben. unwrap stellt die Datei wieder her und entfernt die Sicherung, sobald kein Server mehr umschlossen ist. Starte Claude Desktop nach beidem neu, da MCP-Server beim Start einmalig gestartet werden.

Verwende dann deinen Client wie gewohnt und öffne die UI.

mcpsnoop

Keine Flags, keine Socket-Pfade, keine Startreihenfolge, an die man sich erinnern muss. Das Shim und die UI finden sich von selbst, und die UI füllt vergangene Sitzungen von der Festplatte nach.

Für einen streamable-HTTP-Server führen Sie mcpsnoop als Reverse-Proxy aus.

mcpsnoop http --target http://localhost:3000/mcp --listen :7000

Der HTTP-Status jeder Antwort erscheint im Stream, sodass eine Antwort, die keine eigene JSON-RPC-Nachricht enthält, dennoch als sichtbarer Frame erscheint und nicht als nichts. Das umfasst die 401-Herausforderung, die 403 bei einem abgelehnten Origin, die 202, die eine Benachrichtigung bestätigt, und die 502, wenn das Ziel überhaupt nicht erreichbar ist. Der WWW-Authenticate-Header einer 401 wird unverändert beibehalten und im Inspector angezeigt, da er das Authentifizierungsschema und die Ressourcen-Metadaten benennt, zu denen als Nächstes gegangen werden soll. Filtere nach Status mit status:401 in der TUI oder nach jedem Fehler mit status:err. Ein 4xx oder 5xx zählt als Fehler, sodass ein standardmäßiger mcpsnoop check-Lauf daran scheitert, und der beantwortete Aufruf gilt als fehlgeschlagen und nicht als noch wartend.

Kein eigener Server? Probiere es live aus gegen einen veröffentlichten Testserver, gesteuert von deinem eigenen Client. Um eine Sitzung im Nachhinein zu inspizieren, siehe vergangene Sitzungen aus Logs überprüfen.

Installation

npm

Keine Go-Toolchain erforderlich. Die meisten MCP-Server sind in Node oder Python geschrieben, daher ist dies der kürzeste Weg.

npx mcpsnoop -- node build/index.js

Kategorien