Agents IA & Automation

Model Context Protocol (MCP) mit Claude: Vollständiger Implementierungsleitfaden

9 Min. Lesezeit

Implementiere das Model Context Protocol (MCP) von Anthropic mit Claude für leistungsstarke KI-Agenten. Praktische Anleitung mit Code-Beispielen.

Entwickler implementiert TypeScript-API-Integration auf dunklem Bildschirm mit mehreren Fenstern

Das Model Context Protocol (MCP) ist der neue Standard von Anthropic, um Claude-Agenten mit deinen Tools, Datenbanken und Business-Services zu verbinden. Offiziell im Juni 2026 gestartet und in Claude Sonnet 5 integriert, ermöglicht MCP deinen KI-Agenten, direkt auf deine Daten zuzugreifen, ohne fehlerhafte Integrationen oder API-Hacks zu benötigen.

Wenn du 2026 KI-Agenten buildest, ist MCP nicht mehr optional, es ist die Grundlage. Hier ist, wie du es implementierst.

Was ist das model context protocol wirklich?

MCP ist keine neue API zum Aufrufen von Claude (das hast du bereits). Es ist ein Interoperabilitätsprotokoll, das definiert, wie eine Client-Anwendung (Claude, Cursor, Grok Build oder deine eigene KI) sich mit MCP-Servern verbindet, die Tools, Ressourcen und Daten verfügbar machen.

Analogie: MCP ist für Claude das, was Plugins für einen Browser sind. Nur dass es standardisiert, bidirektional und für KI konzipiert ist.

Schlüsselkomponenten:

  • MCP-Client: Claude, dein KI-Agent oder deine Anwendung
  • MCP-Server: Endpoint, der Tools und Ressourcen verfügbar macht
  • Ressourcen: Daten, die der Server bereitstellt (Datenbank, Dateien, API)
  • Tools: Funktionen, die der Agent aufrufen kann, um eine Aktion auszuführen
  • Prompts: Wiederverwendbare Templates, um Claude zu leiten

Das ist genau das, was Simple Booking im Juni 2026 getan hat, sie haben einen MCP-Server gebaut, der ihr CRS-Reservierungssystem verfügbar macht, und jetzt kann Claude Hotelreservierungen direkt abfragen/ändern.

Architektur: wie es zusammenpasst

Vor MCP war die Architektur chaotisch:

Claude (über API)
    ↓ [manuelles Prompt Engineering]
    ↓ [Tool-Use-Aufruf]
Anwendung -> [Du parst die Antwort] -> Benutzerdefinierte Integration
    ↓
Datenbank

Mit MCP:

Claude (über MCP-Client)
    ↓
MCP Client Protocol (standardisiertes JSON-RPC)
    ↓
Dein MCP-Server
    ↓ [automatische Wiederverbindung]
    ↓
Deine Tools (Funktionen), Ressourcen (Daten), Prompts

Der Claude-Agent kann jetzt:

  • Deine Ressourcen direkt abfragen: „Wie viele Bestellungen sind ausstehend?" -> MCP-Anfrage -> deine Datenbank
  • Deine Tools atomisch aufrufen: „Erstelle eine Rechnung" -> MCP-Tool-Aufruf -> deine Business-Logik
  • Optimierte Prompts wiederverwenden: use_mcp_resource("context_billing") -> konsistentes Template über alle Agenten

Wie man einen minimalen MCP-server implementiert

Das MCP-Protokoll verwendet JSON-RPC 2.0 über stdio oder HTTP. Hier ist ein minimaler Server in Python, der eine PostgreSQL-Datenbank verfügbar macht:

from MCP.server import Server
from MCP.types import Tool, Resource, TextContent
import asyncio
import psycopg2

app = Server("my-database-server")

# Deklariere eine Ressource: die Liste der Kunden
@app.resource("db://customers")
async def get_customers():
    conn = psycopg2.connect("dbname=mydb user=postgres")
    cur = conn.cursor()
    cur.execute("SELECT id, name, email FROM customers LIMIT 100")
    rows = cur.fetchall()
    conn.close()
    
    return TextContent(
        type="text/plain",
        text="\\n".join([f"ID: {r[0]}, Name: {r[1]}, Email: {r[2]}" for r in rows])
    )

# Deklariere ein Tool: erstelle eine neue Bestellung
@app.tool("create_order")
async def create_order(customer_id: int, items: list, total: float):
    conn = psycopg2.connect("dbname=mydb user=postgres")
    cur = conn.cursor()
    cur.execute(
        "INSERT INTO orders (customer_id, items, total, status) VALUES (%s, %s, %s, %s)",
        (customer_id, str(items), total, "pending")
    )
    conn.commit()
    order_id = cur.lastrowid
    conn.close()
    
    return f"Order {order_id} created successfully"

if __name__ == "__main__":
    asyncio.run(app.run())

Das sind 30 Zeilen. Kein manuelles Parsing, kein kompliziertes Prompt Engineering. Claude weiß jetzt, dass er:

  1. get_customers aufrufen kann, um Kunden zu sehen
  2. create_order(customer_id, items, total) aufrufen kann, um eine Bestellung zu erstellen

Aber warte, hier ist eine Falle. Du machst deine Datenbank direkt zugänglich. Was ist, wenn Claude eine ungültige customer_id halluziniert? Du musst Validierung hinzufügen:

@app.tool("create_order")
async def create_order(customer_id: int, items: list, total: float):
    # Validierung: Existiert der Kunde wirklich?
    conn = psycopg2.connect("dbname=mydb user=postgres")
    cur = conn.cursor()
    cur.execute("SELECT id FROM customers WHERE id = %s", (customer_id,))
    if not cur.fetchone():
        return f"Error: customer {customer_id} does not exist"
    
    # Fahre mit der Bestellerstellung fort...

Ehrliche Limitation: Je mehr Funktionalität du über MCP verfügbar machst, desto mehr verlässt du dich darauf, dass Claude gute Entscheidungen trifft. Ein schlecht geleiteter Agent kann trotzdem Schaden anrichten. Du brauchst:

  • Rate Limiting bei gefährlichen Tools
  • Logging und Audit Trails
  • Sehr klare System Prompts über Business-Constraints
  • Chaos-Tests, um zu sehen, was passiert, wenn Claude ein Tool mit seltsamen Inputs aufruft

Claude sonnet 5 mit deinem MCP-server verbinden

Sobald dein MCP-Server aktiv ist, rufst du ihn über das Claude SDK auf. Claude Sonnet 5 (gestartet am 30. Juni 2026) hat native MCP-Unterstützung integriert.

from anthropic import Anthropic

client = Anthropic()

# Konfiguriere den MCP-Server für diese Sitzung
mcp_config = {
    "servers": {
        "my_database": {
            "command": "python",
            "args": ["./mcp_server.py"],
            "env": {"DATABASE_URL": "postgresql://..."}
        }
    }
}

response = client.messages.create(
    model="claude-sonnet-5",  # Neu, gestartet am 30. Juni 2026
    max_tokens=2048,
    tools=[
        # MCP-Tools werden automatisch von Servern entdeckt
    ],
    messages=[
        {
            "role": "user",
            "content": "Erstelle eine Bestellung für Kunde #42: 2x Produkt A, 1x Produkt B. Gesamtbetrag: 150€"
        }
    ]
)

# Claude wird jetzt:
# 1. Die Benutzernachricht analysieren
# 2. Überprüfen, dass er Zugriff auf das Tool "create_order" über MCP hat
# 3. create_order(customer_id=42, items=[...], total=150) aufrufen
# 4. Die Antwort vom MCP-Server erhalten
# 5. Den Dialog fortsetzen

Claude Sonnet 5 fügt auch verbesserte agentic loops hinzu, er kann mehrere Tools nacheinander aufrufen, ohne dass dein Code bei jedem Mal dazwischengehen muss. Nützlich für: „Hole ausstehende Bestellungen, erstelle Rechnungen für jede, dann sende eine E-Mail."

Echte use cases in der produktion

1. Hotel-Integrationen (Simple Booking, Juni 2026)

Simple Booking stellt sein CRS-Reservierungssystem über MCP zur Verfügung. Reisebüros nutzen Claude für:

  • „Welche Suiten sind am 15. August im Hotel in Lyon verfügbar?" -> Claude fragt MCP ab -> Echtzeit-Antwort
  • „Reserviere Suite 42 für die Duponts vom 15. bis 20. August" -> Claude ruft das Reservierungs-Tool auf

Vor MCP: benutzerdefinierte Webhooks. Jetzt: ein standardisierter MCP-Server, und jedes MCP-kompatible Tool kann es nutzen, ohne die Integration neu zu implementieren.

2. Media-Buying-Automatisierung (Nexxen, Juni 2026)

Nexxen stellt seine Kampagnenparameter, Budgets und Zielgruppen über MCP zur Verfügung. Agenturen bauen Claude-Agenten, die:

  • Kampagnenleistung analysieren („Unser CPM sinkt, warum?")
  • Budgets automatisch anpassen („Ordne 20% des Budgets der Premium-Zielgruppe zu")
  • Neue Kampagnen basierend auf Text-Briefs erstellen

Vorher: Zapier-Integration + benutzerdefinierte Scripts. Jetzt: ein MCP-Server, fertig.

**3. Dein Use Case: E-Commerce-Content-Management

Du hast einen Shopify-Shop oder ein benutzerdefiniertes Produktsystem. Baue einen MCP-Server, der verfügbar macht:

  • Ressource: inventory/sku-123 -> Bestandsmenge
  • Ressource: products/all -> Vollständiger Katalog
  • Tool: update_product_description(sku, new_desc) -> aktualisiert deine Datenbank
  • Tool: create_bundle(products, discount) -> erstellt ein Bundle
  • Prompt: context_catalog_refresh -> Anweisungen für Claude, wenn du ihn auffordest, 100 Produktbeschreibungen zu überarbeiten

Konkretes Beispiel: Du sagst Claude „Überprüfe alle Produktbeschreibungen und korrigiere Fehler, verbessere SEO, füge Maße in cm hinzu". Claude:

  1. Fragt products/all über MCP ab
  2. Analysiert die 200 Beschreibungen
  3. Ruft für jedes Produkt update_product_description(sku, new_desc) auf
  4. Erstellt einen Bericht

Menschliche Zeit: 10 Minuten Aufsicht. Vorher: ein voller Tag für dein Team.

Berechtigungsverwaltung und sicherheit

Ein großes Risiko: Wenn Claude Zugriff auf alle deine Tools hat, könnte er eine gefährliche Funktion aufrufen. Füge Kontrollmechanismen hinzu:

1. Begrenzte Tools nach Use Case

# Statt "delete_order" global verfügbar zu machen
@app.tool("delete_order", scopes=["admin_only"])
async def delete_order(order_id: int):
    # Benötigt spezielle Berechtigung
    pass

2. Rate Limiting

from functools import wraps

def rate_limit(max_calls=10, period=60):
    def decorator(func):
        calls = []
        async def wrapper(*args, **kwargs):
            now = time.time()
            calls = [c for c in calls if c > now - period]
            if len(calls) >= max_calls:
                raise Exception("Rate limit exceeded")
            calls.append(now)
            return await func(*args, **kwargs)
        return wrapper
    return decorator

@app.tool("create_order")
@rate_limit(max_calls=50, period=3600)
async def create_order(...):
    pass

3. Umfassendes Logging

import logging

logger = logging.getLogger("mcp_audit")

@app.tool("delete_order")
async def delete_order(order_id: int):
    logger.warning(f"Claude called delete_order({order_id}) - action requires approval")
    # Optional: Frage um menschliche Bestätigung, bevor du löschst
    return "Deletion queued for human approval"

Entwerfe einen produktionsreifen und sicheren MCP-Server

Einen MCP-server in der produktion bereitstellen

Zwei Ansätze:

1. Stdio (für schnelle Entwicklung)

Dein MCP-Server läuft als untergeordneter Prozess des Claude-Clients. Einfach, aber begrenzt für Skalierbarkeit.

{
  "servers": {
    "my_server": {
      "command": "python",
      "args": ["./mcp_server.py"]
    }
  }
}

2. HTTP mit Authentifizierung (für Produktion)

{
  "servers": {
    "my_server": {
      "url": "HTTPS://MCP.mycompany.com",
      "auth": {
        "type": "bearer",
        "token": "sk_live_..."
      }
    }
  }
}

Dein MCP-Server hört auf einem sicheren HTTPS-Endpoint mit SSL-Zertifikaten und Rate Limiting am Gateway.

Empfohlene Bereitstellung:

  • MCP-Server: Docker auf ECS/K8s, hinter einem Load Balancer
  • Datenbank: PostgreSQL oder MongoDB, streng in privater VPC
  • Monitoring: CloudWatch, strukturierte JSON-Logs, Alerts bei Fehlern
  • Versionierung: Versioniere deine MCP-Ressourcen und Tools (z.B. /API/v1/resources)

Häufig gestellte fragen

Was ist der unterschied zwischen MCP und klassischem tools-calling von claude?

Tools-Calling (function_calling im Claude SDK) erlaubt Claude bereits, Funktionen aufzurufen. MCP ist eine Abstraktionsschicht darüber, die standardisiert, wie Tools entdeckt, aufgerufen und verwaltet werden.

Ohne MCP: Du sagst Claude „du kannst create_order, delete_order, update_price aufrufen" und übergibst die Schemas manuell.

Mit MCP: Dein MCP-Server stellt die Tools zur Verfügung, Claude entdeckt sie automatisch, und jeder MCP-Client (Claude, Cursor, deine App) kann sie nutzen, ohne die Integration neu zu implementieren.

Übertrifft claude sonnet 5 claude 3 opus für agenten mit MCP?

Ja, erheblich. Claude Sonnet 5 (gestartet am 30. Juni 2026) hat besseres Reasoning für Agent-Workflows und kann komplexere Sequenzen von MCP-Aufrufen verwalten. Aber Opus bleibt mächtiger für nicht-agentic Aufgaben (Text-Analyse, kreatives Schreiben).

Für MCP-Agenten: Sonnet 5 ≥ Opus, halb so teuer.

Kann man mehrere MCP-server gleichzeitig starten?

Ja. Du kannst mehrere Server in deinem MCP-Client konfigurieren:

{
  "servers": {
    "database": { "command": "python", "args": ["./db_mcp.py"] },
    "email": { "command": "node", "args": ["./email_mcp.js"] },
    "shopify": { "url": "HTTPS://MCP.shopify.com" }
  }
}

Claude sieht alle Tools und Ressourcen aller drei Server. Achtung: Wenn zwei Server ein Tool mit demselben Namen verfügbar machen, gibt es eine Namenskollision.

Wer hostet den MCP-server, ich oder anthropic?

Du. MCP ist Open-Source und du behältst die vollständige Kontrolle. Anthropic stellt das Protokoll und den Support in Claude zur Verfügung, das ist alles.

Kann man MCP ohne anthropic verwenden?

Ja. MCP ist modellunabhängig. X hat am 30. Juni 2026 einen MCP-Server gestartet, und jeder MCP-Client (auch Nicht-Anthropic-Modelle) kann ihn nutzen.

Fazit

Das Model Context Protocol löst ein echtes Problem: Vor 2026 war jede Agent-KI-Integration eine One-Shot-Anpassung. Jetzt ist es standardisiert.

Drei Schlüsselpunkte zum Merken:

  1. MCP ist der neue Standard für KI-Agenten 2026, es ersetzt benutzerdefinierte API-Hacks
  2. Einen MCP-Server zu implementieren ist einfach, 50 Zeilen Code, um deine Tools und Daten verfügbar zu machen
  3. Claude Sonnet 5 hat die beste native MCP-Unterstützung, wenn du heute einen Agenten buildest, ist das das richtige Modell

Du buildest einen KI-Agenten für dein Business? Beginne damit, deine kritischen Daten und Tools über MCP verfügbar zu machen. Verbinde sie dann mit Claude Sonnet 5. In einer Woche automatisierst du das, was vorher einen Tag brauchte.

Brauchst du Hilfe bei der MCP-Implementierung? Wir können deine aktuelle Architektur prüfen und dir einen Integrations-Plan vorschlagen. Kontaktiere uns.

Lassen Sie uns über Ihr Projekt sprechen

Haben Sie ein Projekt in Arbeit, eine mutige Idee?
Lassen Sie uns treffen und darüber sprechen.

Kontaktieren Sie uns