MCP Server von Grund auf entwickeln: Vollständiger Entwicklerleitfaden

Protokollgrundlagen · FastMCP · Tools/Resources/Prompts · HTTP-Deployment · Wissensdatenbank-Projekt

MCP Server von Grund auf entwickeln: Vollständiger Entwicklerleitfaden

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.

01

Was ist MCP? Protokoll verstehen, bevor Sie Code schreiben

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-Protokollarchitektur: Client ↔ Server ↔ drei Kernfähigkeiten

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.

  1. 01

    Keine Live-Daten: Trainings-Cutoffs blockieren Aktienkurse und Ticketstatus — externe APIs sind Pflicht.

  2. 02

    Vendor Lock-in: Plugins, Function Calling und Tool Use brauchen jeweils eigene Adapter.

  3. 03

    IDE-Fragmentierung: Cursor, VS Code und Claude Desktop teilen keine Tool-Assets.

  4. 04

    Framework-Bindung: LangChain Tools portieren nicht ohne Rewrite zu CrewAI.

  5. 05

    N×M-Kosten: N Modelle × M Systeme explodieren im Wartungsaufwand; MCP kollabiert das zu einem Server.

DimensionMCPOpenAI Function CallingLangChain Tools
StandardisierungOffenes ProtokollAnbieterspezifischFramework-gebunden
Transportstdio / HTTPHTTPHTTP
Cross-ModelJaNeinTeilweise
Resources / PromptsNativNicht unterstütztNicht unterstützt
Ökosystem10.000+ Server (2026)ReifReif

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.

02

Umgebungsaufbau: Sprachwahl und Projektstruktur

Python (mcp + FastMCP) eignet sich für Einsteiger. TypeScript (@modelcontextprotocol/sdk) passt zu Full-Stack-Teams. Dieser Leitfaden nutzt Python mit TypeScript-Hinweisen.

bash · Umgebung
python -m venv .venv
source .venv/bin/activate
pip install mcp

npm init -y
npm install @modelcontextprotocol/sdk

Empfohlene Struktur:

text · Verzeichnis
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.

03

Ihr erster MCP Server: Hello World und Cursor-Integration

Dieses Sechs-Schritte-Runbook bringt Sie in unter 30 Minuten zum ersten von KI aufrufbaren Tool.

python · server.py
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()
  1. 01

    venv erstellen und mcp installieren: pip install mcp, Python ≥ 3.10 prüfen.

  2. 02

    server.py schreiben: say_hello mit @mcp.tool() registrieren; Docstring wird Tool-Beschreibung.

  3. 03

    Inspector-Debug: npx @modelcontextprotocol/inspector python server.py, tools/list und tools/call in der UI testen.

  4. 04

    Cursor konfigurieren: MCP-Einstellungen mit {"command":"python","args":["/path/to/server.py"]}, nach Neustart Tool im Agent-Kontext prüfen.

  5. 05

    Claude Desktop konfigurieren: ~/Library/Application Support/Claude/claude_desktop_config.json bearbeiten — Format wie Cursor.

  6. 06

    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.

04

Tools entwickeln: Fünf praktische Beispiele für KI-Aufrufe

Tools sind der Kern jedes MCP Servers. Benennen Sie verb-first (search_web, query_database); modellieren Sie komplexe Eingaben mit Pydantic:

python · Pydantic-Eingabe
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"""
    ...

Fünf Praxis-Tools

  • Rechner: Sichere Auswertung mathematischer Ausdrücke — kein nacktes eval.
  • Datei-Lese/Schreib: Auf Allowlist-Verzeichnisse beschränken; lokale Markdown oder Config lesen/schreiben.
  • HTTP-Client: GET/POST kapseln, Timeout und Retry vereinheitlichen.
  • Datenbankabfrage: Read-only SQL + Parametrisierung gegen Injection.
  • Zeit-Tools: Aktuelle Uhrzeit, Zeitzonenkonvertierung, Werktagsberechnung.
python · Async-Tool
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.

05

Resources und Prompts: Datenfeeds und wiederverwendbare Vorlagen

Resources: Dynamische Inhalte zum Lesen

Resource vs. Tool: Resources liefern schreibgeschützte Daten per URI (file://, http://, custom://); Tools führen Aktionen aus.

python · Statische und dynamische Resources
@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.

Prompts: Wiederverwendbare Vorlagen

MCP Prompts sind vordefinierte Fragmente mit dynamischer Parameterinjektion — Code-Review, Interview-Simulation, Debug-Assistent. Unterstützt user- und assistant-Rollen in einer Vorlage.

python · Code-Review-Prompt
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```"
            )
        )
    ]
06

HTTP-Transport, Debugging und häufige Fehler

MerkmalstdioHTTP + SSE
DeploymentLokaler ProzessRemote-Server
LatenzSehr niedrigNetzwerkabhängig
Multi-ClientNeinJa
AnwendungsfallLokale ToolsSaaS / Team-Sharing
python · streamable-http
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.

Hinweis

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.

MCP Inspector und Unit-Tests

Inspector testet Tool-Aufrufe, zeigt JSON-RPC-Logs und simuliert Fehlerszenarien. Unit-Tests starten stdio-Subprozesse mit dem offiziellen Client SDK:

python · pytest
@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"
FehlerUrsacheLösung
Tool erscheint nicht in KIFalscher Config-Pfadcommand/args-Absolutpfad in config.json prüfen
JSON-Serialisierung fehlgeschlagenNicht unterstützter RückgabetypIn str oder dict konvertieren
Timeout-AbbruchTool zu langsamasync + timeout setzen
Berechtigung verweigertDateipfad eingeschränktAllowlist-Verzeichnis konfigurieren
07

Produktions-Deployment, Wissensdatenbank-Projekt und Ökosystem

Docker-Containerisierung und Cloud-Dienste

dockerfile
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.

Praxisprojekt: Persönlicher Wissensdatenbank-MCP Server

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.

Empfohlene Community-Server und 2026-Trends

  • mcp-server-filesystem: Dateisystem-Operationen
  • mcp-server-github: GitHub-Repository-Operationen
  • mcp-server-brave-search: Websuche
  • mcp-server-postgres: Datenbankabfragen
  • mcp-server-slack: Slack-Nachrichten

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.

Zitierbare Harddaten

  • Protokoll: JSON-RPC 2.0; Discovery via tools/list zur Laufzeit.
  • Ökosystem: 2026 über 10.000+ MCP Server — Netzwerkeffekte wie frühes HTTP.
  • Integrationsersparnis: 38–55 % Kostensenkung (Branchenumfragen).
  • Anbieter-Backing: Q1–Q2 2026 OpenAI, Google, Microsoft; Governance unter AAIF.
  • DSGVO-Kontext: MCP Server mit personenbezogenen Daten fallen unter Art. 5 und 32 DSGVO — Audit-Logs, Zugriffskontrolle und EU-Rechenzentrumswahl sind Pflicht.

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.

FAQ

Die drei häufigsten Leserfragen

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.