Introducción al Model Context Protocol
Inmersión profunda en el Model Context Protocol (MCP)
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/list
tools/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/list
resources/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/list
prompts/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
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
Ejemplo de Mensaje:
{ "method": "tools/list", "params": {} }
tools/call
Ejecutar una herramienta específica con argumentos proporcionados
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
Ejemplo de Mensaje:
{ "method": "resources/list", "params": {} }
resources/read
Leer contenido de recurso específico
Ejemplo de Mensaje:
{ "method": "resources/read", "params": { "uri": "file:///path/to/file.ts" } }
prompts/list
Obtener plantillas de prompt disponibles
Ejemplo de Mensaje:
{ "method": "prompts/list", "params": {} }
notifications/tools/list_changed
Notificar al cliente cuando cambien las herramientas disponibles
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
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
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
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
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
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
Comenzar
¿Listo para empezar a usar MCP con Gemini CLI? Explora estos recursos