Integración de Ollama con el Model Context Protocol (MCP)
Clase 13 de 26 • Curso de MCP
En 2023, Anthropic lanzó Claude Desktop con soporte para un nuevo protocolo llamado Model Context Protocol, marcando un cambio significativo en cómo las aplicaciones se comunican con modelos de lenguaje.
Hoy vamos a explorar cómo utilizar Ollama junto con el Model Context Protocol o MCP. Si trabajas con modelos de lenguaje y buscas una forma estandarizada de comunicarte con ellos, especialmente en entornos locales, esta sesión te va a interesar.
¿Qué es exactamente el Model Context Protocol?
El Model Context Protocol es un protocolo de comunicación que funciona con JSON-RPC para conectar modelos de lenguaje con aplicaciones de software. Surgió para resolver un problema muy específico: ¿cómo hacer que los modelos de lenguaje interactúen de forma estructurada con diferentes sistemas?
Piensen en MCP como un traductor universal entre diferentes idiomas tecnológicos. Así como un traductor permite que personas que hablan distintos idiomas se comuniquen, MCP permite que diferentes sistemas de software "hablen" con los modelos de lenguaje siguiendo reglas claras.
En esencia, MCP permite tres cosas fundamentales. Primero, que los modelos de lenguaje accedan a herramientas externas, datos y contexto. Segundo, que las aplicaciones envíen solicitudes a los LLMs y reciban respuestas de forma estandarizada. Y tercero, que todo esto ocurra de manera segura, rastreable y reproducible.
La arquitectura de MCP
MCP tiene dos componentes principales que necesitan entender. Por un lado está el cliente MCP, que envía solicitudes y lanza prompts - piensen en un editor de código como Cursor. Por otro lado está el servidor MCP, que gestiona herramientas, archivos y recursos que el LLM puede usar.
¿Cómo se comunican estos componentes? A través de JSON-RPC 2.0.
El rol de JSON-RPC 2.0
JSON-RPC 2.0 es una especificación ligera para realizar llamadas a procedimientos remotos que utiliza JSON como formato de codificación. Dentro de MCP, funciona como la base estructural para toda la comunicación.
Esta tecnología tiene cuatro características que la hacen ideal para MCP. Permite comunicación en ambas direcciones - bidireccional. Cada mensaje tiene un identificador único. Soporta notificaciones, es decir, mensajes que no requieren respuesta. Y separa claramente los errores de las respuestas exitosas.
En términos prácticos, cuando usas MCP, JSON-RPC 2.0 es el "lenguaje común" que permite que un cliente se comunique con un servidor. Por ejemplo, cuando escribes un comando en Cursor, este genera una solicitud en formato JSON-RPC que envía al servidor MCP. El servidor procesa esta solicitud estructurada, ejecuta la acción necesaria y devuelve una respuesta también en formato JSON-RPC.
Opciones de transporte en MCP
Una de las ventajas de MCP es su flexibilidad en cuanto a opciones de transporte. Pueden usar stdio - entrada y salida estándar - que es ideal para herramientas de línea de comandos. Es simple de implementar y funciona bien en entornos donde los procesos se comunican directamente.
También soporta HTTP/1.1 y HTTP/2, lo que facilita la comunicación asincrónica. Es excelente para servicios web o cuando necesitas integraciones remotas. HTTP/2 añade ventajas de rendimiento como la multiplexación.
Y está propuesto el soporte para WebSockets, que permite comunicación bidireccional persistente. Reduce la latencia al mantener la conexión abierta y es útil para aplicaciones que requieren actualizaciones en tiempo real.
Ollama en el contexto de MCP
Ahora, ¿dónde entra Ollama en todo esto? Ollama funciona como una plataforma para ejecutar modelos de lenguaje en entornos locales. Es particularmente útil para pruebas en ambientes controlados. Puede actuar como servidor MCP, respondiendo a solicitudes de clientes, y permite experimentación sin dependencia de servicios en la nube.
Comparémoslo con Claude Desktop, que también es compatible con MCP. Claude Desktop se centra en facilitar la interacción con los modelos de lenguaje Claude y expone capacidades de los LLMs a través del protocolo MCP. La principal diferencia radica en que Ollama se orienta a pruebas locales con diversos modelos, mientras Claude Desktop se especializa en proporcionar acceso a los modelos de Claude con todas sus capacidades específicas.
Un flujo de trabajo típico
Veamos cómo funciona un flujo de trabajo típico usando MCP. Todo comienza cuando una persona escribe un comando o una instrucción en un cliente MCP, como el editor de código Cursor.
En respuesta, Cursor actúa como cliente MCP y crea una solicitud en formato JSON-RPC que envía al servidor MCP - que podría ser Claude u Ollama.
El servidor MCP recibe la solicitud, analiza el contexto proporcionado y ejecuta la acción o herramienta solicitada. Por ejemplo, podría realizar una búsqueda en una base de datos para obtener información específica.
Cuando el servidor termina de procesar la solicitud, empaqueta los resultados en formato JSON-RPC y los devuelve al cliente Cursor, que los muestra al usuario.
MCP versus otros protocolos
Es importante entender cómo MCP se diferencia de otras soluciones existentes. Comparado con el Language Server Protocol o LSP, MCP toma inspiración directa de su estructura. Pero mientras LSP está enfocado en lenguajes de programación estáticos, MCP está adaptado específicamente para modelos de lenguaje.
Si lo comparamos con LangChain, vemos que LangChain es una biblioteca que define cadenas de pensamiento y herramientas, pero no funciona como un protocolo interoperable. MCP es un protocolo estandarizado para comunicación entre clientes y servidores, ofreciendo mayor interoperabilidad entre diferentes sistemas.
Y comparado con ReAct, que es un patrón de prompting que simula pensamiento y acción, MCP proporciona una estructura formal basada en JSON-RPC. Mientras ReAct carece de un mecanismo estandarizado de comunicación, MCP facilita interacciones más seguras, trazables y reproducibles.
Casos de uso prácticos
¿Qué posibilidades concretas abre MCP? En el área de agentes autónomos, estos pueden interactuar con herramientas reales de forma estandarizada. Un asistente virtual podría llamar a APIs externas - servicios meteorológicos, sistemas de reserva o bases de datos - siguiendo un formato común.
Para extensiones de IDEs, MCP facilita que los modelos de lenguaje analicen código existente y sugieran mejoras. Un programador podría pedir a través de Cursor que un modelo de lenguaje revise automáticamente su código, encuentre errores potenciales o genere documentación.
Y en el caso de middleware para sistemas legacy, MCP puede funcionar como puente entre sistemas antiguos y modelos modernos de IA. Un caso práctico sería conectar un sistema de inventario antiguo con un asistente basado en IA. El middleware MCP traduce las consultas en lenguaje natural a llamadas que el sistema antiguo puede entender.
Configuración de Ollama con MCP
Aunque el material específico sobre la configuración detallada de Ollama con MCP no está completamente documentado, podemos entender el flujo general. Se necesitaría instalar Ollama como servidor MCP y configurar una aplicación cliente que implemente el protocolo MCP.
Las comunicaciones seguirían el formato JSON-RPC 2.0, y el transporte podría ser mediante stdio, HTTP o WebSockets. El cliente enviaría solicitudes al servidor Ollama, que procesaría estas solicitudes utilizando el modelo LLM local, y las respuestas serían devueltas en formato JSON-RPC.
La ventaja principal de usar Ollama con MCP es que una vez implementado el protocolo, diferentes herramientas y modelos pueden comunicarse sin necesidad de crear integraciones personalizadas para cada combinación.
Lo que hemos visto hoy es cómo MCP está cambiando la forma en que interactuamos con modelos de lenguaje. La combinación de Ollama con MCP nos da la flexibilidad de ejecutar modelos localmente mientras mantenemos un protocolo de comunicación estandarizado. Esto significa menos tiempo creando integraciones personalizadas y más tiempo construyendo aplicaciones que realmente aprovechen el poder de los LLMs. La estandarización que ofrece MCP, junto con la capacidad de Ollama para ejecutar modelos localmente, abre un mundo de posibilidades para desarrolladores que buscan experimentar y construir soluciones robustas con modelos de lenguaje.