/ Verzeichnis / Playground / FastAPI MCP
● Community tadata-org ⚡ Sofort

FastAPI MCP

von tadata-org · tadata-org/fastapi_mcp

In einer Zeile mounten, verwandeln Sie jede FastAPI-Route in ein MCP-Werkzeug — Schemas aus Ihren Pydantic-Modellen, Auth aus Ihrem Middleware.

fastapi-mcp umschließt eine bestehende FastAPI-App und macht ihre Routen als MCP-Werkzeuge zugänglich. Werkzeug-Schemas werden aus Ihren Pydantic Request/Response-Modellen generiert. Ihr bestehendes Auth-Middleware läuft unverändert. Der schnellste Weg von 'ich habe eine Python-API' zu 'Agenten können sie aufrufen'.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

fastapi-mcp.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "fastapi-mcp": {
      "command": "uvx",
      "args": [
        "fastapi-mcp"
      ]
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "fastapi-mcp": {
      "command": "uvx",
      "args": [
        "fastapi-mcp"
      ]
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "fastapi-mcp": {
      "command": "uvx",
      "args": [
        "fastapi-mcp"
      ]
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "fastapi-mcp": {
      "command": "uvx",
      "args": [
        "fastapi-mcp"
      ]
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "fastapi-mcp",
      "command": "uvx",
      "args": [
        "fastapi-mcp"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "fastapi-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "fastapi-mcp"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add fastapi-mcp -- uvx fastapi-mcp

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: FastAPI MCP

Machen Sie eine bestehende FastAPI-App als MCP zugänglich, ohne zu refaktorisieren

👤 Backend-Entwickler mit einem laufenden FastAPI-Service ⏱ ~30 min intermediate

Wann einsetzen: Sie haben bereits eine FastAPI-API. Sie möchten, dass Agenten sie verwenden. Sie möchten keine parallele Codebasis.

Voraussetzungen
  • Funktionierende FastAPI-App mit Pydantic-Modellen auf Anfragen/Antworten — Wenn Ihre Routen dict zurückgeben, refaktorisieren Sie zuerst zu Pydantic BaseModel — sonst werden Werkzeug-Schemas object
Ablauf
  1. Installieren und mounten
    Fügen Sie fastapi-mcp zu meinem Projekt hinzu. In meinem main.py, nach app = FastAPI(), fügen Sie FastApiMCP(app).mount() hinzu. Zeigen Sie den Diff.✓ Kopiert
    → Minimaler Diff; Server läuft noch
  2. Überprüfen Sie, ob Werkzeuge erscheinen
    Führen Sie den Server aus. Verbinden Sie sich mit npx -y mcp-remote http://localhost:8000/mcp. Listen Sie Werkzeuge auf — erscheinen alle meine GET/POST-Routen?✓ Kopiert
    → Werkzeuge aufgelistet, Namen stimmen mit Route operation_ids überein
  3. Filtern Sie, was exponiert wird
    Ich möchte nicht, dass /admin/*-Routen exponiert werden. Konfigurieren Sie neu mit include_operations oder schließen Sie nach Tag aus.✓ Kopiert
    → Admin-Routen nicht mehr in der Werkzeugliste

Ergebnis: Ihre bestehende API ist nun MCP-adressierbar ohne Verdopplung von Schemas oder Logik.

Fallstricke
  • Jede Route wird zu einem Werkzeug — einschließlich interner, die Sie nicht exponieren wollten — Setzen Sie explizit include_tags=['public'] oder exclude_operations=[...] vor dem Start
  • Routen ohne operation_id bekommen generierte Namen wie read_item_items__item_id__get — hässlich — Setzen Sie immer explizit operation_id auf Routen: @app.get('/items/{id}', operation_id='get_item')
Kombinieren mit: fastmcp

Machen Sie eine authentifizierte FastAPI-App als MCP zugänglich, ohne Auth zu beschädigen

👤 Backend-Entwickler mit Bearer/OAuth2 auf FastAPI ⏱ ~30 min intermediate

Wann einsetzen: Ihre FastAPI-Routen verwenden Depends(get_current_user) — Sie brauchen, dass das noch läuft, wenn es via MCP aufgerufen wird.

Voraussetzungen
  • Bestehende Auth-AbhängigkeitDepends(oauth2_scheme) oder Equivalent
Ablauf
  1. Geben Sie den Authorization-Header durch
    Konfigurieren Sie fastapi-mcp, um den Authorization-Header vom MCP-Kontext an die zugrunde liegende Route weiterzuleiten. Zeigen Sie mir die Einstellungen.✓ Kopiert
    → Konfigurationsänderung; Routen erhalten nun den Header
  2. Testen Sie einen authentifizierten Aufruf
    Rufen Sie den geschützten Endpoint via MCP auf. Zunächst ohne Token (erwartet 401), dann mit einem gültigen (erwartet 200).✓ Kopiert
    → 401 unauth, 200 auth — wie direktes HTTP
  3. Dokumentieren Sie das Client-Setup
    Schreiben Sie die mcp-remote-Konfiguration, die Benutzer benötigen, damit ihr Claude Desktop einen Authorization-Header übergibt.✓ Kopiert
    → Copy-pasteable Client-Konfigurationsschnipsel

Ergebnis: Auth wird identisch erzwungen, ob von curl oder von einem Agenten aufgerufen.

Fallstricke
  • Agent verwendet versehentlich ein langlebiges Root-Token — Prägen Sie kurzlebige scoped Tokens pro Benutzer; rotieren Sie aggressiv — behandeln Sie MCP wie jeden anderen API-Client

Stellen Sie den MCP-Endpoint neben Ihrer bestehenden API bereit

👤 Platform-Ingenieure ⏱ ~45 min advanced

Wann einsetzen: Sie führen FastAPI auf Cloud Run / Fly / Render aus. Sie möchten, dass MCP diesen Deploy teilt.

Ablauf
  1. Mounten Sie an einem stabilen Pfad
    Mounten Sie fastapi-mcp unter /mcp. Bestätigen Sie, dass /docs (Swagger) und /mcp beide vom gleichen Process funktionieren.✓ Kopiert
    → Beide Pfade antworten
  2. Exponieren Sie über Ihren bestehenden Ingress
    Aktualisieren Sie meine Cloud Run / nginx / API Gateway-Konfiguration, um /mcp zu diesem Service zu leiten mit SSE-kompatiblen Timeouts (kein Buffering, lange Idle).✓ Kopiert
    → Remote mcp-remote verbindet sich sauber
  3. Dokumentieren Sie das Client-Setup
    Schreiben Sie das teamfacing README: wie man diese MCP zu Claude Desktop + Cursor hinzufügt.✓ Kopiert
    → Copy-paste-Konfiguration pro Client

Ergebnis: Ein Deploy, zwei Protokolle (REST + MCP), null Extra-Infrastruktur.

Fallstricke
  • Proxy puffert SSE-Antworten, Verbindung erscheint hängend — Deaktivieren Sie Proxy-Buffering — nginx: proxy_buffering off; Cloud Run: bereits ok; Cloudflare: aktivieren Sie Streaming
Kombinieren mit: cloud-run · vercel

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

fastapi-mcp + fastmcp

Verwenden Sie fastapi-mcp für Legacy-Routen, FastMCP für Greenfield-Agent-spezifische Werkzeuge im gleichen Process

Mounten Sie fastapi-mcp für meine bestehenden /api/*-Routen und registrieren Sie 3 neue FastMCP-Werkzeuge für Agent-only-Operationen wie bulk_sync.✓ Kopiert
fastapi-mcp + cloud-run

Stellen Sie REST + MCP zusammen auf Cloud Run bereit

Nehmen Sie meinen FastAPI-Service, fügen Sie fastapi-mcp hinzu, containerisieren Sie, und stellen Sie auf Cloud Run mit IAM-Auth auf /mcp bereit.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
FastApiMCP(app, **options) app: FastAPI, include_operations?, exclude_operations?, include_tags?, exclude_tags?, name?, description? Build-Zeit Verdrahtung — einmal beim Start erstellen free
.mount(path='/mcp') path? Gleich nach der Instantiierung free
Auto-generated tools abgeleitet von den Request/Response-Modellen jeder FastAPI-Route Keine Aktion — sie erscheinen, sobald Sie mounten same as your route

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Erbt von Ihrer API
Tokens pro Aufruf
Gleich wie direkte HTTP-Aufrufe — kein Overhead
Kosten in €
Kostenlos, Open Source
Tipp
Schließen Sie ausführliche Admin/Debug-Routen von MCP aus — sie verschmutzen die Werkzeugliste des Agenten und kosten Tokens bei jedem list_tools

Sicherheit

Rechte, Secrets, Reichweite

Credential-Speicherung: Was auch immer Ihr FastAPI verwendet — fastapi-mcp fügt keine neue Auth-Schicht hinzu
Datenabfluss: Wohin Ihre Routen bereits gehen

Fehlerbehebung

Häufige Fehler und Lösungen

Werkzeuge erscheinen, aber Aufrufe geben 422-Validierungsfehler zurück

Ihre Route verwendet dict statt Pydantic BaseModel — MCP übergibt typisiertes JSON und Ihre Route kann es nicht parsen. Refaktorisieren Sie zu BaseModel.

Route existiert unter /items, aber kein passendes Werkzeug

fastapi-mcp überspringt Routen ohne response_model oder operation_id in manchen Fällen. Fügen Sie response_model=ItemOut und operation_id='get_item' hinzu.

Prüfen: curl http://localhost:8000/openapi.json | jq '.paths'
Auth-Abhängigkeit läuft nicht, wenn sie via MCP aufgerufen wird

Konfigurieren Sie Header-Weiterleitung in FastApiMCP-Optionen. Wenn Ihre Abhängigkeit Cookies statt Header liest, wechseln Sie zu Header-basierter Auth — MCP hat keinen Cookie-Jar.

SSE hängt hinter nginx

Fügen Sie proxy_buffering off; proxy_cache off; proxy_read_timeout 3600s; zum /mcp Location-Block hinzu.

Alternativen

FastAPI MCP vs. andere

AlternativeWann stattdessenKompromiss
FastMCPGreenfield — keine bestehende FastAPI-App, nur einen MCP-Server schreibenSauberere DX für neue Projekte; fastapi-mcp gewinnt beim Retrofitting
Handgeschriebener SDK-ServerSie benötigen feinkörnige Kontrolle über Werkzeugnamen, Beschreibungen und SchemasMehr Code, mehr Wartung — normalerweise nicht wert

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen