Arquitectura Core MCP

Entiende cómo funciona el Model Context Protocol: componentes principales, conceptos fundamentales y flujos de comunicación.

Arquitectura General

MCP sigue una arquitectura Cliente-Host-Servidor basada en JSON-RPC 2.0. Esta arquitectura permite una comunicación segura y estandarizada entre aplicaciones de IA y fuentes de datos.

Diagrama de Arquitectura MCP

MCP HostClaude DesktopIDE, etc.MCP ClientJSON-RPCProtocol HandlerMCP ServerResourcesTools & PromptsData SourcesFiles, DBsAPIs, etc.1:1JSON-RPCAccess

El Host puede tener múltiples Clients, cada uno conectado a un Server diferente. Los Servers acceden a sus Data Sources de forma segura y controlada.

Componentes Principales

MCP Host

La aplicación de IA que quiere acceder a datos y herramientas (ej. Claude Desktop, IDEs como Cursor, VS Code).

MCP Client

Mantiene una conexión 1:1 con cada servidor MCP. Gestiona el protocolo JSON-RPC y la comunicación bidireccional.

MCP Server

Programa ligero que expone recursos, herramientas y prompts a través del protocolo estandarizado MCP.

Data Sources

Fuentes de datos locales (archivos, bases de datos) o remotas (APIs) que el servidor puede acceder de forma segura.

Conceptos Fundamentales

MCP define cuatro conceptos principales que permiten a los servidores exponer capacidades a los LLMs de forma estructurada.

Recursos (Resources)

Datos y contenido que el servidor expone al LLM. Pueden ser archivos, documentos, entradas de base de datos, etc.

Ejemplo: Un servidor de sistema de archivos expone archivos como recursos. El LLM puede leerlos pero no modificarlos directamente.

Herramientas (Tools)

Acciones que el LLM puede ejecutar a través del servidor. Permiten modificar datos, realizar operaciones, etc.

Ejemplo: Una herramienta 'create_file' permite al LLM crear nuevos archivos. El servidor valida y ejecuta la acción.

Prompts

Plantillas de prompts reutilizables que el servidor puede proporcionar al LLM para guiar su comportamiento.

Ejemplo: Un prompt 'code_review' puede contener instrucciones específicas para revisar código de manera consistente.

Sampling

Permite al servidor solicitar completaciones del LLM, útil para generar contenido o procesar datos.

Ejemplo: Un servidor puede pedir al LLM que genere documentación basada en el código fuente que expone como recurso.

Flujo de Solicitud/Respuesta

El protocolo MCP utiliza JSON-RPC 2.0 para la comunicación bidireccional. Este diagrama muestra el flujo completo cuando un LLM solicita ejecutar una herramienta.

Flujo Completo: LLM → Herramienta → Resultado

Ejemplo práctico: El LLM solicita obtener el clima de una ciudad usando la herramienta get_weather

🤖 LLM + HostClaude Desktop / Cursor🔌 MCP ClientProtocol Handler⚡ MCP ServerTool Provider🗄️ Data SourceWeather APIPASO 1Usuario: "¿Qué clima hace en Madrid?"PASO 2LLM analiza y decide:"Necesito usar get_weather"tools/call requestPASO 3JSON-RPC 2.0PASO 4API RequestPASO 5Weather DataPASO 6JSON-RPC ResponsePASO 7Tool ResultPASO 8PASO 9LLM responde al usuario:"En Madrid hace sol, 22°C"LEYENDARequest (Solicitud)Response (Respuesta)

Desglose del Flujo

1-2Inicio

El usuario hace una pregunta. El LLM analiza y decide que necesita una herramienta externa para responder.

3-4Request MCP

El Host envía tools/call al Client. Este lo convierte en un mensaje JSON-RPC 2.0 y lo envía al Server.

5-6Ejecución

El Server valida, ejecuta la herramienta y consulta la fuente de datos (API del clima). Obtiene los datos reales.

7-8Response

El Server formatea el resultado y lo devuelve al Client como JSON-RPC response. El Client lo entrega al Host/LLM.

9Respuesta Final

El LLM procesa el resultado de la herramienta, lo integra en su contexto y genera una respuesta natural para el usuario: "En Madrid hace sol, con una temperatura de 22°C".

Punto Clave

Todo el flujo es síncrono y bidireccional. El LLM espera la respuesta antes de continuar. Los mensajes JSON-RPC incluyen un id único que permite correlacionar request y response.

Ejemplo de Mensaje JSON-RPC

Estructura típica de una solicitud y respuesta en el protocolo MCP

Solicitud (Request)

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "city": "Madrid"
    }
  },
  "id": 1
}

Respuesta (Response)

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "El clima en Madrid es soleado, 22°C"
      }
    ]
  }
}

¿Listo para profundizar?

Explora más sobre recursos, herramientas, prompts y la especificación completa del protocolo.