
Wie entwickelt man einen eigenen MCP-Server mit Tools und Resources?
Direkte Antwort
Ein MCP-Server wird mit einem der offiziellen SDKs (TypeScript, Python) implementiert, registriert dort Tools als aufrufbare Funktionen mit typisiertem Input-Schema, stellt bei Bedarf Resources für strukturierten Datenzugriff bereit, und kommuniziert über stdio oder HTTP mit dem MCP-Client, der den Server in eine Agenten-Session einbindet.
"Die Qualität eines MCP-Servers entscheidet sich nicht am Protokoll, sondern daran, wie klar die Tool-Beschreibungen für das aufrufende Modell formuliert sind.
Der praktische Aufbau eines MCP-Servers ist unkomplizierter als es die anfängliche Protokoll-Dokumentation vermuten lässt — die eigentliche Arbeit liegt in sauberem Tool-Design, nicht im Protokoll selbst.
Tool-Definitionen als Vertrag mit dem Modell
Jedes Tool braucht einen eindeutigen Namen, eine präzise Beschreibung und ein Input-Schema, meist als JSON Schema. Das Modell entscheidet allein anhand dieser Beschreibung, ob und wie es das Tool aufruft.
Eine vage Beschreibung wie "sucht Daten" führt zu unzuverlässigen Aufrufen; eine präzise Beschreibung wie "sucht Kundendatensätze anhand von Name oder Kundennummer und gibt maximal 20 Treffer zurück" reduziert Fehlaufrufe erheblich, weil das Modell die Grenzen des Tools versteht.
Resources für strukturierten, schreibgeschützten Zugriff
Resources unterscheiden sich von Tools dadurch, dass sie Daten bereitstellen, ohne eine Aktion auszulösen — etwa der Inhalt einer Konfigurationsdatei oder ein Datenbank-Schema.
Diese Trennung ist wichtig für die Sicherheitsarchitektur: Resources sollten nie versteckte Seiteneffekte haben, während Tools explizit als aktionsauslösend gekennzeichnet sein müssen, damit ein Client vor kritischen Aktionen eine Bestätigung einholen kann.
Fehlerbehandlung und Betriebsreife
Ein produktionsreifer MCP-Server muss Fehler strukturiert zurückgeben, statt Exceptions durchzureichen, Rate-Limits gegenüber der angebundenen Datenquelle respektieren und Zugriffsrechte pro aufrufendem Kontext prüfen.
Gerade dieser letzte Punkt wird in ersten Implementierungen häufig übersehen — ein MCP-Server, der mit den vollen Rechten eines Service-Accounts läuft, kann zu weitreichenderen Aktionen führen, als der Nutzer der aufrufenden Anwendung eigentlich autorisiert ist.
Schritt-für-Schritt
- 1
SDK wählen und Grundgerüst aufsetzen
Mit dem offiziellen TypeScript- oder Python-SDK ein Server-Grundgerüst erzeugen, das stdio oder HTTP-Transport unterstützt.
- 2
Tools definieren
Für jede gewünschte Aktion ein Tool mit Name, Beschreibung und Input-Schema registrieren, die Beschreibung so präzise wie möglich formulieren.
- 3
Resources ergänzen
Falls reiner Datenzugriff ohne Aktion gebraucht wird, Resources mit eindeutigen URIs bereitstellen.
- 4
Rechte- und Fehlerbehandlung einbauen
Zugriffsprüfung pro Aufruf implementieren und Fehler als strukturierte Antworten statt als Absturz zurückgeben.
- 5
Lokal testen und mit einem Client verbinden
Den Server über den MCP Inspector oder direkt in einer Client-Anwendung wie Claude Desktop testen, bevor er in eine produktive Agenten-Umgebung eingebunden wird.