Protokollgrundlagen · FastMCP · Tools/Resources/Prompts · HTTP-Deployment · Wissensdatenbank-Projekt
LLMs wirken „nicht smart genug“, weil sie externe Tools und Live-Daten nicht erreichen. Sollen Claude oder GPT Datenbanken abfragen, APIs aufrufen und Dateien lesen, ist Model Context Protocol (MCP) die offene Standardantwort. Dieser Leitfaden richtet sich an Backend- und KI-Entwickler mit Python- oder TypeScript-Erfahrung in der EU und weltweit: Von Protokollgrundlagen über Umgebungsaufbau, Registrierung von Tools, Resources und Prompts, MCP Inspector-Debugging, HTTP+SSE-Remote-Deployment bis zum persönlichen Wissensdatenbank-Projekt — inklusive DSGVO-relevanter Compliance-Hinweise für produktionsreife MCP Server.
Tool-Calling entwickelte sich von Function Calling → Plugins → MCP. Anthropic entwarf MCP, um die Kommunikation zwischen KI und externen Systemen zu standardisieren — einmal Server schreiben, über Clients wiederverwenden.
MCP Client (Claude Desktop, Cursor, eigene Clients) kommuniziert mit MCP Server (Ihr Code) über JSON-RPC 2.0. Server exponieren Tools (aufrufbare Funktionen), Resources (lesbare Daten) und Prompts (wiederverwendbare Vorlagen). Transport: stdio (lokal, niedrige Latenz) oder HTTP + SSE (remote, Multi-Client). Lebenszyklus: Handshake → Capability-Negotiation → Request/Response → Shutdown.
Keine Live-Daten: Trainings-Cutoffs blockieren Aktienkurse und Ticketstatus — externe APIs sind Pflicht.
Vendor Lock-in: Plugins, Function Calling und Tool Use brauchen jeweils eigene Adapter.
IDE-Fragmentierung: Cursor, VS Code und Claude Desktop teilen keine Tool-Assets.
Framework-Bindung: LangChain Tools portieren nicht ohne Rewrite zu CrewAI.
N×M-Kosten: N Modelle × M Systeme explodieren im Wartungsaufwand; MCP kollabiert das zu einem Server.
| Dimension | MCP | OpenAI Function Calling | LangChain Tools |
|---|---|---|---|
| Standardisierung | Offenes Protokoll | Anbieterspezifisch | Framework-gebunden |
| Transport | stdio / HTTP | HTTP | HTTP |
| Cross-Model | Ja | Nein | Teilweise |
| Resources / Prompts | Nativ | Nicht unterstützt | Nicht unterstützt |
| Ökosystem | 10.000+ Server (2026) | Reif | Reif |
Lesen Sie diesen Abschnitt, bevor Sie tippen: MCP ist kein weiteres SDK, sondern das Standardprotokoll für KI-Toolisierung — wer es 2026 beherrscht, baut skalierbare Agent-Infrastruktur statt Einmal-Integrationen.
Python (mcp + FastMCP) eignet sich für Einsteiger. TypeScript (@modelcontextprotocol/sdk) passt zu Full-Stack-Teams. Dieser Leitfaden nutzt Python mit TypeScript-Hinweisen.
python -m venv .venv source .venv/bin/activate pip install mcp npm init -y npm install @modelcontextprotocol/sdk
Empfohlene Struktur:
my-mcp-server/ ├── server.py ├── tools/ │ ├── calculator.py │ └── web_search.py ├── resources/ │ └── file_reader.py ├── prompts/ │ └── templates.py ├── tests/ │ └── test_tools.py ├── pyproject.toml └── README.md
Debug-Dreierpack: MCP Inspector (npx @modelcontextprotocol/inspector), Claude Desktop (claude_desktop_config.json), Cursor MCP-Einstellungen. Dokumentation: modelcontextprotocol.io.
Dieses Sechs-Schritte-Runbook bringt Sie in unter 30 Minuten zum ersten von KI aufrufbaren Tool.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-first-server")
@mcp.tool()
def say_hello(name: str) -> str:
"""Begrüßt eine Person namentlich"""
return f"Hello, {name}! Das ist Ihr erstes MCP-Tool."
if __name__ == "__main__":
mcp.run()
venv erstellen und mcp installieren: pip install mcp, Python ≥ 3.10 prüfen.
server.py schreiben: say_hello mit @mcp.tool() registrieren; Docstring wird Tool-Beschreibung.
Inspector-Debug: npx @modelcontextprotocol/inspector python server.py, tools/list und tools/call in der UI testen.
Cursor konfigurieren: MCP-Einstellungen mit {"command":"python","args":["/path/to/server.py"]}, nach Neustart Tool im Agent-Kontext prüfen.
Claude Desktop konfigurieren: ~/Library/Application Support/Claude/claude_desktop_config.json bearbeiten — Format wie Cursor.
Aufruf verifizieren: In Cursor „Begrüße VpsMesh mit say_hello“ eingeben und prüfen, dass der Agent das Tool wählt und Ergebnis liefert.
Hinweis: Die Funktionssignatur ist die Dokumentation — Parametertypen, Rückgabetyp und Docstring werden direkt an das LLM exponiert und bestimmen, ob der Agent Ihr Tool korrekt wählt.
Tools sind der Kern jedes MCP Servers. Benennen Sie verb-first (search_web, query_database); modellieren Sie komplexe Eingaben mit Pydantic:
from pydantic import BaseModel, Field
class SearchInput(BaseModel):
query: str = Field(description="Suchbegriff")
max_results: int = Field(default=5, description="Maximale Trefferzahl")
language: str = Field(default="de", description="Ergebnissprache")
@mcp.tool()
def web_search(input: SearchInput) -> list[dict]:
"""Führt Websuche aus und liefert relevante Treffer"""
...
eval.import httpx
@mcp.tool()
async def fetch_url(url: str) -> str:
"""Ruft Inhalt einer URL ab"""
async with httpx.AsyncClient(timeout=30.0) as client:
response = await client.get(url)
return response.text
Best Practices: Strukturierte Fehler (error_code, message) für erwartbare Ausfälle; Timeouts bei Netzwerk-IO; Berechtigungsprüfung und Audit-Logs vor Schreiboperationen. MCP Server, die CRM-, HR- oder Kundendaten verarbeiten, unterliegen Art. 5 und 32 DSGVO — Zugriffskontrolle und Protokollierung sind Pflicht, nicht optional.
Resource vs. Tool: Resources liefern schreibgeschützte Daten per URI (file://, http://, custom://); Tools führen Aktionen aus.
@mcp.resource("config://app-settings")
def get_app_settings() -> str:
return json.dumps({"version": "1.0", "env": "production"})
@mcp.resource("user://{user_id}/profile")
def get_user_profile(user_id: str) -> str:
user = db.query_user(user_id)
return json.dumps(user)
Ressourcentypen umfassen Text (text/plain, application/json), Binär (Bilder, PDF) und Streaming-Echtzeitdaten. Bei personenbezogenen Profil-Resources gelten DSGVO-Minimierungs- und Zweckbindungsprinzipien — exponieren Sie nur Felder, die der Agent tatsächlich braucht.
MCP Prompts sind vordefinierte Fragmente mit dynamischer Parameterinjektion — Code-Review, Interview-Simulation, Debug-Assistent. Unterstützt user- und assistant-Rollen in einer Vorlage.
from mcp.types import PromptMessage, TextContent
@mcp.prompt()
def code_review_prompt(language: str, code: str) -> list[PromptMessage]:
return [
PromptMessage(
role="user",
content=TextContent(
type="text",
text=f"Bitte prüfen Sie den folgenden {language}-Code. Fokus: Qualität, Bugs, Performance.\n```{language}\n{code}\n```"
)
)
]
| Merkmal | stdio | HTTP + SSE |
|---|---|---|
| Deployment | Lokaler Prozess | Remote-Server |
| Latenz | Sehr niedrig | Netzwerkabhängig |
| Multi-Client | Nein | Ja |
| Anwendungsfall | Lokale Tools | SaaS / Team-Sharing |
mcp = FastMCP("remote-server", transport="streamable-http")
if __name__ == "__main__":
mcp.run(host="0.0.0.0", port=8000)
Remote-Server absichern mit Bearer Tokens, API-Key-Middleware, CORS und Rate Limits. Geheimnisse nie ins Tool-Schema schreiben.
Remote MCP Server, die EU-Personendaten verarbeiten, benötigen DSGVO-konforme Verarbeitungsverzeichnisse, Verschlüsselung in Transit und at Rest sowie definierte Auftragsverarbeitungsverträge mit Cloud-Anbietern. Unautorisierte, öffentlich erreichbare MCP-Endpunkte sind ein dokumentiertes Risiko — Berechtigungen auf Server-Schicht erzwingen.
Inspector testet Tool-Aufrufe, zeigt JSON-RPC-Logs und simuliert Fehlerszenarien. Unit-Tests starten stdio-Subprozesse mit dem offiziellen Client SDK:
@pytest.mark.asyncio
async def test_calculator_tool():
server_params = StdioServerParameters(command="python", args=["server.py"])
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool("calculate", {"expression": "2 + 2"})
assert result.content[0].text == "4"
| Fehler | Ursache | Lösung |
|---|---|---|
| Tool erscheint nicht in KI | Falscher Config-Pfad | command/args-Absolutpfad in config.json prüfen |
| JSON-Serialisierung fehlgeschlagen | Nicht unterstützter Rückgabetyp | In str oder dict konvertieren |
| Timeout-Abbruch | Tool zu langsam | async + timeout setzen |
| Berechtigung verweigert | Dateipfad eingeschränkt | Allowlist-Verzeichnis konfigurieren |
FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "server.py"]
Deployment-Optionen: Railway / Render (One-Click für persönliche Projekte), AWS Lambda / Google Cloud Run (Serverless), eigener VPS (Nginx Reverse Proxy). Monitoring: strukturierte Logs, Prometheus-Metriken, Sentry-Alerts, Health-Check-API. MCP-Protokollversion deklarieren; bei Tool-Updates Rückwärtskompatibilität wahren.
Anforderung: KI soll lokale Markdown-Notizen durchsuchen, semantisch finden, erstellen und aktualisieren. Stack: ChromaDB / Qdrant, text-embedding-3-small, watchfiles für Dateiänderungen. Kern: Notiz-Index-Tool, Semantik-Suche, Schreib-Tool, Datei-Resources. Effekt: In Cursor fragen „Was habe ich letzte Woche über MCP notiert?“ — Agent ruft Such-Tool und liefert relevante Abschnitte.
2026 unterstützen Cursor, Claude Desktop, VS Code, OpenAI und Gemini MCP nativ; Marketplace und Enterprise-Sicherheitsstandards reifen schnell. Nächste Schritte: Protokollspezifikation vertiefen, öffentliche Server veröffentlichen, MCP + Agent erkunden, Open-Source-Ökosystem mitbeitragen. SDKs: Python, TypeScript, Inspector.
tools/list zur Laufzeit.Laptops eignen sich für MCP-POCs, verlieren aber bei Deckel-zu-Sleep, fehlenden macOS-nativen Toolchains und Langzeit-Prozess-Supervision die 7×24-Erfahrung. Reine Linux-VPS hosten HTTP+SSE, kämpfen aber mit Keychain und Xcode-abhängigen MCP-Tools. Teams, die mehrere MCP Server als Always-on-Infrastruktur betreiben und Agenten über Wochen Tool-Call-Wert akkumulieren lassen, brauchen vorhersagbare Uptime. VpsMesh Mac Mini M4 Cloud-Miete bündelt Uptime, Remote-KVM und planbare monatliche OpEx in produktionsreifes Hosting. Siehe Mac Mini M4 Mietpreise, Hilfezentrum und Bestellseite.
Python mit offiziellem SDK mcp und FastMCP startet am schnellsten — ideal für Backend- und KI-Ingenieure. TypeScript SDK @modelcontextprotocol/sdk passt zu Frontend und Full-Stack. Protokollschicht ist voll kompatibel; Logik lässt sich gegenüberstellend portieren. Node-lastige Teams wählen TS, Data/ML-Zentren Python.
Tools führen Aktionen aus — KI-Aufrufe ändern externen Zustand oder lösen Berechnungen (Suche, Datei schreiben, Request senden). Resources liefern schreibgeschützte Daten per URI, etwa config://app-settings oder user://{id}/profile. Merksatz: Lesen mit Resources, Handeln mit Tools.
HTTP+SSE läuft auf Railway, Cloud Run oder Linux-VPS. Bei macOS-nativen Toolchains, Keychain und ununterbrochenen Cursor-Agenten plus mehreren Servern 7×24 ohne Deckel-zu-Sleep ist Mac Mini M4 Monatsmiete zuverlässiger. Starten Sie mit einer Einmonats-Testphase zur Validierung der tools/call-Latenzkurven. Siehe Mac Mini M4 Mietpreise und Bestellseite.