Expone una aplicación FastAPI existente como MCP sin refactorizar
Cuándo usarlo: Ya tienes una API FastAPI en producción. Quieres que los agentes la usen. No quieres una base de código paralela.
Requisitos previos
- Aplicación FastAPI funcional con modelos Pydantic en solicitudes/respuestas — Si tus rutas devuelven
dict, refactoriza a Pydantic BaseModel primero — en caso contrario, los esquemas de las herramientas seránobject
Flujo
-
Instala y montaAñade
fastapi-mcpa mi proyecto. En mi main.py, después deapp = FastAPI(), añadeFastApiMCP(app).mount(). Muestra el diff.✓ Copiado→ Diff mínimo; el servidor sigue ejecutándose -
Verifica que las herramientas aparecenEjecuta el servidor. Conéctate con
npx -y mcp-remote http://localhost:8000/mcp. Lista las herramientas — ¿aparecen todas mis rutas GET/POST?✓ Copiado→ Herramientas listadas, los nombres coinciden con los operation_ids de las rutas -
Filtra lo que se exponeNo quiero que se expongan las rutas /admin/*. Reconfigura con
include_operationso excluye por etiqueta.✓ Copiado→ Las rutas de admin ya no están en la lista de herramientas
Resultado: Tu API existente ahora es direccionable por MCP sin duplicación de esquemas o lógica.
Errores comunes
- Cada ruta se convierte en una herramienta — incluidas las internas que no pretendías exponer — Establece explícitamente
include_tags=['public']oexclude_operations=[...]antes de poner en producción - Las rutas sin operation_id obtienen nombres generados como
read_item_items__item_id__get— feos — Siempre estableceoperation_idexplícito en las rutas:@app.get('/items/{id}', operation_id='get_item')