Ein Entwicklerleitfaden zum Model Context Protocol (MCP)


Die Landschaft der KI-Entwicklung entwickelt sich rasant von eigenständigen, konversationellen Modellen zu hochentwickelten, agentenhaften Systemen, die in der Lage sind, mit der Welt zu interagieren. Ein kritischer Engpass in dieser Entwicklung war das Fehlen einer standardisierten Methode für KI, um auf externe Daten, Werkzeuge und Dienste zuzugreifen. Das Model Context Protocol (MCP) ist ein Open-Source-Standard, der genau dieses Problem lösen soll, indem er eine universelle Sprache zur Verfügung stellt, um große Sprachmodelle (LLMs) mit dem Kontext zu verbinden, den sie zur Durchführung komplexer, mehrstufiger Aufgaben benötigen.

Für Entwickler stellt MCP einen Paradigmenwechsel dar. Es geht über maßgeschneiderte, einmalige Integrationen hinaus zu einer wiederverwendbaren, skalierbaren und sicheren Architektur für die Erstellung leistungsstarker KI-Anwendungen. Dieser Leitfaden bietet einen umfassenden technischen Einblick in MCP und behandelt seine Kernarchitektur, fortgeschrittene Konzepte, Sicherheitsaspekte, Leistungsoptimierung und seinen Platz im breiteren KI-Ökosystem.

Ein Diagramm, das die Architektur des Model Context Protocol zeigt, mit einem Host, einem Client und einem Server, die kommunizieren.

Was ist MCP? Das „USB-C für KI“

Im Kern ist das Model Context Protocol ein offener Standard, der definiert, wie KI-Anwendungen sicher und zuverlässig mit externen Systemen kommunizieren können. Es wurde von Anthropic eingeführt, um die Fragmentierung bei KI-Werkzeugen zu beheben. Vor MCP erforderte die Verbindung eines LLM mit einer neuen Datenquelle wie einem GitHub-Repository oder einem Projektmanagement-Tool das Schreiben von benutzerdefiniertem Connector-Code für jede spezifische Anwendung. Dieser Ansatz ist ineffizient, unsicher und nicht skalierbar.

MCP, inspiriert vom Erfolg des Language Server Protocol (LSP) in der Welt der IDEs, schafft eine einheitliche Schnittstelle. Ein Entwickler kann einen einzigen „MCP-Server“ für einen Dienst (z. B. Jira) erstellen, und jeder MCP-kompatible „Host“ (wie eine KI-gestützte IDE oder eine Chat-Anwendung) kann ihn sofort verwenden. Diese „einmal erstellen, überall verwenden“-Philosophie ist der Grund, warum es oft als „USB-C für KI“ bezeichnet wird.

Die Kernarchitektur: Host, Client und Server

Das Verständnis von MCP beginnt mit seinen drei Hauptkomponenten. Das Protokoll definiert eine standardisierte, nachrichtenbasierte Kommunikationsschicht auf Basis von JSON-RPC 2.0, die sicherstellt, dass Interaktionen strukturiert und eindeutig sind.

  • MCP Host: Dies ist die primäre KI-Anwendung, mit der der Endbenutzer interagiert. Beispiele sind Visual Studio Code, Claude für den Desktop oder ein maßgeschneiderter KI-Agent. Die Rolle des Hosts besteht darin, die Benutzeroberfläche zu verwalten, das LLM auszuführen und die Sandbox-Umgebung für den Betrieb von MCP-Clients bereitzustellen.
  • MCP Client: Der Client fungiert als Connector oder Vermittler, der innerhalb des Hosts lebt. Er ist für das Entdecken, Verbinden und Kommunizieren mit einem oder mehreren MCP-Servern verantwortlich. Der Client kümmert sich um die Aushandlung von Fähigkeiten und leitet Anfragen und Antworten zwischen dem Host und den Servern weiter.
  • MCP Server: Dies ist das Arbeitspferd des Protokolls. Ein MCP-Server ist ein eigenständiger Prozess oder Dienst, der externe Daten und Funktionen für den MCP-Host bereitstellt. Sie könnten beispielsweise einen GitHub-MCP-Server haben, der Werkzeuge zum Erstellen von Issues bereitstellt, einen Google Drive-Server, der Ressourcen (Dateien) zur Verfügung stellt, oder einen benutzerdefinierten Server, der sich mit der internen Datenbank Ihres Unternehmens verbindet.

Diese Architektur schafft klare Systemgrenzen. Der Host kommuniziert niemals direkt mit dem Server; alle Interaktionen werden vom Client vermittelt, der als Gatekeeper für Sicherheit und Zustimmung fungieren kann.

Tiefer Einblick: MCP-Server-Fähigkeiten

Ein MCP-Server kann einem Client verschiedene Arten von Fähigkeiten anbieten, wie in der offiziellen MCP-Spezifikation definiert. Diese Modularität ermöglicht es Entwicklern, genau die Funktionalität bereitzustellen, die sie benötigen.

1. Werkzeuge (Tools)

Werkzeuge sind ausführbare Funktionen, die ein KI-Modell aufrufen kann, um Aktionen auszuführen. Dies ist die leistungsstärkste Funktion zur Erstellung von agentenhaften Arbeitsabläufen. Ein Werkzeug wird mit einem Namen, einer für Menschen lesbaren Beschreibung und einem JSON-Schema für seine Eingabeparameter definiert.

  • Wie es funktioniert: Das LLM des Hosts verwendet die Werkzeugbeschreibungen, um zu entscheiden, welche Funktion aufgerufen werden soll, um die Anfrage eines Benutzers zu erfüllen. Wenn ein Benutzer beispielsweise sagt: „Erstelle einen Fehlerbericht in unserem Tracker für einen Anmeldefehler“, kann das LLM ein create_issue-Werkzeug von einem Jira-MCP-Server identifizieren, die erforderlichen Parameter (title, description) extrahieren und dessen Ausführung anfordern.
  • Sicherheit: Die Zustimmung des Benutzers ist ein Kernprinzip. Hosts müssen die ausdrückliche Zustimmung des Benutzers einholen, bevor ein Werkzeug ausgeführt wird, insbesondere bei Werkzeugen, die Schreibvorgänge durchführen oder sensible Daten verarbeiten.

2. Ressourcen (Resources)

Ressourcen stellen dateiähnliche Daten oder Kontexte dar, die dem LLM zur Verfügung gestellt werden können. Dies kann alles sein, vom Inhalt einer Datei auf Ihrer lokalen Festplatte über ein Dokument aus Google Drive, ein Datenbankschema bis hin zur Ausgabe eines API-Aufrufs.

  • Wie es funktioniert: Ressourcen ermöglichen es dem LLM, Daten zu „sehen“, auf die es sonst keinen Zugriff hätte. Ein Entwickler könnte einen file_system-MCP-Server verwenden, um dem Modell den Inhalt einer bestimmten Quellcodedatei zur Verfügung zu stellen und es zu bitten, den Code zu refaktorisieren. Die Ressource wird als Kontext bereitgestellt und bereichert den Prompt, ohne dass der Benutzer manuell kopieren und einfügen muss.

3. Prompts

Prompts sind vordefinierte, wiederverwendbare Vorlagen, die vom Benutzer aufgerufen werden können, oft über Slash-Befehle (z. B. /generateApiRoute). Sie rationalisieren gängige Aufgaben, indem sie einen strukturierten Ausgangspunkt für eine Interaktion bieten.

  • Wie es funktioniert: Ein Server kann einen Prompt wie performSecurityReview registrieren, der einen filePath als Parameter entgegennimmt. Wenn der Benutzer ihn aufruft, kann der Host die Vorlage verwenden, um eine detaillierte Anfrage an das LLM zu erstellen, die die Eingabe des Benutzers mit den vordefinierten Anweisungen kombiniert.

4. Fortgeschritten: Sampling

Sampling ist eine fortgeschrittene Fähigkeit, die es einem MCP-Server ermöglicht, eine Modellvervollständigung vom Client anzufordern. Dies kehrt den typischen Fluss um und ermöglicht es dem Server, das LLM des Hosts für seine eigene interne Logik zu nutzen, wodurch leistungsstarke, kollaborative Multi-Agenten-Workflows entstehen. Beispielsweise könnte ein Server ein großes Dokument abrufen, Sampling verwenden, um das LLM zu bitten, es zusammenzufassen, und dann die prägnante Zusammenfassung als Endergebnis zurückgeben.

Erstellen Sie Ihren ersten MCP-Server: Ein praktisches Beispiel

Der beste Weg, MCP zu verstehen, ist, einen Server zu bauen. Die offizielle Dokumentation bietet SDKs für mehrere Sprachen, darunter TypeScript, Python und C#. Skizzieren wir den Prozess mit dem Python-SDK, um einen einfachen Server zu erstellen, der ein Werkzeug bereitstellt.

Der offizielle Schnellstartleitfaden führt durch die Erstellung eines Wetter-Servers, was ein ausgezeichneter Ausgangspunkt ist. Die Kernschritte sind:

  1. Richten Sie Ihre Umgebung ein: Installieren Sie das erforderliche SDK. Für Python geschieht dies normalerweise über einen Paketmanager.

    bash
    # Verwendung von uv, wie in der offiziellen Dokumentation empfohlen uv pip install "mcp[cli]"
  2. Initialisieren Sie den Server: Instanziieren Sie die Serverklasse aus dem SDK. Die FastMCP-Klasse im Python-SDK verwendet Typ-Hinweise und Docstrings, um die Werkzeugdefinitionen automatisch zu generieren.

    python
    from mcp.server.fastmcp import FastMCP # Initialisieren Sie den FastMCP-Server mcp = FastMCP("my_awesome_server")
  3. Definieren Sie ein Werkzeug: Erstellen Sie eine Funktion und dekorieren Sie sie mit @mcp.tool(). Der Docstring der Funktion ist entscheidend, da er zur Beschreibung wird, die das LLM verwendet, um zu verstehen, was das Werkzeug tut. Die Funktionssignatur und die Typ-Hinweise definieren die Parameter des Werkzeugs.

    python
    @mcp.tool() async def get_github_issue(repo: str, issue_number: int) -> str: """ Ruft Details für ein bestimmtes Issue aus einem GitHub-Repository ab. Args: repo: Der Repository-Name im Format 'owner/repo'. issue_number: Die Nummer des abzurufenden Issues. """ # Ihre Logik zum Aufrufen der GitHub-API würde hier stehen. # Für dieses Beispiel geben wir eine Scheinantwort zurück. if repo == "owner/repo" and issue_number == 123: return "Issue 123: Anmelde-Button funktioniert nicht. Status: Offen." return f"Issue {issue_number} nicht in {repo} gefunden."
  4. Führen Sie den Server aus: Fügen Sie den Einstiegspunkt hinzu, um den Serverprozess zu starten. MCP-Server können über Standard-I/O (stdio) für die lokale Ausführung oder über HTTP für den Fernzugriff kommunizieren.

    python
    if __name__ == "__main__": # Führen Sie den Server aus und kommunizieren Sie über Standard-Input/Output mcp.run(transport='stdio')

Sobald dieser Server läuft, können Sie einen MCP-Host wie VS Code oder Claude für den Desktop so konfigurieren, dass er sich damit verbindet. Wenn Sie dann die KI fragen: „Wie ist der Status von Issue 123 in owner/repo?“, kann sie intelligent entscheiden, Ihr get_github_issue-Werkzeug aufzurufen.

Kritische Sicherheitsüberlegungen für Entwickler

Obwohl MCP einen Rahmen für sichere Interaktionen bietet, liegt die Verantwortung für die Implementierung beim Entwickler. Das Protokoll selbst ist kein Allheilmittel. Wie in den offiziellen Sicherheits-Best-Practices detailliert beschrieben, müssen Entwickler auf mehrere Schlüsselrisiken achten:

  • Übermäßige Berechtigungen: Ein häufiger Fehler ist es, einem MCP-Server zu weitreichenden Zugriff auf einen Backend-Dienst zu gewähren. Ein Server, der zum Lesen von Verkaufsdaten konzipiert ist, sollte keinen Schreibzugriff auf den gesamten Unternehmensdatenspeicher haben. Halten Sie sich immer an das Prinzip der geringsten Privilegien und beschränken Sie die Berechtigungen auf das für die beabsichtigte Funktion des Servers erforderliche Minimum.
  • Indirekte Prompt-Injection: Ein Angreifer könnte eine Datenquelle (z. B. ein Dokument oder einen Datenbankeintrag) vergiften, die ein MCP-Server später abruft. Wenn diese Daten bösartige Anweisungen enthalten, könnten sie an das LLM weitergegeben werden, was möglicherweise dazu führt, dass es unbeabsichtigte Aktionen ausführt. Eingabe-Sanitisierung und Ausgabe-Kodierung sind entscheidende mildernde Kontrollen.
  • Session-Hijacking: Bei zustandsbehafteten HTTP-Implementierungen könnte ein Angreifer potenziell eine Sitzungs-ID erhalten und sie verwenden, um sich als legitimer Benutzer auszugeben. Die Spezifikation schreibt vor, dass Server keine Sitzungen zur Authentifizierung verwenden dürfen und Sitzungs-IDs an benutzerspezifische Informationen binden müssen, die von einem sicheren Token abgeleitet sind.
  • Confused-Deputy-Problem: Diese klassische Schwachstelle kann auftreten, wenn ein MCP-Server als Proxy für einen anderen Dienst fungiert. Ein Angreifer könnte den Server dazu verleiten, seine erhöhten Privilegien zu nutzen, um nicht autorisierte Aktionen durchzuführen. Eine ordnungsgemäße Validierung und Benutzerzustimmungsflüsse sind unerlässlich.

Leistungsoptimierung für MCP-Server

MCP-Server arbeiten unter anderen Leistungsbeschränkungen als herkömmliche Web-APIs. Sie bedienen hauptsächlich KI-Modelle, die ein hohes Volumen an parallelen Anfragen generieren können. Die Optimierung für dieses einzigartige Profil ist entscheidend für die Erstellung reaktionsschneller und kostengünstiger Anwendungen.

  • Token-Effizienz ist von größter Bedeutung: Jedes von Ihrem Server zurückgegebene Zeichen verbraucht das wertvolle Kontextfenster des LLM. Ausführliche JSON-Antworten mit unnötigen Feldern, langen Beschreibungen und Metadaten können den Kontext schnell erschöpfen und die Denkfähigkeit des Modells beeinträchtigen.
    • Best Practice: Kürzen Sie JSON-Payloads auf ihre wesentlichen Elemente. Geben Sie nur das zurück, was die KI für die aktuelle Aufgabe benötigt. Bei großen Datensätzen sollten Sie erwägen, strukturierten reinen Text anstelle von JSON zurückzugeben, um den Overhead zu eliminieren.
  • Minimieren Sie den Overhead der Werkzeugdefinition: Die Definitionen für alle verfügbaren Werkzeuge werden zu Beginn einer Sitzung in den Kontext des Modells geladen. Komplexe Schemata mit ausführlichen Beschreibungen können Tausende von Token verbrauchen, bevor der Benutzer überhaupt einen Prompt eingibt.
    • Best Practice: Schreiben Sie prägnante, aber klare Werkzeugbeschreibungen. Verwenden Sie Verweise auf externe Dokumentation, anstatt lange Erklärungen in das Schema selbst einzubetten.
  • Geografische Nähe ist wichtig: Die Netzwerklatenz wird bei den für MCP typischen konversationellen, mehrstufigen Interaktionen verstärkt. Ein Server, der geografisch weit von der Infrastruktur des KI-Anbieters entfernt gehostet wird, führt zu erheblichen Verzögerungen.
    • Best Practice: Hosten Sie Ihre MCP-Server in Rechenzentren, die geografisch nahe an der primären Infrastruktur der KI-Modelle liegen, die Sie ansprechen (z. B. US-Rechenzentren für Anthropic's Claude).

Ein Bild eines Code-Editors, der eine Liste verfügbarer MCP-Werkzeuge zeigt und veranschaulicht, wie sie sich in den Arbeitsablauf eines Entwicklers integrieren.

Integration mit einem agentenhaften Client: Jenova

Während das Erstellen von Servern die halbe Miete ist, benötigen Entwickler und Benutzer einen leistungsstarken Client, um sie zu nutzen. Jenova ist der erste KI-Agent, der von Grund auf für das MCP-Ökosystem entwickelt wurde. Er dient als agentenhafter Client, der es unglaublich einfach macht, sich mit entfernten MCP-Servern zu verbinden und diese in großem Maßstab zu nutzen.

Für Entwickler, die MCP-Server erstellen, bietet Jenova ein perfektes Test- und Bereitstellungsziel. Für Endbenutzer erschließt es das volle Potenzial des Protokolls. Jenova zeichnet sich in mehreren Schlüsselbereichen aus:

  • Nahtlose Server-Integration: Verbinden Sie Jenova einfach mit einem entfernten MCP-Server, und seine Werkzeuge stehen sofort für die Verwendung in komplexen Arbeitsabläufen zur Verfügung.
  • Mehrstufige agentenhafte Arbeitsabläufe: Jenova versteht übergeordnete Ziele und kann mehrstufige Aufgaben planen und ausführen, indem es Werkzeuge von verschiedenen MCP-Servern miteinander verkettet. Zum Beispiel könnte es einen GitHub-Server verwenden, um eine neue Produktfunktion zu finden, einen Berichtsserver, um eine Zusammenfassung zu erstellen, und einen Slack-Server, um das Produktteam zu benachrichtigen.
  • Skalierbare und zuverlässige Werkzeuge: Jenova basiert auf einer Multi-Agenten-Architektur und ist so konzipiert, dass es eine große Anzahl von Werkzeugen ohne Leistungseinbußen unterstützt. Dies verschafft ihm einen erheblichen Vorteil gegenüber Clients mit harten Limits für die Werkzeugkapazität, wie z. B. Cursors Obergrenze von 50 Werkzeugen, was Jenova zum fähigsten Agenten für die zuverlässige Integration von Werkzeugen in großem Maßstab macht.
  • Multi-Modell-Intelligenz: Jenova ist modellagnostisch und arbeitet mit führenden LLMs wie GPT-4, Claude 3 und Gemini zusammen, um sicherzustellen, dass Benutzer immer die bestmöglichen Ergebnisse für ihre Aufgaben erhalten.
  • Entwickelt für den Alltag: Jenova ist so konzipiert, dass auch nicht-technische Benutzer die Vorteile des MCP-Ökosystems für Aufgaben wie das Senden von Kalendereinladungen oder das Bearbeiten von Dokumenten nutzen können. Es unterstützt auch MCP vollständig auf Mobilgeräten (iOS und Android).

MCP im breiteren Ökosystem: vs. A2A und Frameworks

MCP existiert nicht im luftleeren Raum. Es ist wichtig zu verstehen, wie es sich zu anderen aufkommenden Standards und Frameworks verhält.

  • MCP vs. A2A (Agent-to-Agent Protocol): Diese Protokolle sind komplementär, nicht konkurrierend. Wie in diesem Logto-Blogbeitrag erklärt, kümmert sich MCP um die „vertikale“ Integration (wie ein Agent sich mit Werkzeugen verbindet), während das A2A-Protokoll von Google die „horizontale“ Integration übernimmt (wie verschiedene Agenten miteinander kommunizieren). Ein System könnte A2A verwenden, damit Agenten Aufgaben delegieren, während diese einzelnen Agenten MCP verwenden, um auf die zur Erledigung der Aufgaben erforderlichen Werkzeuge zuzugreifen.
  • MCP vs. Frameworks (LangChain, Semantic Kernel): Frameworks wie LangChain und Microsofts Semantic Kernel dienen der Erstellung von Agentenlogik. Sie können verwendet werden, um MCP-Hosts oder -Clients zu erstellen. Diese Frameworks können MCP-Server als Werkzeuge innerhalb ihres Ökosystems nutzen und so die Orchestrierungsleistung des Frameworks mit der standardisierten Konnektivität von MCP kombinieren.

Die Zukunft ist komponierbar

Das Model Context Protocol ist mehr als nur ein weiterer API-Standard; es ist eine grundlegende Schicht für die nächste Generation von KI-Software. Durch die Entkopplung von KI-Modellen von den von ihnen verwendeten Werkzeugen fördert MCP ein lebendiges, interoperables Ökosystem, in dem Entwickler leistungsstarke Fähigkeiten aufbauen und teilen können. Je mehr Hosts, Clients wie Jenova und Server das Protokoll übernehmen, desto näher rückt die Vision einer wirklich komponierbaren, kontextbewussten KI. Für Entwickler ist jetzt die Zeit, an dieser aufregenden neuen Grenze zu bauen.


Quellen

  1. Offizielle Website des Model Context Protocol: https://modelcontextprotocol.io/
  2. MCP Sicherheits-Best-Practices: https://modelcontextprotocol.io/specification/draft/basic/security_best_practices
  3. Protect AI - MCP Security 101: https://protectai.com/blog/mcp-security-101