En esta página
Servidor en Python
Especificación MCP 2026-07-28 · revisada el 15 de octubre de 2026
Construye nortia-almacen con el SDK oficial de Python (mcp 2.x, MCPServer): tools con salida estructurada, resources, prompt, errores, stdio, Streamable HTTP, cliente y tests en memoria.
Qué aprenderás
- Construir un servidor MCP con el SDK oficial de Python (mcp 2.x) y explicar qué genera el SDK a partir de cada función
- Diseñar tools con salida estructurada mediante modelos Pydantic y elegir qué excepción lanzar en cada tipo de fallo
- Servir el mismo servidor por stdio y por Streamable HTTP y reconocer los mensajes que viajan en cada caso
- Probar el servidor con pytest y el cliente en memoria, sin procesos ni red
- Decidir entre el SDK oficial y el paquete fastmcp 4, y migrar código escrito con el FastMCP antiguo
Contenido de la lección
- 01 El problema
- 02 El SDK oficial y dónde queda FastMCP
- 03 Tools con salida estructurada
- 04 Resources y prompt
- 05 Ejecutar y conectar: stdio y Streamable HTTP
- 06 Tests en memoria con pytest
- 07 En producción
- 08 Lo siguiente: llevarlo a producción
Además: quiz de comprobación y desafío práctico.
Extracto
La responsable del almacén BCN-02 empieza el turno preguntando a su asistente qué referencias están a punto de agotarse. Hoy la respuesta sale de una hoja que alguien exporta a mano desde la proyección de eventos de inventario. El equipo que mantiene esa proyección trabaja en Python, igual que el resto de la plataforma de datos de Nortia, y no va a adoptar Node para publicar un servidor MCP.
En la lección anterior construiste nortia-pedidos en TypeScript. Aquí construyes nortia-almacen en Python: dos tools de solo lectura, dos resources y un prompt. El protocolo es el mismo. Lo que cambia es cómo el SDK deduce las definiciones a partir del código. Hay dos requisitos que no son opcionales: un almacén del inquilino México no debe aparecer en una conversación de España, y cada llamada deja rastro.
Fin del extracto · la lección sigue con 7 secciones más
Artículos relacionados
- MCP Guías
- Servidores Guías
Migrar un servidor MCP a 2026-07-28: guía con TypeScript y Python
- Servidores Ecosistema
Los servidores MCP de Inditex por dentro: qué hacen bien y qué no
- Servidores Guías
Crear un servidor MCP en Python (2026): tutorial sin estado
Preguntas frecuentes
¿Cómo se crea un servidor MCP en Python?
Con el SDK oficial de Python, el paquete mcp, que desde su versión 2 implementa 2026-07-28 y necesita Python 3.10 o posterior: se crea un MCPServer, se registran funciones con decoradores y el SDK genera el inputSchema, la description y el outputSchema a partir de los tipos de los parámetros, el docstring y el tipo de retorno. mcp.run() lo sirve por stdio y mcp.run(transport="streamable-http") por Streamable HTTP. En la lección se construye nortia-almacen con tools de salida estructurada, resources, un prompt y tests en memoria con pytest.
¿Qué diferencia hay entre FastMCP y el SDK oficial de MCP para Python?
El nombre FastMCP se refiere hoy a dos cosas: la clase FastMCP del SDK oficial 1.x, que en la versión 2.x pasó a llamarse MCPServer, y el paquete independiente fastmcp, cuya versión 4 se apoya en el SDK oficial 2.x y además implementa 2026-07-28. El SDK oficial reúne servidor, cliente y tests en un solo paquete; fastmcp 4 tiene sentido si necesitas la extensión Tasks, que el oficial no implementa, o si ya tienes código escrito con él. Al actualizar a mcp 2.x, el import from mcp.server.fastmcp import FastMCP falla y hay que pasar a MCPServer.
¿Por qué un `print()` rompe un servidor MCP que funciona por stdio?
Porque en stdio la salida estándar es por donde viajan los mensajes JSON-RPC, uno por línea, y un print() en el código de una tool mete en ese flujo una línea que el cliente no sabe interpretar. Los registros y la auditoría deben ir a stderr, como hace el ejemplo de la lección con el módulo logging. Ocurre igual en cualquier lenguaje: por stdout solo pueden salir mensajes MCP.