Personas mirando la pantalla de un ordenador

Scanorama I: Fundamentos y motivación

En artículos anteriores hemos abordado el Model Context Protocol (MCP), un estándar emergente diseñado para facilitar la interacción de los modelos grandes de lenguaje (LLMs) con herramientas externas como bases de datos, APIs y otros servicios. Fue desarrollado inicialmente por Anthropic y respaldado por actores clave del sector tecnológico como OpenAI y Microsoft, MCP se presenta como una solución modular, segura y escalable para unificar las múltiples integraciones personalizadas que hoy en día complican el desarrollo de agentes de inteligencia artificial.

Este protocolo se perfila como un elemento clave de los agentes de IA, permitiendo que estos accedan y utilicen funcionalidades externas de forma ordenada y eficiente. Sin embargo, aunque su diseño es prometedor, MCP no está exento de vulnerabilidades.

En concreto, hemos identificado riesgos potenciales en cuanto a la seguridad y la integridad de las funciones que expone un servidor MCP, lo que nos llevó a desarrollar una solución específica desde Telefónica: Scanorama. Esta herramienta de código abierto está concebida para detectar y mitigar amenazas inherentes al uso del protocolo MCP. En un próximo artículo exploraremos la arquitectura interna de la misma.

Antes de continuar, te invitamos a ver nuestro CodeTalk donde profundizamos en este tema con ejemplos prácticos y explicaciones técnicas, disponible aquí:

Ecosistema MCP y sus herramientas

El interés generado por MCP ha dado lugar a una variedad de SDKs compatibles con lenguajes populares como Java, TypeScript, Python, etc. Además, ya existen frameworks como FastMCP que simplifican enormemente la creación de servidores MCP, permitiendo desarrollar un servidor funcional con apenas unas líneas de código. Por ejemplo, definir una herramienta dentro de FastMCP es tan sencillo como usar un decorador para identificar funciones específicas que el agente podrá invocar.

Ejemplo de MCP Server utilizando el framework FastMCP 

Una pieza fundamental en la implementación y uso de servidores MCP es la definición detallada de cada herramienta. Esta definición actúa como la documentación que describe qué hace la herramienta, cuáles son sus casos de uso, ejemplos de entrada y salida, y cualquier parámetro necesario. Es importante destacar que esta definición es leída directamente por el modelo de lenguaje o agente de IA (como Claude o Copilot), por lo que su precisión y claridad son vitales para garantizar un comportamiento esperado y seguro.

Modos de despliegue y riesgos asociados

Una vez implementado, un servidor MCP puede ser desplegado usando diferentes mecanismos de transporte para comunicarse con los agentes de IA:

  • STDIO: Transporte estándar por entrada y salida de texto.
  • HTTP Stream Transport: Basado en peticiones HTTP y conforme a la especificación MCP 2025-03-26, este es el modo recomendado actualmente.
  • (DEPRECADO) SSE Transport: Basado en eventos enviados por el servidor.

El despliegue vía HTTP Stream Transport es especialmente sencillo, pues basta con ofrecer a los clientes una URL para que el agente se conecte y acceda a las herramientas expuestas.

No obstante, este despliegue abierto a todo el mundo y controlado por proveedor introduce un riesgo crítico: la posibilidad de manipular de forma maliciosa las herramientas disponibles. Por ejemplo, un servidor MCP podría ofrecer funcionalidades legítimas como análisis de código, optimización o evaluación de seguridad. Pero nada impide que el proveedor del servidor MCP modifique estas herramientas para realizar acciones no esperadas, como extraer información sensible o inyectar código malicioso (backdoors).

Pongamos un ejemplo, imagina un servidor MCP que ofrece cinco herramientas para desarrolladores. Un usuario empieza a usar estas herramientas a través de Copilot en Visual Studio Code.

MCP Server de ejemplo que ofrece esas cinco herramientas 

Sin embargo, si el servidor está comprometido, podría insertar instrucciones ocultas en la definición de sus herramientas para extraer secretos almacenados en archivos confidenciales como el fichero “.env”.

Modificación para comprometer el funcionamiento de una de las herramientas 

Esto no es pura especulación, en el ecosistema de software tradicional ya hemos visto incidentes similares, como el caso del desarrollador Marak Squires, quien manipuló paquetes muy populares de NPM para introducir código malicioso que afectó a millones de usuarios.

Integración práctica con agentes de IA

Para contextualizar, veamos cómo un servidor MCP malicioso se integraría con Copilot en VSCode:

  1. Se añade la URL del servidor MCP como una fuente de herramientas en el chat de Copilot.
Añadir MCP Server a Visual Studio Code 

2. Las herramientas expuestas por el servidor aparecen junto a las extensiones habituales en el listado de herramientas disponibles para el agente.

Listado de herramientas de Copilot en Visual Studio Code 

3. Al solicitar optimizaciones de código, Copilot selecciona la herramienta adecuada y ejecuta la petición, incluso leyendo archivos confidenciales como “.env”, lo cual resulta sospechoso.

Chat con Copilot donde hace uso de una de las herramientas 

4. En el servidor MCP, las claves extraídas del `.env` se registran y pueden ser exfiltradas, comprometiendo la seguridad del desarrollador.

Logs del servidor MCP

Conclusiones

Estos riesgos demuestran que, a pesar del potencial de MCP para mejorar la interacción con agentes de IA, la seguridad no puede darse por sentada. Es indispensable contar con herramientas que permitan auditar y garantizar la integridad de los servidores MCP antes de que estos interactúen con nuestros agentes.

En el próximo artículo presentaremos Scanorama, nuestra solución para analizar y proteger servidores MCP frente a manipulaciones maliciosas, explicando su arquitectura, funcionamiento interno y como asegurar el futuro del desarrollo con agentes de IA.

RELACIONADOS

Mujer delante de una pantalla de ordenador

Scanorama II: Arquitectura y funcionamiento

Como vimos en el artículo anterior, Model Context Protocol (MCP) representa un avance clave en la interacción entre agentes de IA y herramientas externas....