Cargando

MCP (Model Context Protocol) utiliza mensajes JSON para gestionar la comunicación entre clientes y servidores. Comprender estos tipos de mensajes es crucial para trabajar con MCP, especialmente cuando se trata de diferentes métodos de transporte como el transporte HTTP streamable.

Formato de mensaje

Toda la comunicación de MCP ocurre a través de mensajes JSON. Cada tipo de mensaje cumple un propósito específico, ya sea llamar a una herramienta, listar recursos disponibles o enviar notificaciones sobre eventos del sistema.

Aquí hay un ejemplo típico: cuando Claude necesita llamar a una herramienta proporcionada por un servidor MCP, el cliente envía un mensaje de "Call Tool Request" (Solicitud de llamada a herramienta). El servidor procesa esta solicitud, ejecuta la herramienta y responde con un mensaje de "Call Tool Result" (Resultado de llamada a herramienta) que contiene la salida.

Especificación de MCP

La lista completa de tipos de mensajes está definida en el repositorio oficial de la especificación de MCP en GitHub. Esta especificación es independiente de los distintos repositorios de SDK (como los SDK de Python o TypeScript) y sirve como la fuente autorizada sobre cómo debe funcionar MCP.

Los tipos de mensajes están escritos en TypeScript por conveniencia, no porque se ejecuten como código TypeScript, sino porque TypeScript proporciona una forma clara de describir estructuras de datos y tipos.

Categorías de mensajes

Los mensajes de MCP se dividen en dos categorías principales:

Mensajes de solicitud-resultado

Estos mensajes siempre vienen en pares. Envías una solicitud y esperas recibir un resultado a cambio:

  • Call Tool Request → Call Tool Result
  • List Prompts Request → List Prompts Result
  • Read Resource Request → Read Resource Result
  • Initialize Request → Initialize Result

Mensajes de notificación

Estos son mensajes unidireccionales que informan sobre eventos pero no requieren una respuesta:

  • Progress Notification - Actualizaciones sobre operaciones de larga duración
  • Logging Message Notification - Mensajes de registro del sistema
  • Tool List Changed Notification - Cuando cambian las herramientas disponibles
  • Resource Updated Notification - Cuando se modifican los recursos

Mensajes de cliente vs. servidor

La especificación de MCP organiza los mensajes según quién los envía:

Mensajes de cliente incluyen solicitudes que los clientes envían a los servidores (como llamadas a herramientas) y notificaciones que los clientes podrían enviar.

Mensajes de servidor incluyen solicitudes que los servidores envían a los clientes y notificaciones que los servidores transmiten.

Por qué esto importa

Comprender que los servidores pueden enviar mensajes a los clientes es particularmente importante cuando se trabaja con diferentes métodos de transporte. Algunos transportes, como el transporte HTTP streamable, tienen limitaciones sobre qué tipos de mensajes pueden fluir en qué direcciones.

La idea clave es que MCP está diseñado como un protocolo bidireccional: tanto los clientes como los servidores pueden iniciar la comunicación. Esto se vuelve crucial cuando necesitas elegir el método de transporte adecuado para tu caso de uso específico.