mcp-tester
mcp-tester
Instrumentierter MCP-Server zum Testen der Client-Konformität mit */list_changed-Benachrichtigungen und anderen Protokollfunktionen.
Warum
PR mcaps-microsoft/msx-mcp#321 schlug eine dynamische Bereitstellung von Tools über notifications/tools/list_changed vor. Der PR wurde mit der Behauptung geschlossen, dass "Copilot CLI tools/list beim Sitzungsstart zwischenspeichert und notifications/tools/list_changed ignoriert" – aber es wurde nie ein instrumentiertes Experiment durchgeführt, um dies zu beweisen oder zu widerlegen.
Dieses Repository stellt den Apparat bereit, um diese Behauptung – und die Konformität jedes MCP-Clients mit list_changed – mit echten Beweisen zu testen.
Related MCP server: MCP Test Server
Was es tut
Probe MCP Server (
src/server.ts) – Ein selbstinstrumentierender MCP-Server, der jede JSON-RPC-Nachricht auf seiner stdio-Pipe protokolliert. Er stellt Alpha-Status-Tools, -Ressourcen und -Prompts bereit, sowie Trigger-Tools, die diese auf den Beta-Status umstellen und die entsprechende*/list_changed-Benachrichtigung senden.Automatisierter Client-Treiber (
src/driver.ts) – Ein SDK-basierter MCP-Client, der den Server durch den vollständigen Mutationszyklus steuert. Dies ist die Kontrolle: Er beweist, dass das Protokoll funktioniert, wenn beide Endpunkte die Spezifikation einhalten. Jeder Client, der von diesem Verhalten abweicht, ist nachweislich nicht konform.Log-Analysator (
src/analyze.ts) – Liest das JSONL-Log und gibt eine Markdown-Beweistabelle aus, die spezifische Fragen beantwortet: Hat der Client die Benachrichtigung erhalten? Hat er neu geladen? Kann er das neue Element aufrufen? Kann er das entfernte Element noch aufrufen?Human Protocol (
PROTOCOL.md) – Schritt-für-Schritt-Anleitungen zum Ausführen desselben Tests gegen Copilot CLI oder jeden anderen MCP-Client.
Schnellstart
git clone https://github.com/ericchansen/mcp-tester.git
cd mcp-tester
npm install
npm run buildAusführen der automatisierten Kontrolle (SDK-Client)
npm run driver -- --domain allDies startet den Probe-Server, führt das vollständige Mutationsprotokoll für Tools, Ressourcen und Prompts aus und meldet die Ergebnisse. Sie sollten sehen, dass alle drei Domänen mit voller Konformität bestehen.
Analysieren eines Logs
npm run analyze -- path/to/log.jsonl --domain toolsTesten Ihres eigenen MCP-Clients
Siehe PROTOCOL.md für Schritt-für-Schritt-Anleitungen zum Testen von Copilot CLI oder jedem anderen MCP-Client gegen diese Probe.
Repository-Struktur
mcp-tester/
|-- README.md # This file
|-- PROTOCOL.md # Human-driven test procedure
|-- LICENSE # MIT
|-- package.json
|-- tsconfig.json
|-- src/
| |-- server.ts # Probe MCP server (stdio)
| |-- logger.ts # JSONL stdio tap + log writer
| |-- analyze.ts # CLI: parses log -> markdown evidence table
| +-- driver.ts # CLI: spawns server, drives it via SDK Client
+-- results/
+-- copilot-cli/
+-- .gitkeep # Committed experiment results go hereWie die Probe funktioniert
Ausgangszustand (Alpha)
Domäne | Alpha-Element |
Tools |
|
Ressourcen |
|
Prompts |
|
Plus fünf permanente Tools: mcptester_mutate_tools, mcptester_mutate_resources, mcptester_mutate_prompts, mcptester_status.
Nach der Mutation (Beta)
Wenn ein mcptester_mutate_*-Tool aufgerufen wird:
Das Alpha-Element wird entfernt (über SDK
handle.remove())Das Beta-Element wird registriert
Das SDK sendet automatisch die entsprechende
notifications/*/list_changeddebouncedNotificationMethodsfasst Entfernen + Registrieren zu einer einzigen Benachrichtigung zusammen
Domäne | Beta-Element |
Tools |
|
Ressourcen |
|
Prompts |
|
Protokollierung
Jede JSON-RPC-Nachricht (eingehend und ausgehend) wird in einer JSONL-Datei protokolliert. Der Logger greift über Transform-Streams, die vor dem SDK-Transport installiert sind, auf process.stdin und process.stdout zu, sodass er jedes Byte sieht, ohne das Protokoll zu stören.
Einschränkungen
Nur stdio-Transport – noch kein HTTP/SSE-Test
Nur drei
list_changed-Abläufe – zukünftige Tests für Sampling, Elicitation, Roots, Progress, Completions geplantEinzelserver-Test – testet jeweils eine MCP-Server-Verbindung
Lizenz
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseBqualityDmaintenanceA mock MCP server for testing MCP client implementations and development workflows. Supports tools, prompts, and resources across multiple transport protocols (stdio, HTTP, SSE).1MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive testing server for validating MCP scanner tools and implementations, providing diverse tools, resources, and prompts that exercise various aspects of the Model Context Protocol specification.5 npmMIT
- AlicenseNot gradedqualityDmaintenanceA test server that exercises all MCP protocol features including prompts, tools, resources, and sampling, intended for MCP client builders.214,312 npm-
- AlicenseNot gradedqualityDmaintenanceA test MCP server that exercises all MCP protocol features, including prompts, tools, resources, and sampling, for client builders.214,312 npm-