Avanzado Lección 1 de 6 ≈ 65 min de lectura Especificación 2026-07-28

Diseño de servidores MCP

Especificación MCP 2026-07-28 · revisada el 2 de octubre de 2026

Refactoriza nortia-pedidos de un diseño ingenuo a uno de producción: tools orientadas a tarea, esquemas estrictos, estado con identificadores emitidos por el servidor, errores que el modelo puede usar, límites de tamaño y una estructura de proyecto mantenible.

Qué aprenderás

  • Decidir cuántas tools expone un servidor y de qué tamaño, partiendo de las tareas del usuario y no de los endpoints
  • Escribir nombres, descripciones y esquemas estrictos que el modelo pueda usar sin adivinar
  • Mantener estado entre llamadas con identificadores emitidos por el servidor y ligados al sujeto
  • Diseñar errores que digan al modelo qué hacer, y acotar el tamaño de cada resultado
  • Estructurar el proyecto con el dominio separado del registro MCP, dependencias inyectadas y auditoría transversal

Contenido de la lección

  1. 01 El problema
  2. 02 Tools por tarea: granularidad, nombres y descripciones
  3. 03 Esquemas estrictos, salida estructurada y anotaciones
  4. 04 Estado entre llamadas: identificadores emitidos por el servidor
  5. 05 Errores que el modelo puede usar
  6. 06 Paginación y tamaño de los resultados
  7. 07 Estructura del proyecto: dominio, registro y composición
  8. 08 En producción

Además: quiz de comprobación y desafío práctico.

Extracto

El nortia-pedidos de la lección 9 del nivel Básico tenía una sola tool, buscar_pedido. Tres meses después, soporte y almacén han pedido más: listar pedidos por estado, ver el envío, abrir incidencias de entrega. Quien lo amplió tomó el camino corto y añadió una tool por cada operación de la API interna de pedidos, con el nombre del endpoint.

El servidor compila y responde, pero el agente de soporte se comporta mal. Abre incidencias duplicadas y a veces enseña a una agente los resultados de la búsqueda de otro. Contesta «no hay pedidos retrasados» cuando los hay, y una pregunta sencilla deja 24.000 caracteres en el contexto. Y hay una tool que devuelve el correo y el teléfono del cliente a cualquiera que los pida. Ninguno de estos fallos viene del protocolo. Todos salen de decisiones de diseño.

Fin del extracto · la lección sigue con 7 secciones más

Artículos relacionados

Preguntas frecuentes

¿Cuántas tools debería tener un servidor MCP?

No hay un número correcto: la cantidad y el tamaño de las tools se deciden a partir de las tareas que el usuario quiere hacer, no copiando los endpoints de la API que hay detrás. El modelo elige qué llamar guiándose por el nombre, la descripción y el esquema de cada tool, de modo que un servidor mal dimensionado lleva al agente a equivocarse aunque el código funcione. En la lección se rehace nortia-pedidos desde un diseño ingenuo, que expone cada endpoint de la API interna como una tool, hasta uno pensado para producción.

¿Cómo guarda estado un servidor MCP si el protocolo no tiene sesión?

Con identificadores: la especificación 2026-07-28 pide que cualquier estado que dure más de una petición se nombre con un identificador explícito, y que el cliente lo mande en cada llamada. Hacerlo bien importa, porque un estado guardado a escondidas en el proceso del servidor puede acabar mostrando a una persona los resultados de otra. En la lección se ve cómo diseñar esos identificadores para que los emita el servidor y queden ligados a quien llama.

¿Cómo debe devolver errores un servidor MCP para que el modelo los entienda?

Como errores de ejecución, es decir, un resultado normal marcado con isError: true y acompañado de un texto, que es lo que los clientes entregan al modelo para que corrija su siguiente paso. Ese texto es lo único que el modelo tiene para decidir si reintenta, pide algo al usuario o se detiene, así que redactarlo forma parte del diseño de la tool tanto como su esquema. En la lección se ve cómo escribir esos errores en un servidor real y cómo acotar además el tamaño de cada resultado.

Temario del curso