MCP: Un protocolo común para LLMs
El protocolo MCP (Model Context Protocol), publicado a finales del año pasado, se ha establecido como estándar para la interacción de LLMs con "herramientas" y datos externos. Este sistema, basado en una arquitectura cliente-servidor, permite expandir las funcionalidades disponibles para LLMs, sin necesidad de reescribir toda la capa de interacción entre el modelo y la aplicación externa.
¿Cómo funciona?
El protocolo utiliza el modelo clásico cliente-servidor. Los servidores proporcionan acceso a herramientas, recursos (ej., archivos), prompts adicionales e incluso pueden solicitar interactuar directamente con el LLM o el usuario para tareas específicas. El cliente, por otro lado, es la aplicación en sí que gestiona la comunicación con el modelo de lenguaje y el usuario.
¿Cómo se puede usar?
El protocolo define dos formas de comunicación, llamadas transports, entre clientes y servidores:
-
Local: Un servidor MCP local se comunica con el cliente mediante la entrada y salida estándar (stdin y stdout), creando un subproceso y vinculando los canales. La mayoría de servidores solo soportan esta modalidad, que, según el estándar, requiere que parámetros adicionales, como tokens de autenticación, se pasen como argumentos al crear el proceso.
-
HTTPS/SSE: Este transport está enfocado a servidores MCP remotos, a los que el cliente se conecta usando peticiones HTTP y recibe respuestas tanto en formato JSON como SSE (Server-Sent Events). Este transport ha cambiado en las dos revisiones del protocolo, y todavía no hay muchos servidores que soporten ni la última versión del protocolo, ni requisitos como autenticación OAuth 2.1. Ejemplos notables de este tipo de servidores MCP son el de GitHub (En beta) o Microsoft Azure, entre otros.
¿Qué permiten hacer?
Un servidor MCP esencialmente define una serie de herramientas, recursos, prompts y otras funcionalidades más avanzadas como sampling para interactuar directamente con el LLM del cliente MCP.
-
Herramientas: Son procesos que el LLM puede "llamar" para interactuar con la aplicación o con sistemas externos, como APIs. Son la forma en que el LLM interactúa con el sistema más allá de generar texto.
-
Recursos: Son formas en las que el servidor expone contexto adicional para el LLM, pueden ser archivos, URLs, etc. Esta funcionalidad está enfocada a ser administrada por el usuario, quien pueda elegir qué recursos expuestos por el servidor se añaden al contexto del modelo.
-
Sampling: Es una forma en la que el servidor MCP interactúa con el LLM en el cliente MCP, sin necesidad de configuración adicional.
¿Cómo se puede usar?
Aplicaciones de IA generativa, como Claude Desktop, o IDEs como Cursor o Visual Studio Code (Con Github Copilot), permiten vincular directamente servidores MCP, tanto locales como remotos. Una vez configurados, las diferentes herramientas y recursos se pueden activar o desactivar para ajustar más detalladamente el contexto disponible para el LLM.
OpenAI también soporta usar servidores MCP remotos en su API, lo que da al modelo acceso a estas herramientas durante la generación y soporta interactuar directamente con el servidor antes de dar una respuesta a la petición HTTP.