Sie haben einen MCP-Server (Model Context Protocol) eingerichtet, aber wenn Sie /mcp öffnen, hängt er in einem Zustand wie diesem fest — kommt Ihnen das bekannt vor?

/mcp

  filesystem      ✓ connected      (12 tools)
  github          ✗ failed
  notion          △ needs authentication
  my-server       ⏸ pending approval

MCP ermöglicht Claude Code den Zugriff auf externe Werkzeuge und Daten. Scheitert eine Verbindung, bestimmen Sie die Ursache nicht allein anhand des Status: Prüfen Sie Verbindungsart und Fehlerdetails gemeinsam. Dieser Artikel führt durch lokalen Start, entfernte Kommunikation und Authentifizierung, Konfiguration und Freigabe.

Das Wichtigste: (1) Status und Details mit /mcp und claude mcp get <name> lesen. (2) failed kann bei lokalen und entfernten Servern auftreten. Bei stdio prüfen Sie Befehl und Umgebungsvariablen, bei HTTP URL, Netzwerk, Serverantwort und Authentifizierung. (3) Bleibt die Ursache unklar, prüfen Sie die Verbindungsprotokolle mit claude --debug=mcp. Ändern Sie nur die vom tatsächlichen Fehler betroffene Einstellung und prüfen Sie das Ergebnis durch erneutes Verbinden.

CLAUDE CODE · MCP STATUS

Ursachen aus Status und Details ermitteln

— bei failed auch Verbindungsart und Fehlerdetails prüfen

$ /mcp
filesystem connected · 12 tools
github failed → Issue prüfen
notion needs auth → /mcp OAuth
my-server pending → genehmigen

✗ failed = Verbindung fehlgeschlagen, △ needs auth = Authentifizierung prüfen, ⏸ pending = Freigabe ausstehend.
failed allein verrät die Ursache nicht. Lesen Sie Verbindungsart und Fehlerdetails.

1. Was dieser Fehler bedeutet

Beispielsweise kann folgende Meldung im Protokoll erscheinen. Schließen Sie daraus nicht allein auf einen fehlgeschlagenen Serverstart; prüfen Sie auch die vorherigen Protokolleinträge.

MCP error -32000: Connection closed

MCP error -32000: Connection closed zeigt an, dass die Verbindung geschlossen wurde. Das TypeScript-SDK von MCP ordnet -32000 dem Fehler ConnectionClosed zu. Die vorherigen Protokolle zeigen, was die Verbindung beendet hat, etwa ein Serverende oder ein Kommunikationsabbruch. Die Meldung allein unterscheidet nicht zwischen einem Prozessende vor der Initialisierung und einem späteren Verbindungsabbruch. Siehe die Behandlung geschlossener Verbindungen im SDK.

Ähnliche Fehlermeldungen müssen nicht dieselbe Ursache haben. Fehler unterscheiden sich je nach Client, Version und Server. Prüfen Sie bei Anleitungen für andere Werkzeuge, ob sie zu Ihrer Verbindungsart und Ihren Protokollen passen.

Auch Fehler außerhalb Ihrer Konfiguration kommen infrage. Beispielsweise enthält Issue #20713 den Bericht eines Nutzers über einen Abbruch während der Initialisierung mit Claude Code 2.1.19 unter macOS. Behandeln Sie die Ursachenvermutung eines Nutzers nicht als von Anthropic bestätigte Ursache oder als aktuellen Fehler in sämtlichen Umgebungen. Geben Sie bei einer Meldung Betriebssystem, Version, Verbindungsart und von Geheimnissen bereinigte Protokolle an.

MCP-Server nutzen häufig zwei Verbindungsarten. (1) stdio (lokal) — Claude Code startet den Serverbefehl als Unterprozess auf Ihrem Rechner und kommuniziert über Standardein- und -ausgabe. (2) HTTP (entfernt) — die Verbindung zu einem Cloudserver erfolgt über eine URL (das ältere SSE ist veraltet). Was „verbindet nicht“ bedeutet, hängt stark von der Verbindungsart ab.

Bei lokalen Servern (stdio) prüfen Sie fehlende Befehle oder Variablen, beendete Serverprozesse und Protokolle in stdout. Bei entfernten Servern (HTTP) prüfen Sie falsche URLs, Netzwerkprobleme, 5xx-Antworten, Zeitüberschreitungen und Authentifizierung. Ort, Syntax und Geltungsbereich der Konfiguration sind bei beiden relevant. Behaupten Sie ohne Häufigkeitsbelege nicht, es liege „fast immer an der Authentifizierung“ oder „fast immer am Pfad“.

Zuerst Status und Fehlerdetails festhalten und klären, ob stdio oder HTTP verwendet wird. Wer mehrere Einstellungen gleichzeitig ändert, kann deren Wirkung kaum zuordnen. Nutzen Sie die folgende Tabelle als Einstieg und untersuchen Sie jeweils eine passende Ursache.

2. Zuerst den Status mit /mcp lesen

Führen Sie in der Sitzung /mcp aus (oder aus der Shell claude mcp list / claude mcp get <name>), um den Zustand jedes Servers zu sehen. Die wichtigsten Status und ihre Bedeutung:

StatusBedeutungWo zuerst nachsehen
✓ connectedVerbunden. Daneben steht die WerkzeuganzahlWerden Werkzeuge erwartet, aber 0 angezeigt, prüfen Sie angebotene Funktionen, Berechtigungen und Protokolle
✗ failedVerbindung zu einem lokalen oder entfernten Server fehlgeschlagenIssue-Details und Verbindungsart. Bei HTTP auch Kommunikation, Serverantworten und feste Authentifizierungsheader prüfen
△ needs authenticationAnmeldung oder zusätzliche Berechtigungen erforderlich. Auch das konfigurierte Authentifizierungsverfahren prüfenÜber /mcp die Authentifizierung starten (im Browser bestätigen)
⏸ pending approvalEin Projektserver aus .mcp.json wartet auf FreigabeIn /mcp freigeben. Bei versehentlicher Ablehnung: claude mcp reset-project-choices
✗ rejectedEin durch die Konfiguration abgelehnter ProjektserverdisabledMcpjsonServers und Verwaltungsrichtlinien prüfen. Eigene Freigabeentscheidungen mit reset-project-choices zurücksetzen

failed allein unterscheidet nicht zwischen lokalem Startproblem und entfernter Kommunikationsstörung. Lesen Sie HTTP-Code oder Fehlertext unter Issue: in claude mcp get <name> beziehungsweise die Details in /mcp. Auch ein beim Verbindungsaufbau mit 401/403 abgelehnter fester Authorization-Header führt zu failed. Außerdem sind null Werkzeuge bei einem Server, der nur Ressourcen oder Prompts anbietet, nicht zwangsläufig ein Fehler. Prüfen Sie zuerst, ob er Werkzeuge bereitstellen soll. Siehe die offiziellen Statusdetails.

3. Hauptursachen für Fehler und ihre Behebung

Diese Punkte helfen bei Verbindungsfehlern und unpassender Konfiguration. Beginnen Sie mit den Punkten für Ihre Verbindungsart.

ROOT CAUSES

Prüfpunkte nach Verbindungsart

1) Pfad / PATH
Relative Pfade werden relativ zum Startverzeichnis aufgelöst und verschieben sich. Verwende für lokale Skripte absolute Pfade. Eine fehlende ausführbare Datei ergibt spawn ... ENOENT.
2) Umgebungsvariablen nicht übergeben
Serverbezogene stdio-Variablen gehören in das env dieses Servers. Auch env in settings.json gilt für Sitzung und Unterprozesse; prüfen Sie deshalb diese Werte ebenfalls.
3) Start-Timeout
Ein schwergewichtiger Server startet nicht rechtzeitig. Erhöhe MCP_TIMEOUT (ms) beim Start, z. B. MCP_TIMEOUT=10000 claude.
4) Konfigurationsort / JSON
Die Projektdatei .mcp.json liegt im Projektstamm (nicht unter .claude/ oder in settings.json). Eine undefinierte ${VAR} ohne Vorgabewert erzeugt eine Warnung und bleibt als wörtlicher Text erhalten.
5) stdout verschmutzen
Ein stdio-Server, der Protokolle nach stdout schreibt, stört das Protokoll. Diagnoseausgaben gehören nach stderr.
6) Remote-Authentifizierung
Wenn eine OAuth-Anmeldung nötig ist, authentifizieren Sie sich über /mcp. Ein abgelehnter fester Authentifizierungsheader erscheint dagegen als failed.

Lokal prüfen Sie Befehl, Umgebungsvariablen und Protokolle.
Entfernt prüfen Sie URL, Kommunikation, Serverantwort und Authentifizierung und folgen dem tatsächlichen Fehler.

Eine Projektdatei .mcp.json lässt sich teilen, aber committen Sie keine geheimen Werte direkt. Verweisen Sie beispielsweise auf ${API_KEY} und setzen Sie den Wert in jeder Umgebung. Einige geschützte Variablennamen, darunter Claude Codes eigene Zugangsdaten, werden in entfernten URLs und Headern zu leeren Zeichenfolgen; beachten Sie die offiziellen Expansionsregeln. Interaktive Sitzungen verlangen eine Freigabe für Projektserver. claude -p und das SDK laden sie dagegen normalerweise ohne diese Abfrage. Ablehnungseinstellungen und weitere Bedingungen erläutert die offizielle Dokumentation zum Projektbereich. Dazu passen auch MCP-Grundlagen und A2A.

4. Den npx-Start unter Windows prüfen

Meldet Windows spawn npx ENOENT, prüfen Sie zuerst Programmdatei und PATH mit where.exe npx. Prüfen Sie auch, ob Node/npm funktioniert und das angegebene Paket startet. Die offizielle Node-Dokumentation erklärt, dass .cmd-Dateien nicht direkt ausführbar sind, und zeigt den Start über eine Shell oder cmd.exe. Das bedeutet jedoch nicht, dass die direkte Angabe von npx in jeder Claude-Code-Umgebung scheitert.

Falls die Startmethode die Ursache ist: cmd.exe /c versuchen

Liegt das Problem am Start der .cmd-Datei, können Sie diese Form versuchen. Ersetzen Sie den Paketnamen durch den aus der offiziellen Serveranleitung:

{
  "command": "cmd.exe",
  "args": ["/c", "npx", "-y", "@scope/your-mcp-server"]
}

Auch WSL benötigt Node, Pakete und Umgebungsvariablen auf der Linux-Seite. Ein Wechsel zu WSL garantiert keine Lösung. Prüfen Sie außerdem die unterstützten Serverumgebungen und Ihre Claude-Code-Version.

5. Der Diagnose-Workflow

Wenn die Ursache unklar ist, gehen Sie von oben nach unten vor. Der Trick: Bestätigen Sie, dass der Server eigenständig läuft, bevor Sie Claude Code die Schuld geben.

DIAGNOSE

Von oben nach unten eingrenzen

1
Mit /mcp und claude mcp list / get den Status prüfen; lesen Sie auch Issue: und die Verbindungsart.
2
Mit claude --debug=mcp die MCP-Initialisierungs- und Verbindungsprotokolle prüfen. Bei stdio auch stderr prüfen.
3
Bei stdio den eigenständigen Start mit denselben Befehlen und Variablen wie in der Konfiguration testen. Bei HTTP URL, Netzwerkweg und Antwortcode prüfen.
4
Überprüfe den Server allein mit dem MCP Inspector (npx @modelcontextprotocol/inspector) — inspiziere seine Werkzeugliste und rufe Werkzeuge in einer Oberfläche auf.
5
Nach Änderungen neu verbinden und die benötigte Operation testen. Bei anhaltenden Fehlern Version, Verbindungsart und bereinigte Protokolle melden.

Ein erfolgreicher eigenständiger Start ist nicht dasselbe wie eine erfolgreiche MCP-Verbindung und Operation.
Protokollkompatibilität, Berechtigungen, Werkzeugabfrage und Clientfehler können weiterhin Probleme verursachen.

Hinweis: Zu viele MCP-Server lassen Werkzeugdefinitionen Kontext verbrauchen, besonders beim ständigen Vorladen. Claude Code lädt Definitionen standardmäßig über die Werkzeugsuche nach, was die Belastung verringert. Dennoch sollten Sie ungenutzte Server deaktivieren. Zu viel Kontext kann sogar Prompt is too long auslösen.

6. Checkliste zur Vorbeugung

Gewohnheiten, um bei MCP-Verbindungen nicht hängenzubleiben.

(1) Tatsächliche Pfade von stdio-Programmen und Skripten prüfen. (2) stdio-Variablen von HTTP-Authentifizierungsheadern unterscheiden und Geheimnisse aus geteilten Dateien heraushalten. (3) Unter Windows where.exe npx und Node/npm prüfen; cmd.exe /c nur bei Problemen mit der Startmethode versuchen. (4) .mcp.json im Projektstamm ablegen und JSON-Syntax, Variablen und Freigabe prüfen. (5) stdio-Protokolle nach stderr statt stdout schreiben. (6) Jeweils eine Änderung vornehmen, neu verbinden und die benötigte Operation testen.

Fazit

Untersuchen Sie MCP-Verbindungsfehler in Claude Code anhand von Status, Verbindungsart und Fehlerdetails gemeinsam. failed beschränkt sich nicht auf lokale Startfehler: Auch HTTP-Kommunikationsfehler und abgelehnte feste Authentifizierungsheader können dahinterstehen. needs authentication verweist auf Authentifizierungsprüfungen, pending approval auf die Freigabe eines Projektservers.

Gehen Sie so vor: Status und Issue: lesen → passende Verbindungsprotokolle prüfen → eigenständigen Betrieb beziehungsweise Kommunikation testen → neu verbinden und Operation prüfen. Die Debug-Kategorie wählen Sie mit claude --debug=mcp. Mit --debug-file ./claude-mcp-debug.log speichern Sie die Protokolle. Entfernen Sie Geheimnisse vor dem Teilen. Verwandt: Was ist MCP?, MCP-Server monetarisieren, Claude-Code-Fehler im Überblick.

FAQ

F. /mcp zeigt failed. Wo fange ich an?
A. Verbindungsart und Issue: prüfen. Bei stdio Befehl, Pfad, Umgebungsvariablen und stderr untersuchen; bei HTTP URL, Netzwerk, Serverantwort und Authentifizierung. Auch ein beim Verbindungsaufbau mit 401/403 abgelehnter fester Authorization-Header erzeugt failed. Gehen Sie daher nicht automatisch von einem lokalen Startproblem aus.

Q. Es zeigt „needs authentication“ und die Werkzeuge funktionieren nicht.
A. Das ist ein Remote-Server (HTTP), der eine Authentifizierung verlangt (401/403). Öffnen Sie /mcp und führen Sie die Authentifizierung für diesen Server aus; es geht zur OAuth-Genehmigung im Browser über. Danach werden Tokens sicher gespeichert und automatisch erneuert. Beachten Sie, dass einige Dienste (Microsoft 365, Gmail, Google Calendar) keine lokale Authentifizierung aus Claude Code unterstützen und stattdessen über Settings → Connectors auf claude.ai verbunden werden müssen.

F. Mein npx-Server verbindet sich unter Windows nicht.
A. Prüfen Sie where.exe npx und Node/npm und starten Sie dasselbe Paket mit denselben Argumenten. Liegt es an der Startmethode der .cmd-Datei, können Sie cmd.exe /c npx ... verwenden. Auch WSL braucht eine funktionierende Linux-Umgebung. Ein Betriebssystemwechsel allein garantiert keine Lösung.

F. Der Server ist connected, zeigt aber 0 Werkzeuge.
A. Prüfen Sie, ob der Server überhaupt Werkzeuge bereitstellen soll. Bei reinen Ressourcen oder Prompts sind null Werkzeuge nicht zwangsläufig ein Fehler. Werden Werkzeuge erwartet, prüfen Sie angebotene Funktionen, Berechtigungen, Servereinstellungen und Protokolle und verbinden Sie erneut. stdio-Diagnoseprotokolle gehören nach stderr, nicht in den Protokolldatenstrom stdout.

F. Ich habe einen Server konfiguriert, kann ihn aber nicht nutzen.
A. Prüfen Sie, ob die geteilte Projektdatei .mcp.json im Projektstamm liegt, und danach Syntax, Geltungsbereich und Freigabestatus. Eine undefinierte ${VAR} ohne Vorgabewert erzeugt eine Warnung und bleibt beim Laden wörtlicher Text; das kann Start oder Authentifizierung scheitern lassen. Geben Sie bei HTTP-Konfigurationen auch type an. Erneute Freigabe allein behebt weder Ablehnungseinstellungen noch Verwaltungsrichtlinien.

Referenzen zu Konfiguration und Befehlen: env-Einstellungen, CLI-Referenz, MCP-Verbindungsreferenz.