Agentes de IA y MCP

¿Qué es MCP? El Model Context Protocol explicado

El Model Context Protocol (MCP) es un estándar abierto para conectar aplicaciones de IA con herramientas y datos. Cómo funciona MCP, sus bloques de construcción y su seguridad.

Traducido del original en inglés. El código, los prompts y la salida de los modelos se mantienen en inglés.

El Model Context Protocol (MCP) es un estándar abierto que define cómo se conectan las aplicaciones de IA con herramientas y fuentes de datos externas. Anthropic lo presentó en noviembre de 2024 y desde entonces se ha adoptado en asistentes de IA, herramientas de programación y marcos de agentes.

El problema que resuelve MCP

Un modelo de lenguaje por sí solo solo puede producir texto. Para ser útil en el trabajo real necesita leer archivos, consultar bases de datos, buscar y llamar a API. Antes de MCP, cada aplicación de IA definía su propia forma de conectar todo eso, así que una herramienta creada para un asistente había que rehacerla para el siguiente.

MCP lo sustituye por un único protocolo. Un proveedor de herramientas escribe un servidor MCP una sola vez y cualquier aplicación compatible con MCP puede usarlo. La comparación habitual es la de un conector universal: un enchufe estándar en lugar de un cable distinto para cada dispositivo.

Cómo funciona MCP

MCP tiene tres roles.

  • Host: la aplicación de IA que usa la persona, como una aplicación de chat, un IDE o un agente.
  • Cliente: un componente dentro del host que mantiene la conexión con un servidor.
  • Servidor: un programa que expone capacidades al host.
Host application (assistant, IDE, agent)
   |  one MCP client per server
   v
MCP server  --->  files, databases, APIs, or pure computation

Los mensajes son JSON-RPC 2.0. Cuando se abre una conexión, cliente y servidor intercambian sus capacidades y el cliente le pregunta al servidor qué ofrece. El host pasa esas definiciones de herramientas al modelo. Cuando el modelo decide usar una herramienta, el cliente envía la llamada al servidor y devuelve el resultado.

Los bloques de construcción

Los servidores pueden ofrecer tres tipos de capacidad.

Primitiva Qué es Quién decide usarla
Herramientas (tools) Funciones que el modelo puede llamar, con nombre, descripción y esquema de entrada El modelo
Recursos (resources) Datos de solo lectura identificados por un URI, como un archivo o un registro La aplicación o el usuario
Prompts Plantillas de prompts reutilizables que ofrece el servidor El usuario

Las herramientas son lo más utilizado. La definición de una herramienta tiene este aspecto:

{
  "name": "estimate_tokens",
  "description": "Count the tokens in a prompt for a given model.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "prompt": { "type": "string" },
      "model": { "type": "string" }
    },
    "required": ["prompt"]
  }
}

El modelo lee la descripción y el esquema, así que son prompts por derecho propio. Unas descripciones de herramientas claras son el factor que más pesa en que un agente use bien una herramienta. Consulta los prompts para agentes de IA.

Transportes

MCP define cómo viajan los mensajes.

  • stdio: el host inicia el servidor como un proceso local y se comunica por la entrada y la salida estándar. Es sencillo y no se expone nada en la red.
  • HTTP transmisible (Streamable HTTP): el servidor se ejecuta como un servicio web al que los clientes acceden por HTTP, lo que encaja con servidores remotos y compartidos e incorpora la autenticación.

MCP, llamada a funciones y API

Son capas, no competidores.

  • Una API es la forma en que el software habla con un servicio.
  • La llamada a funciones es la forma en que un modelo pide que se ejecute una función.
  • MCP estandariza cómo se describen, descubren y entregan las funciones a cualquier aplicación de IA.

Un servidor MCP suele envolver una API existente. Si solo vas a servir a una aplicación que controlas, basta con la llamada a funciones sencilla. MCP se justifica cuando quieres que una herramienta funcione con muchos clientes.

Configurar un servidor

Los hosts se configuran con una lista de servidores que iniciar. Un servidor stdio local necesita un comando y sus argumentos:

{
  "mcpServers": {
    "promptflow": {
      "command": "node",
      "args": ["/absolute/path/to/packages/mcp-server/dist/bin.js"]
    }
  }
}

Los nombres de las claves varían un poco entre hosts, pero la forma es la misma.

Consideraciones de seguridad

Conectar un modelo a herramientas es poderoso y amplía la superficie de ataque.

Los resultados de las herramientas son entrada no fiable. Un servidor que obtiene páginas web o lee tickets devuelve texto que puede haber escrito un atacante. El modelo puede seguir las instrucciones que contenga. Consulta la inyección de prompts.

El modelo confía en las descripciones de las herramientas. Un servidor malicioso puede describir una herramienta de forma engañosa para dirigir al modelo. Instala servidores solo de fuentes de confianza y revisa lo que declaran.

Combinar capacidades multiplica el riesgo. Una sesión que puede leer datos privados, leer contenido no fiable y enviar datos al exterior puede convertirse en una vía de exfiltración. Evita dar a una misma sesión las tres cosas.

Se aplica el privilegio mínimo. Prefiere servidores que hagan una sola cosa, usa acceso de solo lectura siempre que sea posible y exige confirmación para las acciones con efectos secundarios.

Los servidores locales se ejecutan con tus permisos. Un servidor stdio es un programa de tu máquina. Trata su instalación como la de cualquier otro software.

Diseñar un buen servidor MCP

  • Ofrece pocas herramientas, bien nombradas y con propósitos distintos.
  • Escribe descripciones que digan cuándo usar una herramienta y qué devuelve.
  • Valida cada argumento y devuelve errores sobre los que el modelo pueda actuar.
  • Mantén los resultados compactos, porque consumen el contexto del modelo.
  • Marca como de solo lectura las herramientas que solo leen, para que los hosts puedan tratarlas en consecuencia.
  • No devuelvas nunca secretos en los resultados ni en los registros.

Un ejemplo: herramientas de prompts mediante MCP

El servidor MCP de PromptFlowEngine es una pequeña ilustración de estos principios. Expone el motor de prompts como herramientas para analizar, reestructurar, optimizar, comparar y sanear prompts, además de los catálogos de reglas y de modelos como recursos. Usa el transporte stdio, no hace llamadas de red y no tiene acceso a archivos ni a la shell, así que cada herramienta es de solo lectura: solo puede procesar el texto que recibe.

Con él conectado, un agente puede comprobar su propio trabajo:

Use promptflow to restructure this before you start:
"fix login issue and make google login work and don't break anything"

El agente llama a la herramienta de reestructuración y recibe una especificación en secciones con requisitos, casos límite y criterios de aceptación, que luego implementa. La configuración se explica en la documentación del cliente MCP.

Dónde encaja MCP

MCP es la capa de conexión de un sistema de agentes. El bucle de razonamiento que decide cuándo llamar a una herramienta se trata en el prompting ReAct, y las instrucciones que lo gobiernan, en los prompts para agentes de IA.