2025-04-21
Tutoriales LLM AI Large Language Models artificial intelligence java spring softwareEl Model Context Protocol, MCP por sus siglas en inglés, representa un avance significativo en la forma en que las aplicaciones interactúan con los LLMs (Large Lenguge Models). En este artículo, exploraremos cómo funciona MCP y crearemos nuestro propio MCP server.
MCP es un protocolo que permite a las aplicaciones exponer sus capacidades y funcionalidades como herramientas (tools) que pueden ser utilizadas por LLMs. Este protocolo facilita una comunicación bidireccional entre las aplicaciones y los LLMs (Large Language Models), permitiendo que los modelos de IA puedan invocar funciones específicas del dominio de la aplicación.
Los creadores son la gente de Anthopic creadores tambien de Claude, ya tienen varios SDKs en los lenguajes más populares y la documentación es una pinturita!
Los LLMs son geniales y pueden ser entranados para hacer cosas muy específicas. Es bastante conocido que se entrenan con muchisima data, entonces, qué pasa cuando le pedimos algo de lo cual no tiene información? En mi opinión este es el problema que viene a resolver los MCP, podemos alimentar nuestro LLM con data de nuestro dominio para que ejecute una tarea con esa data que de otro modo no hubiese podido obtener. Además, te va a permitir tener una capa entre LLM y tu aplicación, lo que te permite cambiar el LLM en cualquier momento y tu código no tiene que cambiar en lo mas minimo, esto es un golazo, no?
Podemos ver el diagrama abajo que explica la conexión entre los LLMs, nuestros MCPs y el resto de aplicaciones o servicios.
Exposición de Tools: Las aplicaciones definen sus capacidades como herramientas o mejor dicho tools (para usar una sola terminología, no porque me guste mezclar idiomas).
Comunicación Estándar: MCP establece un formato común para el intercambio de información. En el diagrama la comunicación va en ambos sentidos, usando el model cliente-servidor; es importantisímo aclarar que en este caso el cliente es el LLM y nosotros vamos a crear un servidor MCP.
Ejecución Contextual: Los LLMs pueden invocar estas herramientas basándose en el contexto de la conversación, analizan el prompt que les diste y buscan la mejor tool para ejecutar.
Para ilustrar el funcionamiento de MCP, vamos a crear una aplicación con Spring boot que se conecte con el API REST de Kraken, un exchange de cryptos y luego usaremos este MCP con GitHub Copilot en Visual Studio Code. La integración funciona asi:
Y lo que pasa dentro de nuestro MCP server podemos verlo asi:
En el diagrama podemos ver que parseamos (el objecto OhlcData) la respuesta del API de Kraken antes de devolverla al LLM. En algunos casos esto ni siquiera es necesario porque si obtenemos una respuesta en JSON, por ejemplo, y su estructura es clara, un LLM puede facilmente interpretarlo y obtener contexto de la respuesta cruda. La pregunta es, por qué parseamos entonces? Simplemente para ilustrar una implementación un poco mas compleja; en algunas integracion habran datos que no quieres que un LLM obtenga, bien sea por propiedad intelectual, datos sensibles o cualquier otra razón.
@SpringBootApplication
public class McpDemoApplication {
@Bean
public ToolCallbackProvider toolCallBackProvider() {
return MethodToolCallbackProvider.builder()
.toolObjects(cryptoService)
.build();
}
}
Todo lo que hace falta para crear un servidor MCP es declarar un ToolCallbackProvider
. Todo el proceso de levantar un servidor lo hace Spring AI.
La aplicación expone sus capacidades como tools que pueden ser invocadas por los LLMs. Por ejemplo:
@Service
public class CryptoService {
@Tool(description = "Get OHLC data for a specific crypto and interval in minutes")
public List<OhlcData> getOHLCForPair(String pair, int interval) {
// Implementación
}
}
Es importante agregar descripción para darle al LLM el mejor contexto posible, para esto usamos la anotación @Tool
. También existe otra anotación para parametros @ToolParam
.
Para habilitar MCP se requiere una configuración específica en Visual Studio Code:
Si bien no es un demo en vivo, abajo la captura de pantalla:
Arriba al inicio el prompt que use, en el circulo rojo se ve que usa la @Tool
que definimos y abajo la respuesta.
MCP representa un paso significativo en la evolución de la integración entre aplicaciones y LLMs. El ejemplo presentado demuestra cómo una aplicación Spring Boot puede exponer funcionalidades de manera estructurada y accesible para los LLMs. En este caso es solo el uso de un API REST, pero puede ser muchisimo más complejo.
Existen muchos MCP gratis que puedes conectar con tus LLM, ten en cuenta simpre usar los MCP en los cuales confies.