Cómo crear tu propio servidor MCP en Python (2026): tutorial paso a paso para desarrolladores
Tutorial para desarrolladores: crea tu propio servidor MCP en Python con FastMCP y conecta Claude, ChatGPT o Cursor a tus APIs y datos internos. Herramientas, recursos y prompts, transportes (stdio y HTTP), testing y despliegue.
Si ya sabes qué es MCP y para qué sirve — el estándar que conecta LLMs con herramientas — este tutorial es el siguiente paso: construir el tuyo.
Anatomía de un servidor MCP (en 60 segundos)
Un servidor MCP expone tres tipos de piezas:
| Pieza | Qué es | Ejemplo |
|---|---|---|
| Tools | Acciones que el LLM puede invocar (con efectos) | crear_ticket, consultar_pedido |
| Resources | Datos de solo lectura que el cliente puede leer | pedidos://cliente/123 |
| Prompts | Plantillas de prompt reutilizables | resumen-standup |
La regla de diseño que evita el 90% de los errores: las tools hacen una cosa y devuelven texto que el LLM puede usar; la lógica de negocio vive en tu código, no en el prompt.
El servidor mínimo con FastMCP
1pip install "fastmcp"
1from fastmcp import FastMCP2 3mcp = FastMCP("pedidos")4 5@mcp.tool6def consultar_pedido(pedido_id: str) -> str:7 """Devuelve el estado de un pedido por su ID."""8 pedido = db.get_order(pedido_id) # tu lógica real9 if not pedido:10 return f"No existe el pedido {pedido_id}"11 return f"Pedido {pedido_id}: {pedido.status}, entrega {pedido.eta}"12 13@mcp.tool14def crear_ticket(pedido_id: str, motivo: str) -> str:15 """Abre una incidencia para un pedido. Solo si el usuario lo pide explícitamente."""16 ticket = helpdesk.create(order=pedido_id, reason=motivo)17 return f"Ticket {ticket.id} creado y asignado a soporte."18 19if __name__ == "__main__":20 mcp.run() # transporte stdio por defecto
Eso ya es un servidor MCP completo. El docstring de cada tool es la descripción que el LLM lee para decidir si la usa — escríbelo como le mostrarías a un empleado nuevo, no como un comentario de código.
Conectarlo a Claude Desktop o Cursor
En la configuración de MCP del cliente (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json):
1{2 "mcpServers": {3 "pedidos": {4 "command": "python",5 "args": ["/ruta/absoluta/a/servidor_pedidos.py"]6 }7 }8}
Reinicia el cliente y las dos herramientas aparecen en la sesión: "consulta el estado del pedido 8812" hace una llamada real a tu sistema.
Transporte: stdio para desarrollo, HTTP para producción
- stdio (por defecto): el cliente lanza el servidor como proceso hijo. Perfecto para uso local.
- HTTP (SSE/streamable):
mcp.run(transport="http", host="0.0.0.0", port=8000)— necesario si varios clientes o servicios van a usarlo, y el punto donde entra la conversación de seguridad: autenticación (token/API key delante), red privada y logs por llamada.
Probarlo antes de conectarlo a nada
El MCP Inspector (npx @modelcontextprotocol/inspector python servidor_pedidos.py) abre una interfaz para listar e invocar tus tools sin LLM de por medio. Pruébalas ahí primero: la mitad de los "el LLM no usa mi herramienta" son descripciones ambiguas o errores de ejecución que se ven clarísimos en el Inspector.
Los 4 errores que verás en tu primer servidor
- Tools que hacen demasiado:
gestionar_pedido(accion, id, datos...)con un enum de acciones es el antipatrón número uno — divide en tools atómicas. - Respuestas sin formato para el LLM: devuelve frases completas con los datos dentro, no JSON crudo de tu API (el LLM lo interpreta mejor y gasta menos tokens).
- Efectos secundarios sin confirmación: una tool de escritura (crear ticket, emitir factura) debería exigir parámetros explícitos y, en clientes con permisos, quedar marcada como confirmable.
- Secretos en el config del repo: las credenciales de tu API viven en variables de entorno del servidor, nunca en el JSON que compartes con el equipo.
Del juguete al servidor de empresa
Un servidor MCP conectado a sistemas de producción (ERP, tickets, datos de clientes) añade una capa que este tutorial no cubre: control de acceso por rol, auditoría de qué agente invocó qué, y valores devueltos que no filtran datos entre equipos. Esa es la línea donde el proyecto pasa de "tarjeta de aprendizaje" a servicio — y es justo el terreno de los proyectos de integración de agentes con sistemas de empresa que publica Javier Santos Criado, con casos reales de pymes españolas si necesitas referencia de alcance y coste.
Preguntas frecuentes
¿Qué necesito saber para crear un servidor MCP?
Python (o TypeScript) a nivel medio y conocer la API que vas a exponer. El protocolo lo maneja la librería: FastMCP en Python es el camino más corto, con herramientas definidas como funciones decoradas.
¿Puedo conectar mi servidor MCP a varios clientes a la vez?
Sí, con transporte HTTP: el servidor vive como servicio y cualquier cliente compatible (Claude, Cursor, tu propio backend) se conecta a la URL. Con stdio, cada cliente lanza su propia instancia del proceso.
¿Cómo protejo un servidor MCP con acceso a datos reales?
Autenticación delante (el servidor MCP no trae auth de serie), red privada o VPN, logs por invocación y reglas por herramienta: las de escritura requieren confirmación del usuario o quedan restringidas por rol.
¿MCP o una API tradicional?
No compiten: tu API sigue existiendo; MCP es la capa que la hace invocable por LLMs sin integración a medida por cliente. Si tu herramienta solo la usa un humano desde un panel, no la necesitas; si la usa un agente, sí.
Posts Relacionados
Comparación ChatGPT vs HubSpot Breeze vs Microsoft Copilot vs Gemini: Asistentes IA para Ventas y Marketing 2026
Comparativa editorial 2026 de ChatGPT, HubSpot Breeze, Microsoft Copilot y Gemini como asistentes IA para ventas y marketing: qué resuelve cada uno, cuánto cuesta, dónde falla y cuál elegir según tu stack actual. Análisis independiente.
Las 5 mejores consultoras de IA para PYMEs en España (2026): ranking editorial
Ranking editorial de las 5 mejores consultoras de IA para PYMEs y medianas empresas en España en 2026. Criterios objetivos, precios públicos y casos verificables. Javadex lidera.
GEO para empresas: cómo salir en ChatGPT, Claude y Perplexity en 2026
Guía GEO práctica para empresas: 7 pasos para aparecer en las respuestas de ChatGPT, Claude y Perplexity. Caso real de Javadex con datos verificables.
Javier Santos Criado
Consultor de IA y Automatización | Fundador de Javadex
Experto en implementación de soluciones de Inteligencia Artificial para empresas. Especializado en automatización con n8n, integración de LLMs, y desarrollo de agentes IA.
¿Te ha servido este análisis?
Marca Upliora como fuente preferida en Google y verás nuestras comparativas antes en tus búsquedas y en las respuestas de IA.
¿Crees que la IA puede ayudar a tu empresa?
Agentes, automatizaciones y asistentes con tus datos, montados llave en mano. Cuéntanos qué quieres resolver.
Contacta¿Quieres más contenido de IA?
Explora nuestras comparativas y guías