Die mit Abstand häufigste Ursache für „mein Assistent sieht meine Daten nicht“
ist kein defekter Server. Es ist ein Client, der nach der Änderung der
Konfiguration nie neu gestartet wurde. Die meisten MCP-Clients lesen ihre
Konfiguration beim Start und danach nie wieder; eine Datei, die Sie bei
geöffneter App bearbeitet haben, ist also eine Datei, die die App nicht gelesen
hat. Beenden Sie sie vollständig — unter macOS läuft der Prozess weiter, wenn Sie
nur das Fenster schließen — und öffnen Sie sie erneut. In Claude Code führen Sie
/mcp aus, statt das Terminal neu zu starten.
Hilft das nicht, lautet die nützliche nächste Frage nicht „welchen Client nutze ich“, sondern „was genau passiert gerade“. Ein fehlender Server, ein Server, der sich verbindet, aber keine Tools anbietet, Tools, die nichts zurückgeben, und Tools, die nur dann scheitern, wenn sie etwas ändern sollen — das sind vier verschiedene Fehler mit vier verschiedenen Lösungen, und die Lösung hängt kaum davon ab, welche App Sie ausführen. Jede Angabe hier wurde am 14. August 2026 gegen die Herstellerdokumentation geprüft.
Bevor Sie irgendetwas ändern, sehen Sie sich an, was der Client bereits weiß. Jeder Client hat genau eine Stelle, die die Frage „hat sich dieser Server verbunden“ beantwortet, und stattdessen aus dem Chatfenster zu raten, ist der sichere Weg, eine Stunde in ein Problem zu stecken, das dieser Bildschirm in einer Sekunde benennt.
| Client | Wo nachsehen | Wie ein gesunder Server aussieht |
|---|---|---|
| Claude Code | claude mcp list oder das /mcp-Panel |
✔ Connected |
| Claude Desktop | Plus-Symbol im Eingabefeld → Connectors | Server mit seinen Tools aufgelistet |
| Cursor | Output-Panel (Cmd+Shift+U) → MCP Logs |
Initialisierung, keine Verbindungsfehler |
| VS Code | MCP: List Servers in der Command Palette | Server startet, Show Output-Log ist sauber |
| Zed | Settings → AI → MCP Servers | grüner Punkt, Tooltip Server is active |
Claude Code ist davon der informativste. claude mcp list gibt neben jedem
Server einen Gesundheitsstatus aus — ✔ Connected, ! Needs authentication,
✘ Failed to connect, ⏸ Pending approval — und hängt das Fehlerdetail an
dieselbe Zeile an; claude mcp get <name> zeigt dasselbe in einer
Issue:-Zeile, samt dem Fehlertext, den der Server selbst zurückgegeben hat.
Zeigt der Statusbildschirm Ihren Server gar nicht, dann liest der Client den Eintrag nicht, den Sie geschrieben haben. Drei Ursachen decken fast alle Fälle ab.
Die Datei ist kein gültiges JSON. Ein überzähliges Komma oder eine fehlende Klammer, und der Client ignoriert die gesamte Datei — nicht nur den kaputten Eintrag — und sagt das meist nicht einmal. Prüfen Sie die Datei in einem beliebigen JSON-Validator, bevor Sie irgendetwas anderes verdächtigen.
Sie haben eine andere Datei bearbeitet als die, die der Client liest. Nahezu
jeder Client hat sowohl eine persönliche als auch eine projektbezogene
Konfiguration, und die falsche zu bearbeiten erzeugt genau dieses Symptom. Cursor
liest global ~/.cursor/mcp.json und innerhalb eines Projekts
.cursor/mcp.json; VS Code liest .vscode/mcp.json in einem Arbeitsbereich und
eine mcp.json im Benutzerprofil, die man mit MCP: Open User Configuration
öffnet. Claude Code hat drei Geltungsbereiche — local und user in
~/.claude.json, project in einer .mcp.json im Wurzelverzeichnis des
Repositorys — und ist ein Name in mehreren definiert, gewinnt local vor project
und project vor user. Der gesamte Eintrag stammt aus dem gewinnenden Bereich;
einzelne Felder werden nicht zusammengeführt.
Der Schlüsselname passt nicht zu diesem Client. Der Schlüssel auf oberster
Ebene heißt in VS Code servers, in Zed context_servers, bei allen anderen
mcpServers. Ein in VS Code hineinkopierter mcpServers-Block ist kein Fehler,
den der Editor meldet — es ist schlicht ein Schlüssel, den er nicht liest.
Client für Client steht das in
wo die MCP-Konfiguration liegt.
Ein Fall sieht nach einem fehlenden Server aus, ist aber keiner: In Claude Code
steht ein projektbezogener Server auf ⏸ Pending approval, bis Sie claude in
diesem Ordner interaktiv starten und ihn bestätigen — und Bestätigungen, die ins
Repository eingecheckt wurden, gelten erst, wenn Sie dem Arbeitsbereich
vertrauen.
Wenn sich an der Konfiguration nichts geändert hat und der Server sich trotzdem
nicht mehr verbindet, steht dort meist immer noch ein absoluter Pfad auf ein
Programm, das es dort nicht mehr gibt. Ein Update, das die App in einen anderen
Ordner legt, eine Umbenennung oder das Verschieben aus dem Programme-Ordner
zerstören den Pfad, während das JSON weiterhin korrekt aussieht — und nichts in
der Fehlermeldung des Clients weist auf den Umzug hin. Prüfen Sie den Wert von
command vor allem anderen gegen die Wirklichkeit:
ls -l "/absolute/path/from/your/config"
Dieselbe Fehlerklasse trifft Server, die über einen Versionsmanager gestartet
werden. Steht in command schlicht node, npx, python oder uv und kommt
Ihre Laufzeitumgebung von nvm, pyenv oder asdf, dann existiert der Pfad in Ihrem
Terminal und für den Client nicht, weil der Client keine Login-Shell startet.
Ersetzen Sie den bloßen Namen durch den absoluten Pfad — which node liefert ihn
— oder lassen Sie command direkt auf die Binärdatei zeigen.
Ein grüner Status mit leerer Tool-Liste bedeutet, dass der Handshake geklappt hat
und tools/list nichts Brauchbares zurückgab. Dafür gibt es zwei Gründe.
Der erste ist ein Server, der tatsächlich eine leere Tool-Menge meldet. Das bestätigen Sie außerhalb des Clients mit dem MCP Inspector — der Referenz-Testoberfläche, die sich direkt mit einem stdio- oder Streamable-HTTP- Server verbindet und auflistet, was er veröffentlicht. Sieht der Inspector Tools und Ihr Client nicht, liegt der Fehler in der Konfiguration des Clients.
Der zweite ist eine Werkzeugobergrenze. VS Code begrenzt eine einzelne Chat-Anfrage auf 128 aktivierte Tools und verweigert die Anfrage, sobald die Summe darüber liegt — auf einem vollen Rechner ist das schneller erreicht, als man denkt; abschalten können Sie einzelne Server über die Schaltfläche Configure Tools in der Chat-Ansicht. Cursor lässt Sie einzelne Server im Panel Customize in der Seitenleiste deaktivieren, und ein deaktivierter Server startet nicht und taucht im Chat nicht auf — das lohnt sich zuerst zu prüfen, denn ein Schalter, den jemand vor einem Monat umgelegt hat, sieht genauso aus wie ein Server, der gescheitert ist.
Die Tools sind aufgelistet, der Assistent ruft sie auf, und die Ergebnisse sind leer. Der Transport ist hier in Ordnung; die Frage betrifft die Daten, nicht die Konfiguration. Prüfen Sie, ob die Bibliothek, die der Server liest, wirklich die gemeinte ist — richtiges Konto, richtiges Gerät, und Inhalte, die tatsächlich auf diesen Rechner synchronisiert wurden und nicht nur auf einem anderen liegen. Sehen Sie sich danach im Log des Clients die Argumente des Aufrufs an: Ein Assistent, der einen Zeitraum oder einen Filter geraten hat, kann auch aus einer völlig gesunden Bibliothek ein leeres Ergebnis erzeugen.
Wenn Suchen gelingen, aber jeder Versuch, etwas umzubenennen, zu taggen oder zu aktualisieren, fehlschlägt, ist das kein Transportproblem. Server teilen sich üblicherweise in Tools, die lesen, und Tools, die Daten ändern, und die ändernde Hälfte bringt oft eine zusätzliche Voraussetzung mit: eine laufende Anwendung, eine authentifizierte Sitzung, eine Berechtigung, die der Client nicht bekommen hat. Zwei clientseitige Ursachen sollte man zuerst ausschließen. Datenverändernde Tools werden als solche deklariert, also fragt der Client vor dem Aufruf — und eine Rückfrage, die Sie weggeklickt haben, liest sich im Verlauf wie ein Fehler. Und ein Server, der mit einem Read-only-Flag gestartet wurde, veröffentlicht diese Tools gar nicht erst, was eine Konfigurationsentscheidung ist und kein Defekt.
Das ist ein Fehler des Servers, nicht Ihrer; erkennenswert ist er, weil die
Meldung in die Irre führt. Über stdio verlangt das Protokoll, dass die
Standardausgabe nichts als JSON-RPC-Nachrichten enthält. Ein Server, der ein
Versionsbanner, eine Startmeldung oder ein farbiges Log nach stdout schreibt,
beschädigt damit den Datenstrom, und der Client scheitert mit einem Parse-Fehler,
der die ersten Zeichen des Ausgegebenen zitiert —
Unexpected token 'S', "Starting s"... is not valid JSON. Die Lösung gehört dem
Autor des Servers: Log-Zeilen gehen nach stderr, das der Host ohnehin mitschreibt.
Die Umgebung ist die zweite Startfalle. Ein stdio-Server erbt nur eine begrenzte,
plattformabhängige Teilmenge der Umgebungsvariablen — nicht Ihr Shell-Profil —
und sein Arbeitsverzeichnis kann undefiniert sein, unter macOS praktisch /.
Übergeben Sie, was der Server braucht, über den Schlüssel env in seinem
Konfigurationseintrag, und halten Sie jeden Pfad absolut.
command existiert — als absoluter Pfad.Von oben zu arbeiten kostet eine Minute. Bei Schritt sieben anzufangen, macht aus einem Fünf-Sekunden-Problem einen Nachmittag.
Speak-Y bringt seinen MCP-Server in der macOS-App mit, weshalb mehrere der oben
beschriebenen Fehler dort gar nicht auftreten können: kein npm-Paket zu
installieren, keine Laufzeitumgebung, die über nvm aufgelöst werden muss, kein
Token, das abläuft. Auftreten kann der veraltete Pfad — und den repariert die App
selbst. Beim Start prüft sie die Konfigurationen von Claude Code, Claude Desktop
und Cursor und schreibt den Wert von command neu, wo er auf einen alten Ort der
App zeigt — und zwar nur bei Einträgen, die wirklich ihre eigenen sind, erkannt
an der Binärdatei der App und am Argument --mcp, sodass ein fremder Server mit
zufällig gleichem Namen unangetastet bleibt. Muss es von Hand geschehen, steht
unter Einstellungen → Integrationen neben jedem erkannten Client
Neu installieren; danach starten Sie den Client neu oder führen in Claude
Code /mcp aus.
Die Trennung zwischen Lesen und Ändern ist das andere Symptom, das man
wiedererkennen sollte. Aufnahmen durchsuchen und Transkripte, Zusammenfassungen
und Action Items lesen arbeitet direkt gegen die Bibliothek auf diesem Rechner
und braucht sonst nichts Laufendes. Die Tools, die Ordnung schaffen — Tags,
Titel, Sprechernamen, erneute Transkription, Veröffentlichen in einem
Teamkanal — laufen durch die geöffnete App, scheitern also bei
beendetem Speak-Y, während die Suche weiterarbeitet. Diese Asymmetrie ist selbst
schon eine Diagnose: Wenn Lesen geht und Ändern nicht, starten Sie die App,
statt an irgendeiner Konfiguration zu schrauben. Ein --read-only in den
Argumenten des Servers nimmt die ändernden Tools vollständig aus der Sicht des
Clients — beabsichtigtes Verhalten, keine Störung. Leere Ergebnisse von einem
gesunden Server bedeuten meist, dass die Aufnahme noch auf einem anderen Gerät
liegt: Der Server liest diese Festplatte und holt den Rest nicht nach.
Wenn Sie einrichten statt reparieren, sind die Anleitungen pro Client nützlicher als diese Seite: Claude Desktop und Claude Code Schritt für Schritt, und VS Code, Zed und Devin Desktop für die Editoren, deren Konfigurationsform von der aller anderen abweicht.
Die meisten Clients lesen die MCP-Konfiguration nur beim Start; eine Datei, die bei laufendem Client geschrieben wurde, ist also noch gar nicht geladen. Beenden Sie die App vollständig und öffnen Sie sie erneut — unter macOS genügt das Schließen des Fensters nicht —, und in Claude Code führen Sie /mcp aus, statt das Terminal neu zu starten.
Jeder Client hat genau eine Stelle, die das beantwortet. Claude Code: claude mcp list, das neben jedem Server ✔ Connected, ! Needs authentication oder ✘ Failed to connect ausgibt. Claude Desktop: das Plus-Symbol im Eingabefeld, dann Connectors. VS Code: MCP: List Servers aus der Command Palette. Cursor: das Output-Panel mit ausgewähltem MCP Logs. Zed: Settings → AI → MCP Servers, wo ein grüner Punkt Server is active bedeutet.
Unter macOS in ~/Library/Logs/Claude, unter Windows in %APPDATA%\Claude\logs. Live mitlesen können Sie sie mit tail -n 20 -F ~/Library/Logs/Claude/mcp*.log. Die Datei mcp.log enthält allgemeine Verbindungsereignisse, mcp-server-NAME.log das, was der jeweilige Server nach stderr geschrieben hat.
Der Client startet den Prozess selbst, nicht über Ihre Login-Shell. Er erbt weder Ihren vollständigen PATH noch mehr als eine begrenzte, plattformabhängige Teilmenge der Umgebungsvariablen, und sein Arbeitsverzeichnis kann undefiniert sein. Nutzen Sie einen absoluten Pfad für command, absolute Pfade in den Argumenten, und übergeben Sie nötige Variablen ausdrücklich über den Schlüssel env.
Fast immer der absolute Pfad in der MCP-Konfiguration, der noch auf den früheren Ort der App zeigt. Eine Neuinstallation in einen anderen Ordner, ein umbenanntes Programm oder eines, das aus dem Programme-Ordner verschoben wurde, brechen ihn — während die Konfiguration weiterhin korrekt aussieht. Führen Sie die Ein-Klick-Installation des Clients erneut aus, damit der Pfad neu geschrieben wird.