// MCP-Tester v1.9.0
MCP-Tester
// Galerie
// Vorteile
Was MCP-Tester auszeichnet.
Mit einem Befehl zu jedem stdio-, Streamable-HTTP- oder SSE-Server verbinden. Für schnelle Checks keine Konfigurationsdatei nötig.
Prüft Protokollversion, Tool-Definitionen, Icons, Cache-Angaben und Best Practices — ein Score mit konkreten Hinweisen, nutzbar als CI-Gate und als README-Badge.
Lesbare .mcp-Skripte mit Variablen und Assertions für Tools, Tasks, Elicitation, Notifications, Skills und Apps — Exit-Code und JSON für CI.
Regelmäßig an die neueste MCP-Spezifikation angepasst; zeigt veraltete Features früh. Was zu welchem Datum geprüft wird, ist dokumentiert.
Sehen, was ein fremder Server dem Modell mitgibt: Skills, Oberflächen mit externen Domains und Berechtigungen, Anmeldewege.
docs schreibt Tools, Parameter, Annotations, Prompts, Resources und instructions eines Servers als Markdown — zum Lesen, für ein LLM oder mit --check als CI-Gate.
Geschützte Server testen: OAuth 2.1 mit PKCE, Client Credentials, Enterprise-Login per ID-JAG, Bearer-Token. auth-check zeigt die angebotenen Flows.
http-check prüft einen Streamable-HTTP-Endpunkt: Pflicht-Header, Fehlercodes, Origin-Prüfung, keine Sessions.
Die offiziellen Extensions: lang laufende Aufrufe als Task starten und abbrechen, veröffentlichte Skills verifizieren, interaktive Oberflächen prüfen.
mcp-test-server führt das Protokoll vor, inklusive OAuth; pkg/mcptasks und pkg/mcpskills rüsten Tasks und Skills auf go-sdk-Servern nach.
Mehrere Server in mcp-tester.yml verwalten — mit einem Flag zwischen lokalem Build, Staging und Produktion wechseln.
MCP-Tester ist ein Kommandozeilen-Tool für alle, die MCP-Server bauen oder einsetzen. Es verbindet sich mit jedem MCP-Server – lokal oder remote – und prüft ihn so, wie ein Client ihn sieht: gegen die aktuelle Spezifikation 2026-07-28.
Kein GUI, kein Browser-Plugin. Eine einzige Binary, die das MCP-Protokoll spricht.
Warum MCP-Tester?
Fast täglich erscheinen neue Hosts, Harnesses und Modelle, und die MCP-Spezifikation entwickelt sich laufend weiter. Ein Server, der sie nicht genau einhält, läuft dann oft „plötzlich“ nicht mehr sauber: Aufrufe scheitern bei strikteren Clients, Fehlermeldungen helfen dem Modell nicht weiter, oder es verbrennt unnötig Tokens mit Wiederholungen.
- Tests schreiben statt klicken. Unit-Tests prüfen die Handler, nicht den Protokollvertrag.
.mcp-Testskripte prüfen den Server als Blackbox über den echten Transport – als Gate in CI und Taskfile. - Früh wissen, was die nächste Spec verlangt. MCP-Tester wird regelmäßig an die neueste Spezifikation angepasst und zeigt auch veraltete Features wie alte Protokollversionen oder entfernte Methoden. Gerade bei neuen Features wie der Autorisierung lohnt frühes Testen – Fehler dort können gefährlich und teuer werden.
- Fremde Server vor der Freigabe prüfen. Auch bei Closed-Source-Servern zeigen
docs,inspect,skills --verify,apps,auth-checkundhttp-check, was ein Server kann, welche Anweisungen er dem Modell mitgibt, welche Berechtigungen und externen Domains seine Oberflächen verlangen, wie man sich anmeldet und wie sauber er umgesetzt ist – eine Entscheidungshilfe, bevor ein „echtes“ LLM ihn nutzt. - Findet auch Fehler im SDK. Weil von außen gegen die Spezifikation geprüft wird, fallen auch Fehler in SDKs auf – bei der Anpassung an 2026-07-28 etwa im offiziellen Go-SDK.
Installation
Binary herunterladen (keine Laufzeitumgebung nötig): die Binary für deine Plattform aus dem Download-Bereich in den PATH legen.
Über Go:
go install github.com/hmsoft0815/mlc_mcptester/cmd/mcp-tester@latest
Über curl (Linux/macOS) – installiert nach ~/.local/bin, ohne sudo:
curl -sSL https://raw.githubusercontent.com/hmsoft0815/mlc_mcptester/main/scripts/install.sh | bash
Für Coding-Agents: mcp-tester agent-skill install bringt Claude Code, Gemini CLI, OpenCode und Codex bei, den Tester zu nutzen – welcher Befehl wofür, wie man .mcp-Skripte schreibt, was in CI zählt. Die Skill-Datei landet im Benutzerverzeichnis des jeweiligen Harness und passt immer zur installierten Version.
Quick Start: Jeden MCP-Server in 60 Sekunden testen
# Server-Profil hinzufügen (hier: offizieller MCP-Everything-Server via npx)
mcp-tester profile add my-server -c "npx -y @modelcontextprotocol/server-everything"
# Server analysieren: Protokoll, Fähigkeiten, Quality Score
mcp-tester inspect -p my-server
# Tools auflisten und eines aufrufen
mcp-tester list -p my-server
mcp-tester call echo -p my-server --args '{"message": "hallo"}'
-c startet einen lokalen stdio-Server, -u verbindet sich mit einem Remote-Server über Streamable HTTP (oder das alte SSE).
Server-Inspektion
inspect prüft Protokollversion, Tool-Definitionen (Namen, Schemas, Titel, Annotations, x-mcp-header), Icons, Cache-Angaben, Extensions und Best Practices und liefert einen Quality Score mit konkreten Hinweisen. Protokollfehler – etwa ein tools/list, das trotz angekündigter Fähigkeit scheitert – beenden den Lauf mit Exit 1.
mcp-tester inspect -p my-server
mcp-tester inspect -u https://mein-server.example.com/mcp --min-score 90 # als CI-Gate
mcp-tester inspect -p my-server --badge docs/mcpcheck.svg # Status-Badge fürs README
Muss der Score 100 sein? Nein. Er beruht auf unseren Erfahrungen und muss nicht automatisch eine Änderung auslösen – eine hilfreiche Einschätzung ist er trotzdem. Protokollfehler und FAIL-Meldungen dagegen sind Verstöße gegen MUST-Regeln der Spezifikation.
Fremden Server in zwei Minuten einschätzen
docs liest über das Protokoll alles aus, was ein Server anbietet, und schreibt es als eine Markdown-Datei: Tools mit Parametern und Ergebnisfeldern, Annotations wie readOnlyHint und destructiveHint, Prompts, Resources und die instructions, die der Server dem Modell mitgibt. Das funktioniert mit jedem Server, unabhängig von Sprache und SDK, auch ohne Quellcode.
mcp-tester docs -u https://fremder-server.example/mcp > server.md
mcp-tester inspect -u https://fremder-server.example/mcp
server.md lässt sich in Ruhe lesen oder direkt einem LLM geben: „Was kann dieser Server, welche Tools schreiben oder löschen etwas, wo fehlen Beschreibungen?“ Für eigene Server dient dieselbe Datei als Referenz im Repository; docs --check schlägt in CI fehl, sobald sie nicht mehr zum Server passt.
Automatisierte Test-Skripte
.mcp-Skripte mit einer einfachen, lesbaren Grammatik – für Regressionstests und CI:
# Beispiel: ein Bildgenerator mit dem Tool generate_image
call_tool generate_image prompt:"a red flower"
set_var size $.size
assert_equals $size "512x512"
expect_error call_tool generate_image prompt:""
assert_tool_error
mcp-tester test --script tests/szenario.mcp -p local
Skripte decken Tools, Tasks, Completion, Elicitation, Sampling, Roots, Notifications, Skills und MCP Apps ab. Ein fehlgeschlagener Befehl beendet den Lauf mit Exit 1; --format json liefert eine maschinenlesbare Zusammenfassung. Jedes Ergebnis wird gegen das outputSchema des Tools geprüft – so streng wie das offizielle TypeScript-SDK.
Neu in 1.9: Markdown-Referenz eines Servers
| Befehl / Feature | Wofür |
|---|---|
docs -o docs/mcp-tools.md |
Schreibt Tools, Prompts, Resources und instructions als Markdown: Parametertabellen in der Reihenfolge des Servers, Ergebnisfelder, Annotations – gelesen über das Protokoll, für jeden Server unabhängig von Sprache und SDK |
docs --check docs/mcp-tools.md |
CI-Gate: Exit 1, sobald die Datei nicht mehr zum Server passt |
inspect |
Nennt Parameter ohne Beschreibung – für das Modell ein Ratespiel |
Neu in 1.8: Tasks-Extension prüfen
| Befehl / Feature | Wofür |
|---|---|
tasks |
Prüft einen Server gegen die Tasks-Extension: Fehlercodes ohne Tool-Aufruf; mit --tool den ganzen Lebenslauf eines Tasks (Statusübergänge, Rückfragen, Abbruch, notifications/tasks) |
tasks --other-bearer |
Eine zweite Identität darf fremde Tasks weder lesen noch beantworten noch abbrechen |
inspect |
Prüft die Fehlercodes der Tasks-Extension mit; MUST-Verstöße kosten jetzt immer Punkte, der Bonus für readOnlyHint gleicht nur noch Qualitätsabzüge aus – manche Scores sinken |
| Gegenprobe mit TypeScript | Der Tester wird zusätzlich gegen einen Server auf dem TypeScript-SDK v2 und gegen den offiziellen Tasks-Client geprüft |
Neu in 1.7: weniger Rauschen bei Output-Schemata
| Befehl / Feature | Wofür |
|---|---|
| Output-Schema-Hinweise | Tools ohne Output-Schema stehen in einer Zeile statt je einer; --hints-per-tool zeigt sie wieder einzeln |
inspect --text-only |
Tools, die bewusst nur Text liefern (Markdown, Quelltext), brauchen kein Output-Schema: kein Hinweis, kein Abzug, offen als INFO ausgewiesen; auch im Profil (text_only:) |
Neu in 1.6: Status-Badge, Agent-Skill, Cache-Prüfung
| Befehl / Feature | Wofür |
|---|---|
inspect --badge, --badge-json |
Status-Badge fürs README: mcpcheck │ spec 2026-07-28 · 95/100 – rot bei Protokollfehlern, als SVG ohne externen Dienst oder als shields.io-Endpoint |
agent-skill install |
Skill-Datei für Claude Code, Gemini CLI, OpenCode und Codex, im Benutzerverzeichnis des jeweiligen Harness |
install.sh |
Installiert nach ~/.local/bin, ohne sudo |
inspect --read-resources |
1.6.1: Cache-Angaben nach Spec – warnt, wenn nutzerbezogene Inhalte mit Zugangsdaten als public markiert sind und über gemeinsame Caches bei anderen Nutzern landen können |
| INFO-Meldungen | 1.6.1: Hinweise ohne Einfluss auf den Score, etwa zu ttlMs: 0 oder zu veralteten Features (Logging, Sampling, Roots), die ein Server noch nutzt |
Neu in 1.4 und 1.5: auf dem Stand der Spezifikation 2026-07-28
| Befehl / Feature | Wofür |
|---|---|
http-check |
Streamable-HTTP-Endpunkt gegen die Transportregeln prüfen: Pflicht-Header, Fehlercodes, Origin, Sessions |
--oauth, --bearer, -H |
Geschützte Server testen – vollständiger OAuth-2.1-Ablauf mit PKCE, auch ohne Browser für CI |
call --task, call_task |
Tasks-Extension: lang laufende Aufrufe starten, pollen, abbrechen, Eingaben nachreichen |
skills --verify |
Skills-Extension: veröffentlichte Skills auflisten und gegen Manifest, Digests und Frontmatter prüfen |
elicit_response, sample_response |
Multi Round-Trip: Server, die nach Eingaben fragen, in Skripten testen |
listen, wait_notification |
Notifications über subscriptions/listen |
complete |
Argument-Vervollständigung (completion/complete) |
auth-check |
1.5: zeigt, wie ein Server geschützt ist und welche OAuth-Flows er anbietet; prüft die Metadaten |
--oauth-client-credentials, --oauth-enterprise |
1.5: Auth-Extensions – Maschine-zu-Maschine und Enterprise-Login per ID-JAG |
apps, verify_apps |
1.5: MCP Apps – interaktive Oberflächen, externe Domains und angeforderte Berechtigungen vor der Freigabe prüfen |
Was MCP-Tester zu welchem Datum prüft, steht in der Spec-Abdeckung.
Geschützte Server
# Wie ist der Server geschützt, welche Anmeldewege bietet er an?
mcp-tester auth-check -u https://example.com/mcp
# Token, OAuth im Browser, Maschine-zu-Maschine, Enterprise-Login
mcp-tester list -u https://example.com/mcp --bearer "$TOKEN"
mcp-tester inspect -u https://example.com/mcp --oauth
mcp-tester list -u https://example.com/mcp --oauth-client-credentials --oauth-client-id svc --oauth-client-secret "$SECRET"
mcp-tester list -u https://example.com/mcp --oauth-enterprise --idp-issuer https://idp.example \
--idp-client-id app --id-token "$ID_TOKEN" --oauth-client-id app
Transport-Unterstützung
| Transport | Flag | Einsatz |
|---|---|---|
| stdio | -c "Befehl" |
Lokale Prozesse, Binaries |
| Streamable HTTP | -u "https://…/mcp" |
Remote-Server, aktueller Standard |
| SSE (veraltet) | -u "https://…/sse" |
Ältere Remote-Server |
Fehler gefunden – was tun?
Gegen die aktuelle Spezifikation testen und die Meldungen ernst nehmen. Die Ausgabe nennt Methode, Feld, Fehlercode und die verletzte Regel. Moderne LLMs wie Claude oder Gemini machen daraus in der Regel schnell konkrete Vorschläge zur Behebung – einfach die Ausgabe (gern mit --format json) mitgeben.
Referenz-Server
Die Release-Archive auf GitHub enthalten zusätzlich mcp-test-server – eine Referenzimplementierung, die die Möglichkeiten des Protokolls vorführt: Tools mit Output-Schemas, Resources, Prompts, Completion, Elicitation, Sampling, Roots, Notifications, Tasks, Skills und MCP Apps. Mit -addr läuft er über HTTP, mit -auth OAuth-geschützt mit eingebautem Test-Autorisierungsserver und Test-IdP.
mcp-tester profile add reference -c "mcp-test-server"
mcp-tester inspect -p reference
Für eigene Go-Server gibt es die Pakete pkg/mcptasks und pkg/mcpskills, die Tasks und Skills auf Servern mit dem offiziellen Go-SDK nachrüsten.