WissenClaude Code & Vibe Coding

Claude Code eigenen MCP-Server bauen, Schritt für Schritt

Ein eigener MCP-Server öffnet Claude Code für deine interne API oder Datenbank. Die vier Schritte von der ersten Werkzeugdefinition bis zum laufenden Server.

Tommy Hummel-Nguyen
Tommy Hummel-Nguyen · Ingenieur, kein Softwareentwickler ·

Ein MCP-Server ist ein Adapter zwischen zwei Steckern, die nicht zueinander passen. Claude Code spricht ein festes Protokoll, MCP genannt, deine interne API oder Datenbank spricht ihr eigenes. Der Server übersetzt dazwischen, und danach kann Claude deine eigenen Werkzeuge genauso selbstverständlich nutzen wie seine eingebauten.

Kurz gesagt

Einen eigenen MCP-Server für Claude Code baust du mit dem offiziellen TypeScript-SDK, das die Protokollkommunikation übernimmt. Du definierst pro Werkzeug einen Namen, eine Beschreibung und ein Eingabeschema, startest den Server über den stdio-Transport lokal, und meldest ihn mit einem Terminalbefehl bei Claude Code an. Der ganze Weg von der ersten Zeile bis zum funktionierenden Server passt in eine Stunde, sobald das Muster einmal sitzt.

Was du vorher brauchst

Node.js und das Paket @modelcontextprotocol/sdk, das Anthropic pflegt. Das SDK übernimmt die komplette Protokollebene, du schreibst nur die Definitionen deiner Werkzeuge und die Handler dahinter, keinen eigenen Code für die Übertragung. Jedes Werkzeug bekommt einen eindeutigen Namen, eine Beschreibung, die Claude erklärt wofür es gut ist, und ein Eingabeschema, typischerweise mit Zod definiert, damit fehlerhafte Aufrufe schon vor der Ausführung auffallen.

Die vier Schritte vom leeren Projekt zum laufenden Server

1. SDK installieren und ein Werkzeug definieren

Ein neues Node-Projekt, @modelcontextprotocol/sdk installieren, dann ein erstes Werkzeug schreiben. Für den Einstieg reicht etwas Kleines, etwa ein Werkzeug, das eine interne Kundennummer nachschlägt. Wichtig ist eine klare Beschreibung, sie entscheidet, ob Claude das Werkzeug später zur richtigen Zeit überhaupt in Betracht zieht.

2. Server lokal über stdio starten

Für Werkzeuge, die auf deinem eigenen Rechner laufen sollen, etwa ein Datenbankzugriff, ist stdio der richtige Transport. Claude Code startet den Server dabei selbst als Kindprozess und beendet ihn wieder, wenn du die Sitzung schließt. Für gehostete Dienste, die mehrere Nutzer gleichzeitig ansprechen, ist HTTP die passendere Wahl, mit einer festen Adresse statt eines lokalen Prozesses.

3. Mit claude mcp add verbinden

claude mcp add --transport stdio meinserver -- node ./server.js

Das doppelte Minuszeichen trennt die eigenen Optionen von Claude Code von den Argumenten deines Servers. Braucht dein Server Zugangsdaten, kommen sie über --env, etwa --env API_KEY=dein-schluessel, statt sie im Code hart zu hinterlegen. Für Dienste mit OAuth gibt es einen eigenen Befehl, claude mcp login servername, der die Anmeldung übernimmt.

4. Scope wählen, damit der Server bleibt wo er hingehört

Ohne weitere Angabe landet ein neuer Server im lokalen Scope, gespeichert in ~/.claude.json, sichtbar nur für dich und nur in diesem einen Projekt. Der Scope project legt die Verbindung stattdessen in einer .mcp.json im Projekt-Repository ab, die mit eingecheckt wird, damit dein ganzes Team denselben Server bekommt. Der Scope user macht den Server projektübergreifend für alle deine eigenen Arbeiten verfügbar. Die Wahl ist keine Kleinigkeit, ein versehentlich projektweit freigegebener Server mit deinen persönlichen Zugangsdaten landet sonst im geteilten Repository.

Testen, bevor du dich darauf verlässt

Mit /mcp direkt in Claude Code siehst du, welche Server aktiv sind und ob die Verbindung wirklich steht, mit claude mcp list dasselbe im Terminal. Ein Server, der lokal beim direkten Testen funktioniert, aber bei Claude Code keine Verbindung aufbaut, liegt fast immer an einem falsch gesetzten Arbeitsverzeichnis oder einer fehlenden Umgebungsvariable, nicht am Protokoll selbst.

Ich denke, der Punkt, an dem sich ein eigener Server wirklich lohnt, ist nicht die erste Idee, sondern die zweite Wiederholung. Für einen einzelnen API-Aufruf reicht oft ein einfacher Prompt mit den Zugangsdaten im Kontext. Ein eigener MCP-Server zahlt sich aus, sobald du dasselbe Werkzeug über mehrere Projekte oder mit deinem Team teilst, genau wie bei Subagenten lohnt sich die zusätzliche Struktur erst ab echter Wiederholung.

Quellen: Connect Claude Code to tools via MCP (Claude Code Docs) · TypeScript SDK für das Model Context Protocol (GitHub, modelcontextprotocol)

Häufige Fragen

Brauche ich für einen eigenen MCP-Server unbedingt TypeScript?

Nein, es gibt offizielle SDKs auch für Python und andere Sprachen. TypeScript hat aktuell die meisten Tutorials und die engste Anbindung an Claude Code, deshalb ist es der übliche Einstieg.

Was ist der Unterschied zwischen stdio und HTTP als Transport?

Stdio startet den Server als lokalen Prozess auf deinem Rechner, gut für eigene Tools und Datenbankzugriffe. HTTP verbindet zu einem entfernten Server mit fester Adresse, das passt für gehostete Dienste, die mehrere Nutzer teilen.

Kann mein Team denselben MCP-Server nutzen wie ich?

Ja, über den project-Scope. Die Konfiguration landet dann in einer Datei im Projekt-Repository, die mit eingecheckt wird, statt nur lokal bei dir zu liegen.

Muss ich mich um Authentifizierung selbst kümmern?

Für eigene APIs ja, meist über eine Umgebungsvariable mit einem Schlüssel. Für Dienste mit OAuth übernimmt Claude Code die Anmeldung über einen eigenen Befehl, ohne dass du den Ablauf selbst bauen musst.

Willst du das bei dir umsetzen?

In der Community zeige ich, was bei mir hält. Im Erstgespräch schauen wir uns dein Vorhaben konkret an.