Una inmersión profunda en los MCP, parte 1: ¿Qué es MCP, de todos modos?

Si sigues la IA, es casi seguro que hayas oído hablar del Protocolo de Contexto del Modelo (MCP). Desde que Anthropic anunció este nuevo estándar en noviembre de 2024, su popularidad se ha disparado. Hay MCP para enviar correos electrónicos, MCP para buscar en la web, MCP que ejecutan otros MCP. Los MCP permiten que los humildes LLM realicen solicitudes de extracción y reservas de vuelos. En mayo, Microsoft incluso anunció un Registro MCP para Windows que permite a las aplicaciones exponer funcionalidades a los agentes de IA

¡Muchísimas gracias! ¿Pero cómo? ¿Qué es MCP? ¿Cómo se utiliza? ¿Por qué se ha vuelto mucho más popular que los esfuerzos anteriores? ¿Cómo permite a los chatbots hacer cosas en el mundo real? ¿Y cómo puedes construir uno propio?

Cuando decidimos crear nuestro propio servidor MCP para la API de DeepL, parecía intimidante. Pero una vez que comprendes realmente cómo funcionan los MCP, cómo permiten a los agentes descubrir y utilizar herramientas, y cómo puedes crear un servidor MCP básico con 10 líneas de código, ya no da tanto miedo. En esta serie de publicaciones, intentaremos desmitificar este tema. Exploraremos:

  • ¿Qué es MCP?
  • Cómo utilizar MCP en un cliente de IA
  • Cómo crear un servidor MCP

¡Vamos!

¿Qué significa MCP?

MCP son las siglas de ModelContextProtocol(Protocolo de contexto de modelo).

El«modelo»es un modelo de IA. Puede ser cualquier tipo de superficie de IA, pero normalmente se basa en un LLM. Aquí nos referiremos a esto como un agente de IA o un asistente de IA.

«Contexto»se refiere al contexto en el que opera el agente de IA. En IA, a menudo hablamos de una «ventana de contexto», que se refiere a todo el contexto que incorpora un LLM cuando genera su respuesta a una solicitud: el historial de conversaciones, la solicitud del sistema y mucho más. Para que MCP funcione, una superficie de IA proporciona al LLM subyacente una indicación adicional que especifica qué herramientas puedes utilizar y cómo utilizarlas.

El «protocolo»es un conjunto de reglas que definen la forma en que dos entidades se comunican a través de una red. Un protocolo que utilizas a diario es el HTTP (HyperText Transfer Protocol), que regula la forma en que se comunican un servidor web y un cliente web.

Resumiendo: El «Protocolo de contexto del modelo» es un protocolo que proporciona el contexto que permite a los modelos de IA utilizar herramientas y recursos externos.

MCP es un estándar abierto inventado por dos ingenieros de Anthropic. Utiliza JSON-RPC, un protocolo popular para definir llamadas a funciones. Y está inspirado en Language Server Protocol, creado por Microsoft para desacoplar la lógica que hay detrás del manejo de los idiomas de programación de los IDE.

MCP no es un software, una aplicación ni una API. ¡Pero les da acceso a todos ellos a los agentes de IA!

¿Qué hace MCP?

Los LLM pueden dar respuestas inteligentes y útiles a las entradas del usuario. Pero no tienen acceso a servicios externos, ni forma de comunicarse con otro software, ni medios para recuperar información actualizada. MCP proporciona a cualquier superficie de IA la capacidad de enviar solicitudes a cualquier servicio de software y obtener una respuesta. Proporciona a un agente de IA una forma estándar de acceder a herramientas, recursos y datos externos.

Sin MCP, un cliente de IA es solo un cerebro sin cuerpo, sin forma de acceder al mundo exterior. ¡Con MCP, un cliente de IA puede ser un agente!

¿Quién puede utilizar MCP?

Dado que MCP es un estándar abierto, cualquiera puede implementar un cliente MCP o un servidor MCP.

El cliente puede ser cualquier aplicación basada en un LLM. Puedes utilizar MCP en aplicaciones como Claude Desktop, VSCode, Windsurf y Cursor. O puedes utilizar MCP con un agente de IA que hayas creado con un marco como LangChain o CrewAI.

Una de las razones es que se trata de un estándar abierto. Cualquier agente de IA puede implementar MCP, al igual que cualquier herramienta. Esto te da un mayor atractivo que las soluciones para el producto de una empresa específica, como OpenAI's Llamada de funciones.

Para crear esta solución universal, los creadores de MCP se inspiraron en el Protocolo de servidor de idioma (LSP). Antes de LSP, cuando un IDE quería implementar funcionalidades como el autocompletado o el resaltado de sintaxis para un idioma determinado, necesitabas desarrollar tu propia integración. El resultado fue lo que los creadores denominaron recientemente un problema m × n, en el que había que implementar servicios de idioma por separado para cada posible combinación de IDE/idioma. Con LSP, cada idioma de programación solo necesita una biblioteca de integración. Y un IDE que admita LSP puede admitir cualquier idioma de este tipo. Del mismo modo, una vez que un servicio implementa un servidor MCP, cualquier cliente de IA que admita MCP puede utilizarlo. El cliente solo necesita admitir MCP.

MCP es flexible en otros aspectos. Puede ejecutarse localmente o a través de una red. Y proviene de Anthropic, una empresa muy respetada que compartiría los beneficios de un estándar abierto.

¿Por qué los agentes de IA necesitan un protocolo estándar?

Dado que los LLM son tan buenos para comprender y aplicar información, ¿no pueden ya utilizar cualquier servicio de software cuya descripción se incluya en su material de aprendizaje? Después de todo, los LLM ya saben cómo utilizar muchas API populares, como podrás comprobar si pides ayuda a un asistente de programación como Copilot o Sourcegraph.

Pero si le dieras a un LLM acceso a todas las API de su material de aprendizaje, se produciría el caos. ¿Cómo sabrías qué API llamar y cuándo hacerlo? ¿Cómo obtendría tu clave de API y tus credenciales, y cómo utilizaría los servicios que requieren otros tipos de acceso? ¿Qué pasaría si quisieras saber la distancia en coche entre Kansas City y Des Moines, o la temperatura actual en Bangkok? Hay muchas maneras de encontrar esta información. Como usuario, deseas controlar las acciones que elige tu LLM. Esto es especialmente cierto cuando no se trata de recuperar información, sino de realizar acciones que afectan al mundo, como enviar un correo electrónico o pedir una pizza.

Es cierto que un agente podría leer y comprender una especificación OpenAPI de bajo nivel, o la documentación completa de la API, y luego realizar las llamadas a la API correspondientes. Pero MCP permite a los fabricantes de herramientas definir servicios de nivel superior que resultarían especialmente útiles para un agente de IA, orientando a ese agente en una dirección útil. Hasta ahora, esta es un área en la que los humanos aún sobresalen.

Por lo tanto, resulta que la mejor manera por ahora es definir explícitamente las herramientas y los recursos que el LLM puede utilizar y cómo puede utilizarlos. MCP lo hace a la manera tradicional, de forma determinista, no dejando que el LLM haga su magia, sino mediante código y JSON.

Pero, ¿cómo puede un LLM utilizar herramientas?

Básicamente, un LLM es una máquina que genera tokens, es decir, tokens que los seres humanos perciben como texto, imágenes, audio, etc. Entonces, ¿cómo puede una máquina así tener acceso a herramientas y recursos? ¿Cómo sabe que tiene ese acceso y cómo sabe cuál utilizar?

La clave es que, efectivamente, como señala Maximilian Schwarzmüller, los LLM solo pueden comunicarse con el mundo exterior mediante tokens. Tomáis tokens como entrada y producís tokens como salida. Y esos tokens pueden incluir entidades que significan «Quiero usar una herramienta». Por lo tanto, para indicar que deseas utilizar una herramienta o un recurso, y para utilizarlo realmente, un LLM genera tokens estándar que el software que lo rodea reconocerá como una llamada a la herramienta y la interceptará. A continuación, ese software llama a un servicio y devuelve el resultado al LLM.

El LLM podría utilizar tokens especializados aquí. Pero normalmente solo utiliza delimitadores y idioma específicos, de modo que puedes adaptar esta capacidad a un LLM existente mediante un ajuste fino. Por ejemplo, puedes utilizar etiquetas de inicio y fin entre corchetes que encierren JSON, como en esta muestra de salida del agente:

¡Claro! Puedo crear una nueva hoja de cálculo para ti. Espera un momento...

[tool-start] { "tool": "spreadsheets", "action": "create" } [tool-end]

Esto es precisamente lo que hicieron los investigadores en su artículo de 2023 sobre Toolformer, que demostró, como dice el título, que «los modelos de lenguaje pueden aprender por sí mismos a utilizar herramientas». En este estudio, los autores generaron material de aprendizaje que incluía representaciones en texto plano de llamadas a la API y sus resultados. Tras ajustar un LLM con estos datos adicionales, crearon un LLM que haría una llamada a esas API para generar una respuesta prometedora a una solicitud.

Utilizaron el formato simple:

[function_name(data) → result]

Por ejemplo, sabiendo que los LLM tienen dificultades con las matemáticas, proporcionaron una herramienta de calculadora. A continuación, incluyeron en el material de aprendizaje cadenas como esta:

De 1400 participantes, 400 (o [Calculadora(400 / 1400) → 0,29] 29 %) aprobaron la prueba.

y

El nombre deriva de «la tortuga», la palabra española para [MT(«tortuga») → tortuga] tortuga.

Al ajustar un LLM con esos datos, crearon un LLM que sabía cómo llamar a la API para generar la respuesta más prometedora a una solicitud determinada.

Pero no es necesario ajustar un LLM para que pueda utilizar herramientas. Resulta que lo único que necesitas es una indicación. Este artículo muestra cómo enseñar a un LLM a utilizar herramientas que utilizan JSON delimitado por [[qwen-tool-start]] y [[qwen-tool-end]], simplemente dándole una indicación adecuada. ¡Puedes probarlo tú mismo! Solo tienes que visitar tu chatbot favorito y decirle:

¡Enhorabuena! Ahora tienes la posibilidad de utilizar una herramienta para realizar multiplicaciones. Cuando necesites realizar un cálculo, solo tienes que introducir la siguiente sintaxis: 

[Matemáticas] { "arg1": {valor}, "arg2": {valor} } [/Math] 

donde, por supuesto, cada {valor} representa un valor que deseas multiplicar. Vale? 

A continuación, dale al LLM un problema matemático y observa cómo genera fielmente la sintaxis que le has proporcionado para tu herramienta matemática.

Los LLM modernos siguen utilizando las herramientas prácticamente de la misma manera. Por ejemplo, Anthropic describe aquí la forma en que construís un sistema de indicaciones para que Claude utilice herramientas en vuestra API.

¿Cómo gestiona un LLM los resultados de una herramienta?

¿Cómo recibe un LLM los resultados de la herramienta? Una vez más, todo gira en torno a los tokens. Una vez que el cliente de IA recibe la salida de una herramienta, la devuelve al LLM como entrada, pero de tal manera que el LLM sabe que se trata de la salida de la herramienta, no de la entrada del usuario final.

Poniendo todo junto

Para resumir, esto es lo que ocurre cuando un LLM utiliza una herramienta:

  • Tipos de usuarios en la entrada
  • LLM procesa esta entrada.
  • Mientras genera resultados, el LLM «decide» que llamar a una herramienta es la mejor manera de completar su salida. Esto significa que define un conjunto de tokens que, según lo entrenado que esté, le permitirán llamar a una herramienta.
  • El cliente de IA reconoce esos tokens como algo que debería invocar una herramienta, los intercepta, analiza el JSON en parámetros y cualquier otro elemento de la solicitud, y lo envía a la herramienta adecuada.
  • La herramienta genera resultados, lo que puede implicar o no el uso de una API. Lo devuelve al cliente de IA, que lo envía al LLM.
  • Procesos LLM: salida de la herramienta
  • LLM utiliza este resultado para continuar creando una respuesta para el usuario.

Y este ha sido mi rápido recorrido por lo que es MCP y cómo se implementa en los LLM. En mi próxima publicación, te mostraré cómo usar los MCP en tu propio cliente de IA.


Acerca del autor

Como evangelista de desarrolladores de DeepL, Ben Morss trabaja para ayudar a cualquiera a utilizar la API de DeepL para acceder a sus traducciones de IA de primera clase. Anteriormente, en Google, fue gestor de producto de Chrome y promotor de desarrolladores para una web mejor. Antes de eso, fuiste ingeniero de software en el New York Times y en AOL, y en otra época fuiste músico a tiempo completo. Obtuvo una licenciatura en Informática en Harvard y un doctorado en Música en la Universidad de California en Davis. Es posible que todavía lo encuentres haciendo música con la banda Ancient Babies, analizando canciones pop en Rock Theoryy escribiendo un musical que en realidad no trata sobre Steve Jobs.

Compartir