Consultoría IA para empresas — 100% remoto, trabajamos con tu equipo in-house

Inicio/Blog/Cómo crear tu propio servidor MCP en Python (2026): tutorial paso a paso para desarrolladores
Volver al Blog
Tutoriales IA16 de septiembre de 202611 min

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.

En una frase: un servidor MCP es una API con un estándar que cualquier LLM ya sabe hablar — con la librería FastMCP, exponer tus herramientas (consultar tu base de datos, tu API interna, tus documentos) a Claude, ChatGPT o Cursor es un archivo de 30 líneas, y el trabajo de verdad está en el diseño de las herramientas y la seguridad, no en el protocolo.

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:

PiezaQué esEjemplo
ToolsAcciones que el LLM puede invocar (con efectos)crear_ticket, consultar_pedido
ResourcesDatos de solo lectura que el cliente puede leerpedidos://cliente/123
PromptsPlantillas de prompt reutilizablesresumen-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

bash
1pip install "fastmcp"

python
1from fastmcp import FastMCP
2 
3mcp = FastMCP("pedidos")
4 
5@mcp.tool
6def 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 real
9 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.tool
14def 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):

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

  1. 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.
  2. 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).
  3. 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.
  4. 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

JS

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.

Seguir en Google

¿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

Consultoría y formación en IA para empresas

Implementamos soluciones de inteligencia artificial adaptadas a tu negocio. Proceso 100% remoto — trabajamos con tu equipo in-house sin que tengas que desplazarte.

Sesión de 30 min · Sin compromiso