Wann man dazu greift
- Tools und Datenquellen über verschiedene Frameworks hinweg nutzbar sein müssen.
- Lokale oder externe Systeme verbunden werden müssen.
- Kontextzugriff standardisiert werden soll.
/pattern/mcp/
Externe Ressourcen und Tools werden über das Model Context Protocol als standardisierte Integrationsschicht bereitgestellt.
In der PraxisEin Coding-Assistent verbindet sich über eine einzige MCP-Transportschicht mit einem lokalen Dateisystem-Server und einem entfernten GitHub-Server, ohne für jeden einen eigenen Integrationscode zu schreiben.
Wann man dazu greift
Wann es nach hinten losgeht
Die Abwägung
Breite Interoperabilität wird auf Kosten zusätzlichen Betriebs- und Berechtigungsverwaltungsaufwands gewonnen.
Stell dir eine universelle Steckdose vor. Vor MCP hatte jedes Tool, das ein Agent nutzen wollte, seinen eigenen Stecker — ein anderes SDK, Schema und Auth-Modell. N Agenten an M Tools anzubinden bedeutete N×M maßgeschneiderte Integrationen.
MCP reduziert das auf N + M. Ein Tool-Autor schreibt einen Server; eine Agenten-Runtime liefert einen Client. Jedes Tool, das das Protokoll spricht, lässt sich an jeden Agenten anschließen, der es spricht — ohne maßgeschneiderte Verdrahtung. Es ist, in Anthropics Worten, „ein USB-C-Port für KI-Anwendungen.“
Ein Standardprotokoll verbindet Host und Tool-Server.
MCP folgt einer Client-Server-Architektur, die vom Language Server Protocol übernommen wurde. Ein Host betreibt einen oder mehrere Clients; jeder Client hält eine dedizierte Verbindung zu einem Server. Nachrichten sind JSON-RPC 2.0, übertragen über stdio bei lokalen Servern oder Streamable HTTP bei entfernten.
initialize → Capability-Aushandlung → Discovery → Betrieb
Die KI-Anwendung, die der Nutzer tatsächlich bedient — Claude Desktop, ein IDE-Plugin oder deine Agenten-Runtime. Sie besitzt das LLM, die Konversation und die Entscheidung, ein Tool zu nutzen. Sie startet Clients nach Bedarf.
Ein Konnektor innerhalb des Hosts, der eine 1:1 zustandsbehaftete Sitzung mit genau einem Server unterhält. Er führt den Handshake durch, leitet Anfragen weiter und hält die Capabilities synchron.
Ein Programm — lokal oder entfernt —, das Capabilities über MCP bereitstellt. Der Tool-Autor schreibt es einmal; jeder konforme Client kann dann entdecken und aufrufen, was es anbietet.
Ausführbare Funktionen, die das Modell aufrufen kann, um eine Aktion durchzuführen oder Live-Daten abzurufen. Entdeckt über tools/list, aufgerufen über tools/call.
Schreibgeschützte Kontextdaten, identifiziert per URI — Dateien, Zeilen, Dokumente —, die der Host ohne Aktion in das Kontextfenster des Modells ziehen kann.
Wiederverwendbare, parametrisierte Vorlagen, die der Server anbietet — dem Nutzer als Slash-Befehle oder Menüaktionen präsentiert, die einen bekannten Workflow vorpaketieren.
Die Verbindung läuft in beide Richtungen. Ein Server kann auch in den Host zurückrufen, über sampling (das LLM des Hosts um eine Vervollständigung bitten), elicitation (den Nutzer um weitere Eingaben bitten) und roots (erfahren, welche Dateisystemgrenzen er berühren darf). Diese Zwei-Wege-Fähigkeit ist es, die MCP von einer einfachen Tool-Calling-API unterscheidet.
# server.py — expose a database as an MCP server
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("support-tickets")
@mcp.tool()
def query_tickets(sql: str) -> list[dict]:
"""Run a read-only SQL query against the tickets database."""
return db.execute(sql).fetchall()
@mcp.resource("postgres://schema/tickets")
def schema() -> str:
"""The tickets table schema, so the model can read column names."""
return open("schema.sql").read()
if __name__ == "__main__":
# stdio for local; switch to transport="streamable-http" for remote
mcp.run(transport="stdio")Zwei offene Protokolle überqueren die Grenze eines einzelnen Frameworks. MCP standardisiert, wie ein Agent mit einem Tool spricht; A2A standardisiert, wie ein Agent mit einem anderen Agenten spricht. Häufig werden beide eingesetzt.
Teams exponieren interne Datenbanken über MCP ohne Authentifizierungsprüfungen und behandeln die Protokollschicht als Sicherheitsgrenze.
Lösung · Authentifizierung auf der MCP-Server-Ebene erzwingen, nicht nur auf dem Transport. Jede exponierte Ressource auf Minimalrechte prüfen.
Der MCP-Server ändert sein Schema wöchentlich. Client-Agenten brechen, weil sie an einer veralteten Tool-Definition hängen.
Lösung · MCP-Schemas versionieren und ein Kompatibilitätsfenster unterstützen. Clients ablehnen, die keinen Versions-Header deklarieren.
Ein Client bindet ein Dutzend Server ein; das Modell sieht nun 80 Tools und wählt das falsche — oder verharrt bei der Auswahl.
Lösung · Nur die Server einbinden, die eine Aufgabe benötigt. Tools pro Route eingrenzen und Namen sowie Beschreibungen eindeutig halten.
Nächstes Pattern
Patterns, Frameworks und Seiten durchsuchen.