Introducción al Model Context Protocol

Inmersión profunda en el Model Context Protocol (MCP)

Especificación del Protocolo40 min de lectura

Resumen del Protocolo

El Model Context Protocol (MCP) es un estándar abierto que estandariza cómo las aplicaciones proporcionan contexto a los modelos de lenguaje grandes (LLM). Piense en MCP como un puerto USB-C para aplicaciones de IA—proporcionando una forma estandarizada de conectar modelos de IA a diferentes fuentes de datos y herramientas.

Beneficios Clave

  • Interfaz de comunicación estandarizada
  • Transmisión de datos segura
  • Diseño de arquitectura extensible
  • Compatibilidad multiplataforma
  • Sincronización de contexto en tiempo real
  • Soporte de extensión basado en plugins

Casos de Uso

  • Análisis y comprensión de código
  • Generación y mantenimiento de documentación
  • Integración de gestión de proyectos
  • Consultas y operaciones de base de datos
  • Integración de servicios API
  • Automatización de flujos de trabajo

Diseño de Arquitectura

Arquitectura en capas del protocolo MCP y resumen de componentes

Host MCP

Aplicación IA

La aplicación IA que coordina y gestiona uno o múltiples clientes MCP

Responsabilidades Clave:

  • Coordinar múltiples clientes MCP
  • Gestionar interacciones del modelo IA
  • Procesar respuestas del servidor
  • Manejar estado de sesión

Cliente MCP

Gestor de Conexión

Un componente que mantiene una conexión a un servidor MCP y obtiene contexto de un servidor MCP para que lo use el host MCP

Responsabilidades Clave:

  • Mantener conexión servidor uno-a-uno
  • Enviar consultas de contexto
  • Manejar respuestas del servidor
  • Gestionar ciclo de vida de conexión

Servidor MCP

Proveedor de Contexto

Un programa que proporciona contexto a los clientes MCP a través de herramientas, recursos y prompts

Responsabilidades Clave:

  • Aceptar conexiones de cliente
  • Procesar solicitudes de contexto
  • Devolver datos estructurados
  • Mantener estado de recursos

Capa de Transporte

Canal de Comunicación

Gestiona canales de comunicación y autenticación entre clientes y servidores

Responsabilidades Clave:

  • Transporte STDIO para procesos locales
  • Transporte HTTP para servidores remotos
  • Enmarcado y serialización de mensajes
  • Autenticación y seguridad

Capa de Datos

Definición de Protocolo

Define el protocolo basado en JSON-RPC para comunicación cliente-servidor

Responsabilidades Clave:

  • Formato de mensaje JSON-RPC 2.0
  • Gestión del ciclo de vida
  • Definiciones primitivas (herramientas, recursos, prompts)
  • Sistema de notificaciones

Primitivas MCP

Primitivas centrales que definen lo que clientes y servidores pueden ofrecerse mutuamente

Herramientas

Funciones ejecutables que las aplicaciones IA pueden invocar para realizar acciones

Ejemplos:

  • Operaciones de archivos (leer, escribir, crear)
  • Llamadas API a servicios externos
  • Consultas y operaciones de base de datos
  • Análisis y compilación de código
  • Ejecución de comandos del sistema

Métodos Disponibles:

tools/listtools/call

Recursos

Fuentes de datos que proporcionan información contextual a aplicaciones IA

Ejemplos:

  • Contenido y metadatos de archivos
  • Registros y esquemas de base de datos
  • Respuestas API y documentación
  • Información del repositorio Git
  • Archivos de configuración

Métodos Disponibles:

resources/listresources/read

Prompts

Plantillas reutilizables que ayudan a estructurar interacciones con modelos de lenguaje

Ejemplos:

  • Prompts del sistema para tareas específicas
  • Ejemplos few-shot para aprendizaje
  • Plantillas de revisión de código
  • Prompts de generación de documentación
  • Plantillas de análisis y resumen

Métodos Disponibles:

prompts/listprompts/get

Capa de Transporte

Mecanismos de comunicación que permiten el intercambio de datos entre clientes y servidores

Transporte STDIO

Utiliza flujos de entrada/salida estándar para comunicación directa de procesos

Casos de Uso:

  • Servidores MCP locales en la misma máquina
  • Comunicación directa de procesos
  • Rendimiento óptimo sin sobrecarga de red
  • Configuración y configuración simples

Ejemplo:

npx @modelcontextprotocol/server-filesystem /path/to/files

Lanzar servidor de sistema de archivos vía STDIO

Transporte HTTP

Utiliza HTTP POST para mensajes cliente-servidor con eventos enviados por servidor opcionales

Casos de Uso:

  • Servidores MCP remotos
  • Servicios basados en la nube
  • Autenticación con tokens bearer
  • Despliegues de servidor escalables

Ejemplo:

https://api.example.com/mcp

Conectar al servidor MCP remoto vía HTTP

Tipos de Mensajes

Tipos de mensajes basados en JSON-RPC 2.0 soportados por el protocolo MCP

initialize

Inicializar conexión y negociar versión del protocolo y capacidades

Cliente → Servidor

Ejemplo de Mensaje:

{
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": {},
      "resources": {}
    },
    "clientInfo": {
      "name": "gemini-cli",
      "version": "1.0.0"
    }
  }
}

tools/list

Descubrir herramientas disponibles en el servidor

Cliente → Servidor

Ejemplo de Mensaje:

{
  "method": "tools/list",
  "params": {}
}

tools/call

Ejecutar una herramienta específica con argumentos proporcionados

Cliente → Servidor

Ejemplo de Mensaje:

{
  "method": "tools/call",
  "params": {
    "name": "com.example.weather/current",
    "arguments": {
      "location": "San Francisco",
      "units": "imperial"
    }
  }
}

resources/list

Obtener lista de recursos disponibles

Cliente → Servidor

Ejemplo de Mensaje:

{
  "method": "resources/list",
  "params": {}
}

resources/read

Leer contenido de recurso específico

Cliente → Servidor

Ejemplo de Mensaje:

{
  "method": "resources/read",
  "params": {
    "uri": "file:///path/to/file.ts"
  }
}

prompts/list

Obtener plantillas de prompt disponibles

Cliente → Servidor

Ejemplo de Mensaje:

{
  "method": "prompts/list",
  "params": {}
}

notifications/tools/list_changed

Notificar al cliente cuando cambien las herramientas disponibles

Servidor → Cliente

Ejemplo de Mensaje:

{
  "method": "notifications/tools/list_changed"
}

Ejemplo de Definición de Herramienta

Ejemplo de cómo se definen las herramientas en el protocolo MCP

Definición de Herramienta del Clima

Este ejemplo muestra cómo se define una herramienta del clima con validación de esquema de entrada y documentación adecuadas.

// MCP 工具定义示例
{
  "name": "com.example.weather/current",
  "title": "Get Current Weather",
  "description": "Get current weather information for a specified location",
  "inputSchema": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string",
        "description": "The location to get weather for"
      },
      "units": {
        "type": "string",
        "enum": ["metric", "imperial"],
        "description": "Temperature units",
        "default": "metric"
      },
      "include_forecast": {
        "type": "boolean",
        "description": "Whether to include forecast data",
        "default": false
      }
    },
    "required": ["location"]
  }
}

Componentes Clave:

  • name: Identificador único para la herramienta
  • title: Nombre de visualización legible por humanos
  • description: Explicación detallada de la funcionalidad
  • inputSchema: Esquema JSON para validación de entrada

Mejores Prácticas:

  • Usar nombres de herramientas con espacio de nombres (ej: com.example.weather/current)
  • Proporcionar documentación clara y descriptiva
  • Definir esquemas de entrada integrales
  • Incluir valores por defecto donde sea apropiado

Flujo de Comunicación

Flujo de comunicación completo entre clientes y servidores MCP

1

Inicializar Conexión

El cliente establece conexión y negocia capacidades con el servidor

Pasos Detallados:

  • El cliente envía solicitud de inicialización con versión del protocolo
  • El servidor responde con capacidades soportadas
  • Ambas partes negocian parámetros de comunicación
  • Conexión establecida con versión de protocolo acordada
2

Descubrimiento de Capacidades

El cliente descubre herramientas, recursos y prompts disponibles

Pasos Detallados:

  • Solicitar lista de herramientas disponibles (tools/list)
  • Solicitar recursos disponibles (resources/list)
  • Solicitar prompts disponibles (prompts/list)
  • Cachear información de capacidades para acceso eficiente
3

Intercambio de Contexto

El cliente solicita y recibe datos contextuales de los recursos

Pasos Detallados:

  • Enviar solicitudes de lectura de recursos (resources/read)
  • Recibir datos estructurados en varios formatos
  • Procesar conversión de formato de datos según sea necesario
  • Actualizar contexto local con información recibida
4

Ejecución de Herramientas

El cliente invoca herramientas del servidor para realizar acciones

Pasos Detallados:

  • Construir solicitudes de llamada de herramientas (tools/call)
  • Pasar parámetros requeridos con validación adecuada
  • Esperar resultados de ejecución del servidor
  • Procesar datos devueltos y manejar errores
5

Actualizaciones en Tiempo Real

Mantener sincronización a través de notificaciones

Pasos Detallados:

  • Escuchar notificaciones de cambio de recursos
  • Manejar actualizaciones de lista de herramientas dinámicamente
  • Procesar interrupciones de conexión con elegancia
  • Restablecer conexiones cuando sea necesario

Características de Seguridad

Mecanismos de seguridad y medidas de protección en el protocolo MCP

Autenticación

Múltiples mecanismos de autenticación soportados

Métodos Soportados:

  • Autenticación con clave API
  • Flujos OAuth 2.0
  • Tokens Bearer
  • Cabeceras de autenticación personalizadas

Autorización

Gestión de permisos de grano fino

Métodos Soportados:

  • Permisos a nivel de recursos
  • Restricciones de tipo de operación
  • Control de acceso basado en tiempo
  • Limitación de velocidad y cuotas

Protección de Datos

Seguridad de datos de extremo a extremo

Métodos Soportados:

  • Cifrado de transporte TLS/SSL
  • Cifrado de contenido de mensajes
  • Enmascaramiento de datos sensibles
  • Gestión segura de claves

Auditoría y Monitoreo

Seguimiento integral de operaciones

Métodos Soportados:

  • Registro de solicitudes/respuestas
  • Registros de verificación de permisos
  • Seguimiento de errores y excepciones
  • Recolección de métricas de rendimiento