Vor etwa einem Jahr war der einzige saubere Weg, einen MCP-Server in Claude Desktop einzubinden, das Hantieren mit der claude_desktop_config.json und einer stdio-Anbindung. Wer einen Remote-Server brauchte, behalf sich mit Wrapper-Tools wie mcp-remote, die eine HTTP-Verbindung in einen lokalen stdio-Proxy übersetzten. Heute ist die Lage entspannter: Anthropic hat Remote-Server als „Custom Connectors“ mit eigener Verwaltungsoberfläche eingebaut, lokale stdio-Server bleiben für viele Tooling-Szenarien der pragmatischste Weg.
Dieser Beitrag richtet sich an Entwickler, die Claude Desktop als MCP-Client ernsthaft einsetzen wollen — sei es für eigene Server, OSS-Server aus dem Ökosystem oder für die Anbindung an interne Backend-Dienste. Statt eines Produkt-Setups eine generische Anleitung, die für jeden MCP-konformen Server funktioniert.
Zwei Pfade, kurz sortiert
Heute koexistieren in Claude Desktop und Claude.ai zwei Anbindungswege, die unterschiedliche Stärken haben.
Lokale stdio-Server. Konfiguriert über claude_desktop_config.json. Der Server läuft als lokaler Prozess auf demselben Rechner wie Claude Desktop. Pro: minimale Latenz, voller Zugriff auf lokale Ressourcen (Dateisystem, lokale Datenbanken, Build-Tools), keine Auth-Komplexität nach außen. Kontra: nur auf dem jeweiligen Rechner verfügbar, läuft mit den Rechten des Nutzers.
Custom Connectors für Remote-Server. Konfiguriert über die Connectors-UI im Claude-Konto. Server läuft beliebig im Netz. Pro: zentral verwaltbar, Auth über OAuth 2.1 möglich, mehrere Nutzer können denselben Server verbinden. Kontra: braucht eine HTTP-Erreichbarkeit, Auth-Story ist anspruchsvoller.
Welcher Pfad passt, hängt vom Anwendungsfall ab. Lokale Werkzeuge — Editor-Integration, lokale Datei-Operations, Build-Tools, lokale Datenbanken — leben bei stdio. Cloud-Backends, Mehrnutzer-Szenarien und alle Server, die ohnehin als Service betrieben werden, gehören in die Connectors-UI.
Pfad 1 — Lokale stdio-Server via claude_desktop_config.json
Der historisch ältere, aber für viele Entwickler-Workflows immer noch beste Weg.
Konfigurationsdatei finden
Die Datei liegt je nach Betriebssystem an einem festen Ort:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Existiert sie nicht, wird sie beim ersten Öffnen über die Einstellungen angelegt: Claude-Menü → „Settings…“ → Reiter „Developer“ → „Edit Config“. Dieser Weg ist sauberer als das Anlegen von Hand, weil Pfad und Berechtigungen automatisch passen.
Grundstruktur
Die Datei ist ein JSON-Objekt mit einem Schlüssel mcpServers, unter dem jeder Server einen benannten Eintrag bekommt. Ein typischer Eintrag für einen npm-basierten OSS-Server:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/IhrName/Projekte"
]
}
}
}
Der command startet den Server-Prozess, args enthält die Argumente. Claude Desktop spricht den Server über stdin/stdout an, sobald die Anwendung gestartet wird.
Variablen und Pfade
Für Server, die Umgebungsvariablen brauchen, gibt es das Feld env:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
}
}
}
}
Auf Windows ist die APPDATA-Variable eine bekannte Stolperfalle — wenn ein Server Pfade unter ${APPDATA} erwartet, muss der Wert in env explizit gesetzt werden, sonst landen Logs an unerwarteten Stellen.
Eigener Server in Python oder Node
Für eigene Server in der Entwicklungsphase ist die direkte Anbindung an den Quellcode der sinnvollere Weg:
{
"mcpServers": {
"mein-server-dev": {
"command": "node",
"args": ["/Pfad/zum/projekt/dist/index.js"],
"env": {
"LOG_LEVEL": "debug"
}
}
}
}
Bei Python entsprechend mit "command": "uv" oder "command": "python". Wer mit uv arbeitet, sollte den vollständigen Pfad zum Binary angeben, da Claude Desktop nicht im Login-Shell-Kontext läuft und somit nicht alle Pfade vorfindet.
Neustart nach Änderungen
Claude Desktop liest die Konfiguration beim Start. Änderungen werden nur wirksam, wenn die Anwendung vollständig beendet und neu gestartet wird. Auf macOS reicht das Schließen des Fensters nicht — Cmd+Q oder über das Menü beenden. Auf Windows den Prozess über das Tray-Icon vollständig beenden.
Pfad 2 — Custom Connectors für Remote-Server
Der modernere Pfad, seit 2025 in der Claude-UI sauber abgebildet.
Wo der Punkt sitzt
Im Claude-Konto unter Einstellungen → „Connectors“. Dort findet sich die Liste der konfigurierten Connectors plus ein Button zum Hinzufügen eines neuen Custom Connectors. Die Verfügbarkeit hängt vom Abo-Tier ab — Pro, Team und Enterprise haben den vollen Funktionsumfang, einige Optionen (etwa zentrale Verwaltung von Connectors für ein Team) sind den höheren Tiers vorbehalten.
Hinzufügen eines Servers
Im Dialog wird die Server-URL eingegeben. Die URL muss auf HTTPS laufen, das Server-Zertifikat valide sein, und der Server muss den vom MCP-Standard vorgesehenen HTTP-Transport sprechen (Streamable HTTP oder die ältere SSE-Variante). Claude führt im Hintergrund einen Initialize-Handshake aus und bietet dann die Authentifizierung an.
Drei Authentifizierungsverfahren sind in der Praxis relevant:
OAuth 2.1 mit Dynamic Client Registration. Der vom Standard empfohlene Weg. Wenn der Server DCR unterstützt, läuft die gesamte Client-Registrierung automatisch ab — der Nutzer wird einmal in den Login-Flow des Server-Anbieters geleitet, autorisiert die Verbindung, fertig. Tokens werden im Claude-Konto sicher verwahrt, einschließlich Refresh-Logik.
OAuth 2.1 mit manueller Client-Registrierung. Wenn der Server keine DCR unterstützt, muss vorab eine Client-ID am Server registriert werden. Aufwendiger im Onboarding, funktional gleichwertig.
API-Key oder Bearer-Token. Für interne Server oder einfache Setups. Der Token wird im Connector hinterlegt und bei jeder Anfrage als Authorization: Bearer … mitgesendet. Pragmatisch, aber für Mehrnutzer-Szenarien suboptimal — Token-Rotation und Audit sind aufwendiger.
Tool-Berechtigungen
Nach dem erfolgreichen Connect zeigt die UI die vom Server angebotenen Tools an. Einzelne Tools lassen sich gezielt deaktivieren — sinnvoll bei Servern mit großer Tool-Palette, von denen nur ein Teil relevant ist. Jedes aktivierte Tool kostet Token im Modell-Kontext, eine Auswahl mit Bedacht zahlt sich aus.
Stand der Resources-API
Die Resources-API des MCP-Standards (adressierbare Daten, die der Client lesen kann) wird in Claude Desktop zunehmend unterstützt, ist aber in der Praxis weniger weit verbreitet als die Tools-API. Viele Server, die Daten bereitstellen, exponieren sie heute noch über Read-Tools statt über Resources. Wer einen eigenen Server schreibt, kann beides anbieten — Resources für sauber adressierbare Daten, Tools für Aktionen mit Side-Effects.
Authentifizierung im Detail
Die Auth-Story ist die Stelle, an der die meisten Eigen-Server stolpern. Drei Empfehlungen aus der Praxis.
Wenn möglich, OAuth 2.1 mit DCR
Für jeden Server, der mehr als ein paar Entwickler nutzen, ist OAuth mit Dynamic Client Registration die Investition wert. Die Implementierung ist heute deutlich einfacher als noch vor einem Jahr, weil mehrere Bibliotheken (sowohl in Python als auch in Node) den Standard ordentlich abdecken. Die Mühe zahlt sich beim Onboarding jedes neuen Nutzers und bei jedem Audit aus.
Bearer-Token mit klarem Lifecycle
Wo Bearer-Tokens die richtige Wahl sind, sollte der Lifecycle klar sein: Wie wird ein Token ausgestellt? Wer kann es widerrufen? Wie lange ist es gültig? Ohne diese Antworten ist Bearer ein Provisorium auf dem Weg zu einer ausgereifteren Auth.
Audit-Logging am Server
Unabhängig vom Auth-Verfahren gilt: Jeder Tool-Call sollte am Server geloggt werden, mit Aufrufer-Identität (Token-Hash oder Subject aus dem OAuth-Token), Zeitstempel, Tool-Name, Argumenten und Ergebnis-Code. Ohne diese Spur ist Fehlersuche und Sicherheitsanalyse erheblich aufwendiger.
Mehrere Server kombinieren
Ein produktives Setup läuft in der Regel mit drei bis sieben Servern parallel — eine Mischung aus lokalen stdio-Servern (Dateisystem, lokale Datenbanken, Git, Editor-Werkzeuge) und Custom Connectors (interne APIs, SaaS-Anbindungen, Knowledge Bases).
Drei Punkte, die in solchen Setups regelmäßig wichtig werden:
Namens-Disziplin. Modelle entscheiden auf Basis von Tool-Namen und Beschreibungen. Wenn zwei Server jeweils ein Tool search anbieten, hat das Modell keine klare Grundlage für die Auswahl. Pro Server ein eindeutiges Präfix vergeben (zum Beispiel fs_search, gh_search, crm_search).
Tool-Beschreibungen ernst nehmen. Eine gute Beschreibung benennt nicht nur die Funktion, sondern den typischen Anwendungsfall und die Argumente. Die Modell-Entscheidung „welches Tool nehme ich“ steht und fällt mit der Qualität dieser Beschreibungen.
Side-Effects markieren. Tools, die Daten verändern (E-Mail senden, Datensatz schreiben, Bestellung anstoßen), sollten das in der Beschreibung deutlich machen. Claude Desktop fragt bei Schreib-Tools standardmäßig nach Bestätigung — der Hinweis in der Beschreibung verbessert die Entscheidung des Modells, wann der Tool-Call überhaupt sinnvoll ist.
Logs, Troubleshooting, Debugging
Wenn etwas nicht funktioniert, sind die Logs der erste Anlaufpunkt.
Log-Pfade auf macOS: ~/Library/Logs/Claude/mcp.log für allgemeine MCP-Vorgänge, mcp-server-<NAME>.log für die stderr-Ausgaben des jeweiligen Servers.
Log-Pfade auf Windows: %APPDATA%\Claude\logs\ mit derselben Struktur.
Ein bewährtes Vorgehen während der Server-Entwicklung:
tail -n 50 -f ~/Library/Logs/Claude/mcp*.log
Damit sieht man Initialize-Handshakes, Tool-Discovery, Aufrufe und Fehler in Echtzeit. Auf Windows hilft Get-Content -Path "$env:APPDATA\Claude\logs\mcp*.log" -Wait für den vergleichbaren Live-Trace.
Typische Fehlermuster
Server taucht nach Neustart nicht auf. In den meisten Fällen ein Problem mit der claude_desktop_config.json — Syntax-Fehler, fehlendes Komma, ungültiger Pfad. JSON-Linter über die Datei laufen lassen und prüfen, ob der angegebene Command-Pfad aus der Sicht des Claude-Desktop-Prozesses existiert.
Lokaler Server findet node, python, uv nicht. Claude Desktop startet ohne Login-Shell, deshalb fehlen oft Pfade, die im Terminal selbstverständlich sind. Lösung: in der Konfiguration den vollständigen Pfad zum Binary angeben (/usr/local/bin/node statt node).
Remote-Server schlägt beim Connect fehl. Erste Prüfung: Erreichbarkeit per curl und gültiges TLS-Zertifikat. Zweite Prüfung: Antwortet der Server tatsächlich mit dem MCP-Initialize-Handshake nach Standard? Eine HTML-Fehlerseite oder ein leerer 200er wirken ähnlich, bringen Claude aber zum Scheitern.
Tools werden erkannt, schlagen aber stumm fehl. Server-seitig sauber loggen, am besten mit Tracing über die einzelnen Tool-Calls. Häufig liegt das Problem an einem Schema-Mismatch — das Modell sendet Argumente in einer Struktur, die das Tool-Schema nicht spezifiziert hat.
Auth-Token läuft im laufenden Betrieb ab. Bei langlebigen Sessions tritt das gelegentlich auf. OAuth-Flows mit Refresh-Token lösen es automatisch, statische Bearer-Tokens müssen manuell rotiert werden. Server-seitig saubere 401-Antworten zurückgeben, damit Claude den Token nicht in eine endlose Retry-Schleife schickt.
Produktionsreife für eigene Server
Für Eigen-Server, die mehr als ein Wochenend-Experiment sein sollen, eine kompakte Checkliste vor dem ersten produktiven Einsatz.
- Struktrierte Fehler.
{"error": "rate_limited", "retry_after": 30}statt Freitext — Modelle reagieren erheblich klüger auf strukturierte Fehler-Codes. - Pagination bei Listen-Tools. Niemals unbegrenzte Treffermengen zurückgeben — entweder paginieren oder cap mit klarem Hinweis.
- Idempotenz für Schreib-Tools. Modelle wiederholen gelegentlich Calls. Ein Idempotency-Header oder eine Server-seitige Dedup-Logik verhindert Duplikate.
- Rate-Limits server-seitig. Schutz gegen schleifende Modelle.
- Streaming für lange Operationen. Wer 30 Sekunden auf eine Antwort wartet, hat ein UX-Problem. Partielle Ergebnisse streamen.
- Audit-Logs vollständig. Aufrufer-Identität, Tool, Argumente, Ergebnis, Dauer — ohne Lücken.
- Notfall-Schalter. Server sollte innerhalb einer Minute abschaltbar sein.
- Capability-Negotiation respektieren. Nicht hartkodieren, dass der Client alles kann — den Handshake ernst nehmen.
- Resources-API anbieten für sauber adressierbare Read-Daten, parallel zur Tools-API.
- Test-Suite gegen den Server. Der MCP-Inspector eignet sich für manuelles Testen; für CI braucht es einen eigenen Test-Harness.
Diese Punkte sind nicht spektakulär. Sie sind die Differenz zwischen „läuft in der Demo“ und „läuft sechs Monate später in Produktion ohne Drama“.
Drei nützliche Setup-Muster
Aus der Beobachtung produktiver Setups in den letzten Monaten drei Konfigurationen, die häufig auftauchen.
Entwickler-Workspace. Lokale stdio-Server für Dateisystem, Git, Datenbank-Inspector, Build-Tools. Plus ein bis zwei Custom Connectors für firmeninterne APIs (Issue-Tracker, Wissensbasis). Liefert messbare Produktivität im täglichen Programmieren.
Wissensarbeiter mit Cloud-Anbindung. Custom Connectors für die wichtigsten SaaS-Quellen (Knowledge-Base, CRM, Projektmanagement, E-Mail-Suche). Wenige lokale Server, dafür sauber gewählte Cloud-Integrationen. Schwerpunkt: stabile Auth-Story und kontrollierte Berechtigungen.
Mandantenfähiger interner Service. Ein selbst entwickelter Remote-Server, der mehrere Backend-Quellen für ein Team bereitstellt, mit OAuth 2.1 und differenzierter Berechtigungsschicht. Anspruchsvoller in Aufbau und Betrieb, aber die langfristig tragfähigste Variante für ein Team.
Was ich für Sie entwickle
Ich begleite Teams beim Aufbau von MCP-Setups mit Claude Desktop als Client — von der ersten Integration bis zum produktiven Mehrserver-Betrieb.
Eigene MCP-Server für interne Systeme — Server, die ein vorhandenes Backend MCP-konform exponieren, mit sauberen Tool-Schemata, strukturierten Fehlern und Resources-Anbindung wo sinnvoll.
Auth-Architektur mit OAuth 2.1 und DCR — produktiv tragfähige Auth-Setups, einschließlich Token-Lifecycle, Refresh, Widerruf und Audit-Schnittstelle.
Mandantenfähige Remote-Server — Architektur und Implementierung von Mandantentrennung, Rate-Limiting, Berechtigungsschnitten und differenzierten Audit-Logs.
Setup-Begleitung in Teams — Konfigurations-Standards für claude_desktop_config.json, gemeinsam genutzte Custom-Connector-Bibliotheken, Onboarding-Dokumentation für neue Teammitglieder.
Security-Review bestehender Setups — gezielte Prüfung auf Berechtigungslücken, schwache Auth-Pfade, fehlende Audit-Trails, Prompt-Injection-Risiken bei Sampling-aktivierten Servern.
Observability für Server in Produktion — strukturiertes Logging, Tracing über Tool-Calls hinweg, Alerts, Health-Checks. Damit Server nicht im Blindflug laufen.
Der pragmatische Einstieg ist meist ein einzelner gut gemachter Server für einen klaren internen Anwendungsfall — daraus lassen sich die Standards und Patterns für weitere Server ableiten.
Fazit
Claude Desktop ist 2026 ein ausgereifter MCP-Client mit zwei klar getrennten Anbindungswegen. Lokale stdio-Server via claude_desktop_config.json bleiben die richtige Wahl für alles, was auf dem eigenen Rechner laufen muss — Editor- und Entwickler-Werkzeuge, lokale Dateien, lokale Datenbanken. Custom Connectors über die Claude-UI sind der saubere Weg für alle Server, die zentral verfügbar sein sollen, Mehrnutzer-Szenarien bedienen oder ohnehin als Cloud-Service existieren.
Der schwierigere Teil ist nicht die Konfiguration, sondern die Disziplin dahinter: Authentifizierung sauber lösen, Server produktionsreif machen, Logs und Audit ernst nehmen, Tools mit guten Beschreibungen und klaren Side-Effect-Markierungen versehen. Wer diese Punkte beim ersten produktiven Server adressiert, hat ein Fundament, das mit jedem weiteren Server skaliert.
Wer heute mit MCP in Claude Desktop einsteigt, ist deutlich später am Ziel als noch vor einem Jahr — und gleichzeitig deutlich näher dran an einer Plattform-Reife, auf die sich die nächste Welle von Werkzeugen und Integrationen anlagern lässt.


