/ Directorio / Playground / FastAPI MCP
● Comunidad tadata-org ⚡ Instantáneo

FastAPI MCP

por tadata-org · tadata-org/fastapi_mcp

Monta en una línea, convierte cada ruta FastAPI en una herramienta MCP — esquemas de tus modelos Pydantic, autenticación de tu middleware.

fastapi-mcp envuelve una aplicación FastAPI existente y expone sus rutas como herramientas MCP. Los esquemas de las herramientas se generan a partir de tus modelos Pydantic de solicitud/respuesta. Tu middleware de autenticación existente se ejecuta sin cambios. El camino más rápido desde 'tengo una API Python' hasta 'los agentes pueden llamarla'.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

fastapi-mcp.replay ▶ listo
0/0

Instalar

Elige tu cliente

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

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

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

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

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

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

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

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

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

Continue usa un array de objetos de servidor en lugar de un mapa.

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

Añádelo a context_servers. Zed recarga en caliente al guardar.

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

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: FastAPI MCP

Expone una aplicación FastAPI existente como MCP sin refactorizar

👤 Desarrolladores backend con un servicio FastAPI en ejecución ⏱ ~30 min intermediate

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án object
Flujo
  1. Instala y monta
    Añade fastapi-mcp a mi proyecto. En mi main.py, después de app = FastAPI(), añade FastApiMCP(app).mount(). Muestra el diff.✓ Copiado
    → Diff mínimo; el servidor sigue ejecutándose
  2. Verifica que las herramientas aparecen
    Ejecuta 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
  3. Filtra lo que se expone
    No quiero que se expongan las rutas /admin/*. Reconfigura con include_operations o 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'] o exclude_operations=[...] antes de poner en producción
  • Las rutas sin operation_id obtienen nombres generados como read_item_items__item_id__get — feos — Siempre establece operation_id explícito en las rutas: @app.get('/items/{id}', operation_id='get_item')
Combinar con: fastmcp

Expone una aplicación FastAPI autenticada como MCP sin romper la autenticación

👤 Desarrolladores backend con bearer/OAuth2 en FastAPI ⏱ ~30 min intermediate

Cuándo usarlo: Tus rutas FastAPI usan Depends(get_current_user) — necesitas que siga disparándose cuando se llama a través de MCP.

Requisitos previos
  • Dependencia de autenticación existenteDepends(oauth2_scheme) o equivalente
Flujo
  1. Pasa el encabezado Authorization
    Configura fastapi-mcp para reenviar el encabezado Authorization desde el contexto MCP a la ruta subyacente. Apúntame a la configuración.✓ Copiado
    → Cambio de configuración; las rutas ahora reciben el encabezado
  2. Prueba una llamada autenticada
    Llama al endpoint protegido a través de MCP. Primero sin token (espera 401), luego con uno válido (espera 200).✓ Copiado
    → 401 sin autenticar, 200 autenticado — igual que HTTP directo
  3. Documenta la configuración del lado del cliente
    Escribe la configuración mcp-remote que los usuarios necesitan para que su Claude Desktop pase un encabezado Authorization.✓ Copiado
    → Fragmento de configuración de cliente copiable

Resultado: Autenticación aplicada idénticamente ya sea llamada desde curl o desde un agente.

Errores comunes
  • El agente usa accidentalmente un token raíz de larga duración — Crea tokens de corta duración y alcance limitado por usuario; rota agresivamente — trata MCP como cualquier otro cliente API

Despliega el endpoint MCP junto a tu API existente

👤 Ingenieros de plataforma ⏱ ~45 min advanced

Cuándo usarlo: Ejecutas FastAPI en Cloud Run / Fly / Render. Quieres que MCP comparta ese despliegue.

Flujo
  1. Monta en una ruta estable
    Monta fastapi-mcp en /mcp. Confirma que /docs (Swagger) y /mcp funcionan ambos desde el mismo proceso.✓ Copiado
    → Ambas rutas responden
  2. Expone a través de tu ingreso existente
    Actualiza mi configuración Cloud Run / nginx / API gateway para enrutar /mcp a este servicio con timeouts compatibles con SSE (sin buffering, inactividad larga).✓ Copiado
    → El mcp-remote remoto se conecta limpiamente
  3. Documenta la configuración del cliente
    Escribe el README orientado al equipo: cómo añadir este MCP a Claude Desktop + Cursor.✓ Copiado
    → Configuración de copiar-pegar por cliente

Resultado: Un despliegue, dos protocolos (REST + MCP), cero infraestructura extra.

Errores comunes
  • El proxy almacena en búfer las respuestas SSE, la conexión parece colgada — Desactiva el buffering del proxy — nginx: proxy_buffering off; Cloud Run: ya está bien; Cloudflare: habilita streaming
Combinar con: cloud-run · vercel

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

fastapi-mcp + fastmcp

Usa fastapi-mcp para rutas heredadas, FastMCP para herramientas específicas del agente en el mismo proceso

Monta fastapi-mcp para mis rutas /api/* existentes y registra 3 nuevas herramientas FastMCP para operaciones solo de agentes como bulk_sync.✓ Copiado
fastapi-mcp + cloud-run

Despliega REST + MCP juntos en Cloud Run

Toma mi servicio FastAPI, añade fastapi-mcp, containeriza y despliega en Cloud Run con autenticación IAM en /mcp.✓ Copiado

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
FastApiMCP(app, **options) app: FastAPI, include_operations?, exclude_operations?, include_tags?, exclude_tags?, name?, description? Cableado en tiempo de construcción — crea una vez al inicio free
.mount(path='/mcp') path? Justo después de la instanciación free
Auto-generated tools derivados de los modelos de solicitud/respuesta de cada ruta FastAPI Sin acción — aparecen una vez que montas same as your route

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Hereda de tu API
Tokens por llamada
Igual que las llamadas HTTP directas — sin gastos generales
Monetario
Gratuito, código abierto
Consejo
Excluye rutas admin/debug verbosas de MCP — contaminan la lista de herramientas del agente y cuestan tokens en cada list_tools

Seguridad

Permisos, secretos, alcance

Almacenamiento de credenciales: Lo que tu FastAPI usa — fastapi-mcp no añade una nueva capa de autenticación
Salida de datos: Dondequiera que tus rutas ya vayan

Resolución de problemas

Errores comunes y soluciones

Las herramientas aparecen pero las llamadas devuelven errores de validación 422

Tu ruta usa dict en lugar de Pydantic BaseModel — MCP pasa JSON tipado y tu ruta no puede analizarlo. Refactoriza a BaseModel.

La ruta existe en /items pero no hay herramienta coincidente

fastapi-mcp omite rutas sin response_model u operation_id en algunos casos. Añade response_model=ItemOut y operation_id='get_item'.

Verificar: curl http://localhost:8000/openapi.json | jq '.paths'
La dependencia de autenticación no se dispara cuando se llama a través de MCP

Configura el reenvío de encabezados en las opciones de FastApiMCP. Si tu dependencia lee cookies en lugar de encabezados, cambia a autenticación basada en encabezados — MCP no tiene frasco de cookies.

SSE se cuelga detrás de nginx

Añade proxy_buffering off; proxy_cache off; proxy_read_timeout 3600s; al bloque de ubicación /mcp.

Alternativas

FastAPI MCP vs otros

AlternativaCuándo usarlaContrapartida
FastMCPGreenfield — sin aplicación FastAPI existente, solo escribiendo un servidor MCPUX más limpia para nuevos proyectos; fastapi-mcp gana para retrofitting
Servidor SDK escrito a manoNecesitas control fino sobre los nombres, descripciones y esquemas de las herramientasMás código, más mantenimiento — generalmente no vale la pena

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills