Machen Sie eine bestehende FastAPI-App als MCP zugänglich, ohne zu refaktorisieren
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
dictzurückgeben, refaktorisieren Sie zuerst zu Pydantic BaseModel — sonst werden Werkzeug-Schemasobject
Ablauf
-
Installieren und mountenFügen Sie
fastapi-mcpzu meinem Projekt hinzu. In meinem main.py, nachapp = FastAPI(), fügen SieFastApiMCP(app).mount()hinzu. Zeigen Sie den Diff.✓ Kopiert→ Minimaler Diff; Server läuft noch -
Überprüfen Sie, ob Werkzeuge erscheinenFü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 -
Filtern Sie, was exponiert wirdIch möchte nicht, dass /admin/*-Routen exponiert werden. Konfigurieren Sie neu mit
include_operationsoder 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']oderexclude_operations=[...]vor dem Start - Routen ohne operation_id bekommen generierte Namen wie
read_item_items__item_id__get— hässlich — Setzen Sie immer explizitoperation_idauf Routen:@app.get('/items/{id}', operation_id='get_item')