Ticker

6/recent/ticker-posts

No confundas FastAPI con FastMCP: Guía de Uso, Diferencias y Estrategias de Despliegue


"Comparativa técnica, diferencias en patrones de integración, ejemplos de código y guía paso a paso para despliegue local y en Google Cloud Platform."

FastAPI y FastMCP son herramientas de Python para crear servicios interconectados, pero operan en niveles y para propósitos totalmente distintos. FastAPI es un framework web de alto rendimiento para construir APIs REST y gRPC tradicionales (HTTP/JSON), mientras que FastMCP es el framework estándar para construir servidores y clientes bajo el Model Context Protocol (MCP), optimizado para que los modelos de lenguaje (LLMs) interactúen dinámicamente con herramientas y datos.

Tabla Comparativa

CaracterísticaFastAPIFastMCP
Propósito PrincipalExponer APIs web orientadas a humanos, frontends y sistemas externos.Proveer un "cerebro contextual" e interfaz de herramientas para agentes de IA.
Protocolo BaseHTTP/1.1, HTTP/2, WebSockets (Estándar Web).MCP (Model Context Protocol vía STDIO o HTTP transport).
ConsumidoresNavegadores, apps móviles, otros microservicios.LLMs y agentes autónomos (Claude Desktop, Cursor, LangGraph).
Definición de Rutas@app.get("/ruta"), @app.post("/ruta").@mcp.tool(), @mcp.resource().
DocumentaciónSwagger UI / OpenAPI automático.MCP Inspector (inspección visual de herramientas/prompts).

Diferencias Clave

  • Nivel de Abstracción: FastAPI maneja puertos, solicitudes HTTP, encabezados y códigos de estado. FastMCP abstrae el protocolo de contexto de IA, traduciendo directamente funciones de Python, tipos de datos y docstrings en esquemas legibles por la IA.
  • Ecosistema y Alcance: FastAPI es un ecosistema maduro de infraestructura backend. FastMCP cubre la pila completa de agentes (servidores, clientes y aplicaciones con UI interactiva para LLMs).
  • Formato de Interacción: En FastAPI defines esquemas REST orientados a recursos CRUD. En FastMCP defines Tools (acciones ejecutables), Resources (datos de contexto de sólo lectura) y Prompts (plantillas).

¿Cuándo usar cada uno?

Usar FastAPI cuando:

  • Desarrollas backends tradicionales, microservicios o pasarelas de pago.
  • Creas aplicaciones web o móviles con un frontend separado (React, Next.js, Flutter).
  • Necesitas control absoluto sobre la arquitectura HTTP, middlewares de seguridad, bases de datos y rendimiento masivo asíncrono.

Usar FastMCP cuando:

  • Estás creando herramientas o conectores dedicados para asistentes de IA y agentes autónomos.
  • Trabajas con arquitecturas multiagente usando frameworks como LangGraph o CrewAI.
  • Requieres que un LLM descubra funciones locales o remotas sin escribir código de cliente personalizado.

Nota: Puedes usar FastMCP.from_fastapi() para prototipar un servidor MCP a partir de una app FastAPI existente, aunque se recomienda diseñar esquemas nativos para optimizar el rendimiento del LLM.

Ejemplos de Código

Ejemplo con FastAPI (Ruta HTTP clásica)

from fastapi import FastAPI

app = FastAPI()


@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
  return {"item_id": item_id, "q": q}

Ejemplo con FastMCP (Herramienta para Agente de IA)

from fastmcp import FastMCP

# Crear el servidor MCP
mcp = FastMCP("MiServicioIA")


@mcp.tool()
def calcular_impuesto(monto: float, porcentaje: float) -> float:
  """Calcula el impuesto total basado en un monto y porcentaje dados."""
  return monto * (porcentaje / 100.0)

Despliegue de soluciones con FastAPI y FastMCP

Para desplegar FastAPI y FastMCP, las estrategias cambian drásticamente debido a su naturaleza: FastAPI es un servicio web convencional que escucha en la red (HTTP/WebSockets), mientras que FastMCP comúnmente opera de forma local mediante la entrada/salida estándar (STDIO) o mediante transportes HTTP específicos para IA, sin embargo, es importante mencionar que una solución FastMCP se puede desplegar sobre una infraestructura Cloud Computing. Revisemos las consideraciones clave para _Despliegue sobre entorno localhost y GCP como entorno Cloud.

Despliegue en Máquina Local (PC)

Para FastAPI

  • Servidor ASGI: Necesitas un servidor de producción local como uvicorn o gunicorn.
  • Comando típico: uvicorn main:app --host 0.0.0.0 --port 8000 --reload (usa --reload solo en desarrollo).
  • Acceso: Expone el puerto 8000. Si quieres que otros en tu red local lo vean, debes configurar tu Firewall.

Para FastMCP

  • Modo STDIO (El más común): Los clientes locales de IA (como Claude Desktop o Cursor) ejecutan tu script de Python directamente en un subproceso y se comunican mediante la línea de comandos (stdin/stdout). No necesitas abrir puertos de red.
  • Configuración del Cliente: Debes añadir el comando de ejecución en el archivo de configuración del cliente (por ejemplo, claude_desktop_config.json).
  • Modo Servidor Inspector: Puedes correr fastmcp dev main.py para levantar una interfaz gráfica local que te permite probar las herramientas antes de conectarlas al LLM.

Despliegue en Google Cloud Platform (GCP)

Para FastAPI

  • Google Cloud Run (Recomendado): Es la mejor opción Serverless. Solo necesitas empaquetar tu app en un contenedor Docker. Cloud Run escala a cero si no hay tráfico, ahorrando costos.
  • Google Compute Engine (VM): Si necesitas control total del sistema operativo o procesos de larga duración que no se lleven bien con Serverless. Requerirás configurar Nginx como proxy inverso.
  • Monitoreo: Integración nativa con Cloud Logging y Cloud Monitoring para revisar las peticiones HTTP y errores 500.

Para FastMCP

  • El desafío del transporte: Como los LLMs comerciales (en la nube) no pueden ejecutar un comando en tu máquina por STDIO, debes desplegar FastMCP usando su transporte SSE (Server-Sent Events) sobre HTTP.
  • Cloud Run con SSE: Puedes desplegar FastMCP en Cloud Run expuesto como un endpoint HTTP seguro (HTTPS). Asegúrate de configurar correctamente los límites de tiempo de espera (timeout), ya que las conexiones SSE se mantienen abiertas.
  • Seguridad Crítica: Nunca dejes un endpoint de FastMCP público sin autenticación. Estarías permitiendo que cualquiera (o cualquier IA externa) ejecute las herramientas de tu servidor. Usa Cloud API Gateway o tokens Bearer para proteger el acceso.

Resumen de Arquitectura de Despliegue

EntornoFastAPIFastMCP
LocalHTTP (Uvicorn, puerto 8000)STDIO (Línea de comandos / subproceso en Claude Desktop / Cursor)
GCPCloud Run (Contenedor HTTP administrado)Cloud Run (HTTPS + Server-Sent Events / SSE) + API Gateway

Flujo Visual de Infraestructura en GCP (Arquitectura)

Este diagrama representa cómo se conectan los componentes de Google Cloud para exponer tus herramientas de IA de forma segura a través de Internet utilizando el protocolo MCP.



Diagrama de Secuencia

Flujo de Ejecución en GCP

Este diagrama muestra el ciclo de vida de una llamada a una herramienta desde que el LLM decide interactuar con el servidor FastMCP alojado en la nube hasta que obtiene la respuesta.


Resumen sobre FastAPI vs. FastMCP:

1. Enfoque y Propósito

  • FastAPI: Framework web tradicional diseñado para construir APIs REST/gRPC (HTTP) destinadas a humanos, aplicaciones móviles, frontends (React, Angular) y microservicios.
  • FastMCP: Framework especializado en el Model Context Protocol (MCP) diseñado exclusivamente para dar contexto, datos y herramientas de ejecución (Tools) a agentes de Inteligencia Artificial (como Claude Desktop, Cursor o LangGraph).

2. Diferencias Técnicas Clave

  • Interfaz: FastAPI usa rutas tradicionales (@app.get), mientras que FastMCP usa decoradores semánticos orientados a IA (@mcp.tool, @mcp.resource).
  • Comunicación: FastAPI requiere infraestructura de red estándar. FastMCP lee los docstrings y tipos de Python para que el LLM entienda qué hace la función automáticamente.

3. Consideraciones de Despliegue

  • Entorno Local: FastAPI corre bajo servidores ASGI como uvicorn (abriendo puertos). FastMCP brilla localmente usando STDIO (entrada/salida estándar), ejecutándose como un subproceso seguro sin necesidad de abrir puertos de red.
  • Entorno GCP (Nube): Ambos se benefician de la naturaleza Serverless de Google Cloud Run en contenedores Docker. La diferencia radica en que FastMCP requiere activar el transporte SSE (Server-Sent Events) para mantener canales de comunicación bidireccional abiertos con el LLM, además de protección crítica con Cloud API Gateway para evitar accesos no autorizados.

Publicar un comentario

0 Comentarios