Creando y utilizando una herramienta MCP con PHP y VS Code

Rate this post

El ascenso de los Grandes Modelos de Lenguaje (LLM) está suponiendo una revolución en el mundo digital, e incluso en otros ámbitos laborales (alejados de la tecnología) aumentando la productividad. Desde la creación de contenido hasta la atención al cliente, incluso, la investigación científica. A medida que han ido entrenando nuevas iteraciones de modelos, se ha ido haciendo cada vez más pequeña la distancia entre su resultado y el de una persona. Sin embargo, esta revolución enfrenta desafíos significativos en la gestión del contexto: ventanas de contexto limitadas que olvidan interacciones pasadas, la redundancia (requiriendo el envío de todo el contexto en cada nueva interacción en sucesivas respuestas encadenadas), la falta de interoperabilidad entre sistemas y los costes asociados.

Es aquí donde emerge la propuesta del Model Context Protocol (MCP, de la mano de Anthropic en noviembre del 2024), un protocolo que tiene por objetivo el intercambio de información entre sistemas. A lo largo de este artículo vamos a explorar qué es MCP, los problemas fundamentales que busca resolver, su funcionamiento a nivel conceptual, los beneficios potenciales que ofrece y las implicaciones que tiene para aumentar las capacidades de estos modelos.

El principal problema con los LLMs

La gran evolución que hemos tenido a lo largo de varios años con los LLMs ha sido exponencial. Pero el principal problema que tienen es la limitación de responder con la información con la que fueron entrenados hasta la fecha de corte (el modelo se queda entrenado con los datos pasados). Esto limita el uso que podemos hacer de estos modelos a la hora de utilizarlos. La forma de mitigar esto, fue a través de RAG. Esta técnica consiste en realizar búsquedas del contenido relaciondo con nuestra tarea (a través de diferentes técnicas, como bases de datos vectoriales, por ejemplo) y las incluye como contexto en la tarea a realizar. De esa forma, el modelo es capaz de llevarla a cabo (por ejemplo, podemos buscar un listado de entradas de nuestra web en WordPress, y añadirle los que tengan relevancia al contexto para que nos responda una pregunta sobre alguno de ellos). El principal problema de esta técnica es:

  • No hay una forma estándar de implementar estas técnicas.
  • Estamos limitados por el contexto de los modelos (no podemos dar un documento completo para que realice un resumen sobre él, si es muy grande). En la actualidad está bastante limitado en la gran mayoría de proveedores (a excepción de gemini, el resto están sobre los 256K de tokens).
  • Que tengamos que usar contextos tan grandes, supone un costo elevado de ejecución del modelo (la facturación se basa en la cantidad de tokens de entrada y salida). A mayor cantidad de contexto, más cara nos resultará realizar la tarea.
  • El modelo no va a saber interactuar con información externa al contexto que le proporcionamos y que no conozca previamente a la fecha de corte de su entrenamiento.

¿Qué es el Model Context Protocol (MCP)?

El Model Context Protocol (MCP) tiene por objetivo brindar a los modelos de lenguaje la capacidad de acceder a información, herramientas y servicios externos de forma estándar. Que sea común lo que permite es:

  • Aumentar las capacidades de los LLM, exponiendo la posibilidad de crear herramientas para que interactuen (tu sistema de ficheros, por ejemplo).
  • Los recursos pueden ser usados por otros modelos sin necesidad de escribir adaptadores específicos para cada uno (pudiendo usar diferentes proveedores).
  • Simplificar la cantidad de contexto necesario que el modelo necesita para usar el recurso (aspecto crítico, debido a la limitación que suele ser habitual de unos 256K de tokens y el coste asociado a la cantidad de tokens).

Desde su salida, ha ganado mucha popularidad en un breve periodo de tiempo. Actualmente cuenta con un gran número de implementaciones en varios proveedores (tanto locales como en la nube), que te permiten realizar tareas sobre otros sistemas (algo similiar a lo que sucedió con el uso masivo de los webhooks).

¿Cómo Funciona MCP?

MCP es una arquitectura de cliente-servidor (puedes consultar la especificación en especificación) que cuenta con con 3 actores:

  • Host: son aplicaciones que tiene la capacidad de usar MCP.
  • Client: crean una conexión entre host y servidor.
  • Server: proporcionan contexto, herramientas y servicios al cliente.

Los mensajes usan el estandar JSON-RPC. El protocolo usa las siguientes dos capas para realizar la comunicación:

  • Capa de protocolo: maneja todo lo relacionado con el mensaje (formato, petición, respuesta, etc.).
  • Capa de transporte: se encarga de la transmisión del mensaje a través de Stdio; o a través de HTTP con SSE (Server Sent Events) para permitir la comunicación asíncrona (para evitar que el servidor MCP bloquee la ejecución del modelo).

Creando y utilizando una herramienta MCP

En esta pequeña prueba de concepto, lo que vamos a hacer es crear una herramienta con PHP (que creará DNIs españoles a través de fakerphp/faker), y serviremos su resultado al host a través de la librería php-mcp/server. Para realizar pruebas de generación de DNIs, utilizaremos el modo agente de VS Code.

Lo primero que vamos a hacer es instalar las dependencias que vamos a usar para nuestra herramienta:

Lo próximo que vamos a hacer es escribir el servidor: mcp-server.php. Será el encargado de servir la respuesta al host, creando el servidor y añadiendo nuestra herramienta, además, hemos incluído un logger para poder ver los mensajes que va generando el servidor.

Y McpGenerateDni.php será el encargado de generar el DNI.

A continuación, vamos a crear un pequeño Dockerfile con la imagen de PHP que usamos en nuestro día a día, además le vamos a añadir la extensión pnctl (necesario para el servidor de MCP). Esto será lo que ejecute VS Code en modo agente. De esta forma tenemos empaquetada la herramienta en un contenedor, con todas las ventajas que nos ofrece (replicarlo en distintos entornos entre otras).

Y buildeamos la imagen:

Ahora solo nos queda configurar el servidor de MCP en VS Code:

Sólo nos queda probar nuestra herramienta usando VS Code eligiendo el modo agente (pulsando el icono de «refrescar» levantará el contenedor y sobre el otro icono de «herramientas», nos mostrará las que tienes disponibles en tu instalación):

Conclusiones

Es una tecnología que nos ha permitido dotar a los modelos de lenguaje de un gran capacidad para acometer tareas. Aún así, a pesar de su enorme potencial, todavía quedan grandes desafíos por resolver, entre ellos, la adopción por parte de toda (o la gran mayoría) de la industria. Esto permitiría acelerar la creación de más soluciones y que fueran mas polivalentes (al igual que lo hizo la estandarización de la forma de llamar a los modelos a través de la API con el mismo formato, sin importar el proveedor).

A pesar de que es una tecnología que ha ganado mucha popularidad, teniendo en cuenta el breve periodo de tiempo que tiene. Hay que ser conscientes de que los modelos de leguanje todavía tienen comportamientos no deseados, y brindarles herramientas que conlleven riesgos de pérdida de información o corrupción de la misma puede ser un grave peligro. Si te interesa seguir investigando en el tema, existen ya plataformas donde agrupan una gran cantidad de servidores creados por la comunidad y empresas mcp.so y servers.

Comparte
¿Quieres más información?
Ponte en contacto con nosotros.
Picture of Jordi Mahiques
Jordi Mahiques
Backend developer - Departamento de desarrollo

Enviar Comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Suscríbete a nuestra newsletter
para estar al día en el mundo online
¿Tienes alguna incidencia?

Cuéntanos qué ocurre
y nos pondremos con ello lo antes posible.

    Este sitio está protegido por reCAPTCHA, y la Política de privacidad y Términos de servicio de Google.

    ¡Cuéntanos tus ideas!
    +34 96 653 19 14
    info@acceseo.com

      Este sitio está protegido por reCAPTCHA, y la Política de privacidad y Términos de servicio de Google.

      Resumen de privacidad

      Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.