Expone una API REST interna como un MCP en menos de una hora
Cuándo usarlo: Tienes una API de la empresa que los agentes deberían poder llamar, y no quieres escribir una especificación de cliente desde cero.
Requisitos previos
- Python 3.10+ —
python --version - uv instalado —
curl -LsSf https://astral.sh/uv/install.sh | sh
Flujo
-
Inicializa el proyectoGenera un proyecto de servidor FastMCP llamado 'acme-api-mcp' con una herramienta inicial. Usa uv para gestión de dependencias.✓ Copiado→ pyproject.toml + server.py con un ejemplo de @mcp.tool funcional
-
Envuelve los 3 endpoints de mayor valorMi API interna tiene endpoints /orders/{id}, /customers/search, /invoices/{id}/pdf. Escribe una herramienta FastMCP para cada uno, usando httpx.AsyncClient y leyendo AUTH_TOKEN del entorno.✓ Copiado→ 3 funciones decoradas con type hints + docstrings que se conviertan en descripciones de herramientas
-
Prueba localmente con el MCP InspectorEjecuta el servidor con
uv run mcp dev server.py. Abre el inspector y llama a cada herramienta con una entrada realista.✓ Copiado→ Las herramientas devuelven JSON esperado, sin trazas de pila
Resultado: Un servidor MCP funcional que puedas apuntar a Claude Desktop o a cualquier cliente MCP.
Errores comunes
- Los secretos se filtran en las descripciones de herramientas porque los imprimiste en docstrings — Usa docstrings para describir el comportamiento, no ejemplos con tokens reales. Carga secretos a través de
os.environy nunca los repitas en errores - Async + sync mezclados, causa errores de bucle de eventos — Elige uno — si tu cliente HTTP es async, haz toda la herramienta async; no llames
asyncio.rundentro de una herramienta