Aquí está la traducción del contenido en formato Markdown:Understand how MCP connects clients, servers, and LLMsEl Model Context Protocol (MCP) está construido sobre una arquitectura flexible y extensible que permite una comunicación fluida entre las aplicaciones e integraciones de LLM. Este documento cubre los componentes y conceptos arquitectónicos centrales.MCP sigue una arquitectura cliente-servidor donde:Hosts son aplicaciones LLM (como Claude Desktop o IDEs) que inician conexiones
Clients mantienen conexiones 1:1 con servidores, dentro de la aplicación host
Servers proporcionan contexto, herramientas y prompts a los clientes
La capa de protocolo gestiona el framing de mensajes, el enlace de solicitud/respuesta y los patrones de comunicación de alto nivel.Las clases clave incluyen:La capa de transporte gestiona la comunicación real entre clientes y servidores. MCP soporta múltiples mecanismos de transporte:1.
Utiliza la entrada/salida estándar para la comunicación
Ideal para procesos locales
2.
Utiliza Server-Sent Events para mensajes de servidor a cliente
HTTP POST para mensajes de cliente a servidor
Todos los transportes utilizan JSON-RPC 2.0 para intercambiar mensajes. Consulte la specification para obtener información detallada sobre el formato de mensaje de Model Context Protocol.MCP tiene estos tipos principales de mensajes:1.
Requests esperan una respuesta del otro lado: 2.
Results son respuestas exitosas a las solicitudes: 3.
Errors indican que una solicitud falló: 4.
Notifications son mensajes unidireccionales que no esperan una respuesta: 1.
El cliente envía la solicitud initialize
con la versión del protocolo y las capacidades.
2.
El servidor responde con su versión del protocolo y capacidades.
3.
El cliente envía la notificación initialized
como acuse de recibo.
4.
Comienza el intercambio normal de mensajes.
Después de la inicialización, se admiten los siguientes patrones:Request-Response: El cliente o el servidor envían solicitudes, el otro responde
Notifications: Cualquiera de las partes envía mensajes unidireccionales
Cualquiera de las partes puede terminar la conexión:Cierre limpio a través de close()
Desconexión del transporte
MCP define estos códigos de error estándar:Los SDK y las aplicaciones pueden definir sus propios códigos de error por encima de -32000.Los errores se propagan a través de:Respuestas de error a las solicitudes
Eventos de error en los transportes
Controladores de errores a nivel de protocolo
Aquí hay un ejemplo básico de implementación de un servidor MCP:1.
Utilice el transporte stdio para procesos locales
Eficiente para la comunicación en la misma máquina
Gestión sencilla de procesos
2.
Utilice SSE para escenarios que requieran compatibilidad con HTTP
Considere las implicaciones de seguridad, incluida la autenticación y la autorización
1.
Valide las entradas a fondo
Utilice esquemas con seguridad de tipos
Maneje los errores con elegancia
Implemente tiempos de espera
2.
Utilice tokens de progreso para operaciones largas
Informe el progreso de forma incremental
Incluya el progreso total cuando se conozca
3.
Utilice códigos de error apropiados
Incluya mensajes de error útiles
Limpie los recursos en caso de errores
1.
Utilice TLS para conexiones remotas
Valide los orígenes de la conexión
Implemente la autenticación cuando sea necesario
2.
Valide todos los mensajes entrantes
Verifique los límites de tamaño de los mensajes
Verifique el formato JSON-RPC
3.
Implemente controles de acceso
Valide las rutas de los recursos
Supervise el uso de recursos
Limite la velocidad de las solicitudes
4.
No filtre información confidencial
Registre los errores relevantes para la seguridad
Implemente una limpieza adecuada
1.
Registre los eventos del protocolo
Realice un seguimiento del flujo de mensajes
2.
Implemente comprobaciones de estado
Supervise el estado de la conexión
Realice un seguimiento del uso de recursos
3.
Pruebe diferentes transportes
Verifique el manejo de errores
Verifique los casos extremos
Pruebe la carga de los servidores
Modified at 2025-03-13 02:54:09