MCP Inspector as MCP Server
MCP Inspector als MCP-Server
Ein schlanker MCP-Server, der es LLMs ermöglicht, andere MCP-Server zu inspizieren und zu testen. Dies ist eine in sich geschlossene Implementierung, die das MCP-SDK direkt verwendet, ohne auf externe CLIs zurückzugreifen.
Funktionen
Direkte SDK-Integration: Verwendet
@modelcontextprotocol/sdkdirekt für Server- und Client-OperationenAlle Transporttypen: Unterstützt stdio-, SSE- und HTTP-Transporte (streamfähig)
Minimaler Fußabdruck: Einzige Abhängigkeit (
@modelcontextprotocol/sdk)Vollständige MCP-Inspektion: Tools auflisten, Tools aufrufen, Ressourcen auflisten, Ressourcen lesen, Prompts auflisten, Prompts abrufen
Sitzungsverwaltung: Persistente Verbindungen mit automatischer Garbage Collection
Ereignispufferung: Erfassung von Benachrichtigungen, Datenverkehr und Fehlern zur Fehlerbehebung
Installation
npm install
npm run buildVerwendung
Als MCP-Server
Fügen Sie dies zu Ihrer MCP-Konfiguration hinzu. Obwohl es leichte Unterschiede zwischen verschiedenen Implementierungen gibt, ist das allgemeine Format gleich:
{
"mcpServers": {
"mcp-inspector": {
"command": "node",
"args": ["/path/to/mcp-inspector-as-mcp-server/dist/server.js"]
}
}
}Verfügbare Tools
Sitzungsverwaltung (NEU in v2.0)
Tool | Beschreibung |
| Stellt eine persistente Verbindung zu einem MCP-Server her. Gibt eine |
| Schließt eine persistente Sitzung und gibt Ressourcen frei. |
| Listet alle aktiven Sitzungen mit ihrem Status und ihrer Leerlaufzeit auf. |
| Liest gepufferte Ereignisse (Benachrichtigungen, Datenverkehr, Fehler) aus einer Sitzung. |
| Injiziert eine menschliche Steuerungsnachricht in die Warteschlange einer Sitzung. |
Inspektions-Tools
Tool | Beschreibung |
| Listet alle von einem MCP-Server bereitgestellten Tools auf |
| Ruft ein Tool auf einem MCP-Server auf |
| Listet alle von einem MCP-Server bereitgestellten Ressourcen auf |
| Liest eine bestimmte Ressource |
| Listet Ressourcenvorlagen auf |
| Listet alle Prompts auf |
| Ruft einen bestimmten Prompt ab |
Verbindungsparameter
Alle Tools akzeptieren die folgenden Verbindungsparameter:
Für stdio-Transport (lokale Befehle):
command: Auszuführender Befehl (z. B."node","python")args: Array von Argumenten (z. B.["path/to/server.js"])
Für SSE/HTTP-Transport (entfernte Server):
url: Server-URL (z. B."http://localhost:3000/sse")headers: Optionales HTTP-Header-Objekt
Allgemein:
transport: Erzwingt den Transporttyp ("stdio","sse"oder"http"). Wird automatisch erkannt, falls nicht angegeben.session_id: (Optional) Verwendet eine bestehende persistente Sitzung anstelle einer kurzlebigen Verbindung.
Sitzungs-Workflow
Verwenden Sie für das Debugging von zustandsbehaftetem Serververhalten persistente Sitzungen:
1. insp_connect → returns session_id
2. insp_tools_list (with session_id) → uses persistent connection
3. insp_tools_call (with session_id) → state is preserved
4. insp_read_events (with session_id) → see notifications
5. insp_disconnect (with session_id) → cleanupSitzungen werden nach 30 Minuten Inaktivität automatisch geschlossen.
Menschliche Steuerung & Beobachtbarkeit
Der Inspector ermöglicht Human-in-the-Loop-Workflows, bei denen Sie LLM-gesteuerte MCP-Tests in Echtzeit beobachten und steuern können.
Funktionsweise
┌─────────────┐ MCP calls ┌─────────────────┐ forwards ┌─────────────┐
│ LLM Agent │ ◄────────────────► │ MCP Inspector │ ◄──────────────► │ Target MCP │
│ (Antigravity) │ (v2.0) │ │ Server │
└─────────────┘ └────────┬────────┘ └─────────────┘
│
Events logged to
session EventBuffer
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
insp_read_events HTTP :9847/api mcp-steer CLI
(LLM reads events) (external access) (human injection)Aktivität anzeigen
Über LLM: Der Agent kann insp_read_events aufrufen, um zu sehen, was passiert:
{
"session_id": "sess_abc123",
"types": ["traffic_in", "traffic_out"],
"limit": 20
}Über HTTP: Fragen Sie die Steuerungs-API direkt ab:
curl http://127.0.0.1:9847/api/sessionsDen Agenten steuern
Injizieren Sie Anweisungen, die in der nächsten Tool-Antwort des LLMs erscheinen.
Über die CLI:
./bin/mcp-steer.mjs "Focus on testing the error handling paths"
./bin/mcp-steer.mjs --session sess_abc123 "Try calling with invalid params"Über HTTP:
curl -X POST http://127.0.0.1:9847/api/steer \
-H "Content-Type: application/json" \
-d '{"message": "Check the authentication flow next"}'Über das MCP-Tool:
{
"tool": "insp_inject_steering",
"arguments": {
"session_id": "sess_abc123",
"message": "Great progress! Now test edge cases."
}
}Ereignistypen
Typ | Beschreibung |
| Nachrichten, die AN den Zielserver gesendet wurden |
| Nachrichten, die VOM Zielserver empfangen wurden |
| MCP-Benachrichtigungen vom Zielserver |
| Fehler, die während der Kommunikation aufgetreten sind |
| Menschliche Steuerungsnachrichten, die in die Sitzung injiziert wurden |
Typischer Workflow
LLM erstellt Sitzung:
insp_connect→ erhältsess_abc123LLM startet Test:
insp_tools_callmitsession_idMensch beobachtet:
curl http://127.0.0.1:9847/api/sessionsMensch steuert:
./bin/mcp-steer.mjs "Also test the batch endpoint"LLM empfängt Steuerung: Die nächste Tool-Antwort enthält
⚡ STEERING from human: ...LLM passt sich an: Berücksichtigt die menschliche Anleitung
Beispiele
Tools von einem lokalen MCP-Server auflisten (kurzlebig):
{
"command": "node",
"args": ["/path/to/some-mcp-server/dist/server.js"]
}Eine persistente Sitzung erstellen:
{
"command": "node",
"args": ["/path/to/some-mcp-server/dist/server.js"]
}
// Returns: { "session_id": "sess_abc123", "server_info": {...} }Ein Tool über eine Sitzung aufrufen:
{
"session_id": "sess_abc123",
"tool_name": "search",
"tool_args": {"query": "hello"}
}Architektur
├── src/
│ ├── server.ts # MCP server exposing inspector tools
│ ├── client.ts # Client wrapper (hybrid stateless/session mode)
│ ├── transport.ts # Transport factory (stdio, SSE, HTTP) + TracingWrapper
│ ├── session.ts # SessionRegistry with GC (30-min TTL)
│ └── events.ts # EventBuffer (ring buffer for notifications)
├── bin/
│ └── mcp-steer.mjs # CLI tool for human steering
├── tests/ # Integration test scripts (run with npx tsx)
└── vitest.config.ts # Unit test + coverage configWarum existiert dies?
Der ursprüngliche MCP Inspector ist eine Kombination aus Web-UI und CLI, die über mehrere Projekte verteilt ist. Dies konsolidiert die Kernfunktionalität in einem einzigen, schlanken MCP-Server, den ein LLM verwenden kann, um:
MCP-Server iterativ zu entwickeln und zu debuggen
MCP-Server-Funktionalität zu testen, ohne die Konversation zu verlassen
Zu erkunden, welche Tools/Ressourcen/Prompts ein MCP-Server bereitstellt
Zustandsbehaftetes Verhalten mit persistenten Sitzungen zu debuggen
Entwicklung
npm install # install dependencies
npm run build # compile TypeScript
npm run dev # watch mode
npm test # run unit tests
npm run test:cov # run tests with coverage
npm run lint # lint source files
npm run format # auto-format with Prettier
npm run typecheck # type-check without emittingChangelog
v2.1.0
Menschliche Steuerung (
insp_inject_steering) für Human-in-the-Loop-Workflows hinzugefügtHTTP-API auf Port 9847 für externe Steuerung/Beobachtbarkeit hinzugefügt
mcp-steer.mjsCLI-Tool für einfache menschliche Interaktion hinzugefügtKritischen Fehler in
TracingTransportWrapperbehoben, bei dem das Timing der Handler-Erfassung zu Nachrichtenverlust führte
v2.0.0
Sitzungsverwaltung hinzugefügt (
insp_connect,insp_disconnect,insp_list_sessions)Ereignispufferung hinzugefügt (
insp_read_events)Alle Inspektions-Tools unterstützen jetzt eine optionale
session_idfür persistente VerbindungenAutomatische Garbage Collection hinzugefügt (30-Minuten-TTL für inaktive Sitzungen)
Abwärtskompatibel:
session_idweglassen für das ursprüngliche kurzlebige Verhalten
v1.0.0
Erstveröffentlichung mit kurzlebigen Verbindungen
Lizenz
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/esinecan/mcp-inspector-as-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server