MCP-Server anbinden
Wissen
Dein Agent hat jetzt einen System Prompt und eine Tool-Definition. Aber bisher ist das Tool nur eine Beschreibung -- es tut noch nichts. In diesem Schritt verbindest du deinen Agent mit einem echten MCP-Server, sodass er reale Fähigkeiten bekommt.
Warum MCP statt eigener Tool-Implementierung?
Du könntest jedes Tool selbst implementieren -- eine Funktion schreiben, die Dateien liest, eine die APIs aufruft, eine die Datenbanken abfragt. Aber das skaliert nicht. MCP (Model Context Protocol) löst dieses Problem:
- Wiederverwendbarkeit: Ein MCP-Server kann von jedem Agent genutzt werden, egal welches Framework
- Standardisierung: Einheitliche Schnittstelle für alle Tools
- Ökosystem: Hunderte fertige MCP-Server für gängige Dienste (GitHub, Slack, Datenbanken, Dateisysteme)
- Entkopplung: Der Agent muss nicht wissen, wie ein Tool intern funktioniert
MCP-Server als Tool registrieren
Die Anbindung läuft in drei Schritten:
Schritt 1 -- MCP-Server auswählen oder starten
# Beispiel: Einen lokalen Dateisystem-MCP-Server starten
npx @modelcontextprotocol/server-filesystem /pfad/zum/projekt
Schritt 2 -- Client-Verbindung konfigurieren
# Python mit MCP Client
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# Server-Konfiguration
server_params = StdioServerParameters(
command="npx",
args=[
"@modelcontextprotocol/server-filesystem",
"/pfad/zum/projekt"
]
)
# Verbindung herstellen
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# Session initialisieren
await session.initialize()
# Verfügbare Tools abfragen
tools = await session.list_tools()
print(f"Verfügbare Tools: {[t.name for t in tools.tools]}")
Schritt 3 -- Tools im Agent verfügbar machen
# MCP-Tools in das Anthropic-Format konvertieren
def mcp_to_anthropic_tools(mcp_tools):
return [
{
"name": tool.name,
"description": tool.description,
"input_schema": tool.inputSchema
}
for tool in mcp_tools.tools
]
# Dem Agent die MCP-Tools geben
anthropic_tools = mcp_to_anthropic_tools(tools)
Verstehen
Die Konfigurationsdatei
In der Praxis konfigurierst du MCP-Server über eine JSON-Datei. Das ist derselbe Ansatz, den Claude Code, Cursor und andere Tools nutzen:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"@modelcontextprotocol/server-filesystem",
"/pfad/zum/projekt"
]
},
"github": {
"command": "npx",
"args": ["@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
}
}
}
}
Verbindung testen
Bevor du den Agent losschickst, teste immer die Verbindung:
# Schnelltest: Kann der Agent den Server erreichen?
async def test_mcp_connection(session):
try:
tools = await session.list_tools()
print(f"Verbindung OK. {len(tools.tools)} Tools verfügbar:")
for tool in tools.tools:
print(f" - {tool.name}: {tool.description[:60]}...")
return True
except Exception as e:
print(f"Verbindung fehlgeschlagen: {e}")
return False
Typische Fehlerquellen:
- Der MCP-Server ist nicht gestartet oder nicht installiert
- Fehlende Umgebungsvariablen (z.B. API-Tokens)
- Falscher Pfad in der Konfiguration
- Firewall blockiert die Kommunikation
Anwenden
Vervollständige die MCP-Server-Konfiguration für einen GitHub-Server:
Reflektieren
Was ist der größte Vorteil von MCP gegenüber selbst implementierten Tool-Funktionen?