Einen eigenen MCP-Server schreiben
Ein MCP-Server macht Tools, Daten oder Vorlagen für jeden MCP-fähigen Client verfügbar – von Claude Code bis Antigravity.
Drei Bausteine
Ein MCP-Server bietet einem Client wie Claude Code oder Antigravity drei Arten von Fähigkeiten an: Tools (Funktionen, die das Modell aktiv aufruft, z. B. eine Datenbank-Abfrage), Resources (passive Daten wie Dateien oder API-Antworten, die die Anwendung bereitstellt) und Prompts (fertige Vorlagen, die Nutzer:innen gezielt auswählen).
Minimaler Ablauf
Ein Server läuft als eigener Prozess und spricht mit dem Client über ein festgelegtes Protokoll (typischerweise Standard-I/O oder HTTP). Der Client fragt beim Start tools/list ab, bekommt eine Liste von Tool-Definitionen mit JSON-Schema für die Parameter zurück und ruft bei Bedarf tools/call mit den passenden Argumenten auf. Dein Server muss also nur: Tools mit Namen, Beschreibung und Eingabe-Schema registrieren, und bei einem Aufruf das Ergebnis zurückgeben.
Offizielle SDKs
Die Organisation modelcontextprotocol pflegt offizielle SDKs für Python, TypeScript, Java, Kotlin, C#, Go, PHP, Ruby, Rust und Swift – du musst das Protokoll nicht von Hand implementieren.
Anbindung an einen Client
Ein fertiger Server wird in der Konfiguration des Clients eingetragen (z. B. mcpServers in Claude Code oder mcp_config.json in Antigravity), meist mit Befehl und Argumenten zum Starten des Serverprozesses. Danach taucht er im MCP-Manager des Clients auf, und seine Tools stehen dem Modell zur Verfügung.
BEISPIEL
Minimaler Python-Server-Kern (mit dem offiziellen SDK): Ein `@mcp.tool()`-Dekorator registriert eine Funktion `get_forecast(latitude, longitude)` als Tool – der Client entdeckt sie automatisch über `tools/list` und ruft sie bei Bedarf auf.
🛠️ ÜBUNG — MACH DAS BEI DIR
Baue mit einem offiziellen MCP-SDK (z. B. Python) einen minimalen Server mit genau einem Tool und verbinde ihn mit einem MCP-fähigen Client.
- Installiere das offizielle SDK für deine Sprache und lege einen Server mit einem einzigen Tool an (z. B. eine Funktion, die das aktuelle Datum zurückgibt).
- Trage den Server in die MCP-Konfiguration deines Clients ein (z. B. Claude Code oder Antigravity) mit Startbefehl und Argumenten.
- Öffne den MCP-Manager im Client (z. B. /mcp), prüfe ob der Server verbunden ist, und lass das Modell dein Tool aufrufen.
✅ SELBST-CHECK
- ☐ Hat der Client dein Tool über tools/list automatisch erkannt, ohne dass du es manuell eingetragen hast?
- ☐ Was passiert, wenn dein Server-Prozess (bei STDIO-Transport) versehentlich auf stdout statt stderr loggt?
- ☐ Könntest du denselben Server jetzt auch in einem anderen MCP-Client anbinden, ohne ihn neu zu schreiben?
KURZ-QUIZ
Was unterscheidet ein MCP-„Tool" von einer MCP-„Resource"?
QUELLEN
- MCP-Doku: Build an MCP server ↗ modelcontextprotocol.io
- MCP-Doku: Understanding MCP servers (Tools/Resources/Prompts) ↗ modelcontextprotocol.io
- GitHub: modelcontextprotocol-Organisation (offizielle SDKs) ↗ github.com