MCP: Protocolo de Contexto de Modelo

Definición

El Protocolo de Contexto de Modelo (MCP) es una interfaz de estándar abierto que permite a los Modelos de Lenguaje Grandes (LLMs) acceder de forma segura y consistente a fuentes de datos externas, herramientas y capacidades. Establece una capa de comunicación estandarizada entre aplicaciones de IA y varios proveedores de contexto, funcionando como el “USB-C” para los sistemas de IA.

Componentes Clave

Arquitectura

MCP sigue una arquitectura cliente-servidor:

  • Hosts MCP: Aplicaciones donde los usuarios o sistemas de IA interactúan (por ejemplo, Claude Desktop, plugins de IDE)
  • Clientes MCP: Componentes dentro de las aplicaciones host que manejan la comunicación con los servidores
  • Servidores MCP: Programas ligeros que exponen capacidades específicas (acceso a archivos, conexiones a bases de datos, acceso a APIs) a través de la interfaz MCP estandarizada
  • Fuentes de Datos: Repositorios de información locales o remotos a los que los servidores MCP pueden acceder de forma segura

Primitivas Básicas

MCP define tres primitivas fundamentales que constituyen los bloques básicos del protocolo:

1. Recursos

Los Recursos representan datos y contenido que los servidores MCP ponen a disposición de los LLMs.

  • Características: Controlados por la aplicación, identificados por URIs únicas
  • Tipos de Datos: Texto (codificado en UTF-8) o Binario (codificado en Base64)
  • Métodos de Descubrimiento: Listado directo o plantillas para solicitudes dinámicas de recursos
  • Operaciones: Lectura de contenido, recepción de actualizaciones

Ejemplo de uso: Un servidor MCP que expone un archivo de registro como recurso con URI file:///logs/app.log

2. Prompts

Los Prompts son plantillas o flujos de trabajo predefinidos que los servidores ofrecen para guiar las interacciones con los LLMs.

  • Características: Activados por el usuario, a menudo aparecen como comandos de barra
  • Estructura: Nombre único, descripción, argumentos opcionales
  • Capacidades: Aceptar argumentos de personalización, incorporar contexto de recursos, definir interacciones de varios pasos
  • Operaciones: Descubrimiento mediante listado, ejecución bajo petición

Ejemplo de uso: Un prompt generador de mensajes de commit de git que acepta cambios de código como entrada

3. Herramientas

Las Herramientas exponen funciones ejecutables que los LLMs pueden invocar (generalmente con aprobación del usuario) para realizar acciones.

  • Características: Controladas por el modelo, requieren esquemas de entrada bien definidos
  • Anotaciones: Incluyen indicaciones sobre el comportamiento (solo lectura, destructivo, idempotente, mundo abierto)
  • Características de Seguridad: Validación de entradas, control de acceso, advertencias claras al usuario
  • Operaciones: Descubrimiento mediante listado, ejecución mediante llamadas con parámetros

Ejemplo de uso: Una herramienta de calculadora que realiza operaciones matemáticas sobre entradas proporcionadas por el modelo

Logo

¿Listo para hacer crecer tu negocio?

Comienza tu prueba gratuita hoy y ve resultados en días.

Importancia y Beneficios

Para Desarrolladores

  • Integración Estandarizada: Conecta aplicaciones de IA con diversas fuentes de datos sin código personalizado para cada una
  • Buenas Prácticas de Seguridad: Directrices integradas para exponer información sensible de forma segura
  • Arquitectura Simplificada: Separación clara entre los modelos de IA y sus fuentes de contexto

Para Usuarios y Organizaciones

  • Flexibilidad: Facilita cambiar entre diferentes proveedores de LLM o aplicaciones host
  • Interoperabilidad: Menor dependencia de proveedores gracias a interfaces estandarizadas
  • Capacidades Mejoradas: Los sistemas de IA acceden a información y capacidades de acción más diversas

Ejemplos de Implementación

Servidor de Recursos de Archivos

// Servidor que expone un único archivo de registro como recurso
const server = new Server({ /* config */ }, { capabilities: { resources: {} } });

// Listar recursos disponibles
server.setRequestHandler(ListResourcesRequestSchema, async () => {
  return {
    resources: [
      {
        uri: "file:///logs/app.log",
        name: "Registros de la Aplicación",
        mimeType: "text/plain"
      }
    ]
  };
});

// Proveer contenido del recurso
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
  if (request.params.uri === "file:///logs/app.log") {
    const logContents = await readLogFile();
    return {
      contents: [{
        uri: request.params.uri,
        mimeType: "text/plain",
        text: logContents
      }]
    };
  }
  throw new Error("Resource not found");
});

Servidor de Herramienta Calculadora

const server = new Server({ /* config */ }, { capabilities: { tools: {} } });

// Listar herramientas disponibles
server.setRequestHandler(ListToolsRequestSchema, async () => {
  return {
    tools: [{
      name: "calculate_sum",
      description: "Suma dos números",
      inputSchema: {
        type: "object",
        properties: {
          a: { type: "number", description: "Primer número" },
          b: { type: "number", description: "Segundo número" }
        },
        required: ["a", "b"]
      },
      annotations: {
        title: "Calcular Suma",
        readOnlyHint: true,
        openWorldHint: false
      }
    }]
  };
});

// Manejar la ejecución de la herramienta
server.setRequestHandler(CallToolRequestSchema, async (request) => {
  if (request.params.name === "calculate_sum") {
    try {
      const { a, b } = request.params.arguments;
      if (typeof a !== 'number' || typeof b !== 'number') {
         throw new Error("Invalid input: 'a' and 'b' must be numbers.");
      }
      const sum = a + b;
      return {
        content: [{ type: "text", text: String(sum) }]
      };
    } catch (error: any) {
      return {
        isError: true,
        content: [{ type: "text", text: `Error calculating sum: ${error.message}` }]
      };
    }
  }
  throw new Error("Tool not found");
});

Conceptos Relacionados

  • LLM Function Calling: El Protocolo de Contexto de Modelo proporciona un enfoque estandarizado para la invocación de funciones por parte de los LLMs
  • Agentes de IA: MCP ofrece una forma estructurada para que los sistemas de IA basados en agentes accedan a herramientas e información
  • Plugins de IA: Similar a las extensiones de navegador, los servidores MCP pueden considerarse como “plugins” que amplían las capacidades de la IA

Direcciones Futuras

  • Integración de IA Empresarial: Conexión de bases de conocimiento corporativas, herramientas y flujos de trabajo
  • IA Multimodal: Estandarización del acceso a tipos de datos diversos más allá del texto
  • Sistemas de IA Colaborativa: Permitir que asistentes de IA trabajen juntos mediante protocolos compartidos

Preguntas frecuentes

Prueba FlowHunt y Construye Tus Propias Soluciones de IA

Comienza a crear sistemas de IA potentes con integraciones estandarizadas, acceso seguro a datos y conectividad flexible de herramientas usando FlowHunt.

Saber más