ConfiguraciónMCP

Transportes de servidor MCP

MCP soporta mecanismos de transporte para la comunicación entre Bob y servidores MCP.

Descripción general

MCP ofrece tres opciones de transporte, cada una adecuada para diferentes escenarios de implementación:

Cada transporte tiene diferentes características, ventajas y casos de uso.

Transporte STDIO

El transporte STDIO se ejecuta localmente en tu computadora y se comunica a través de flujos de entrada/salida estándar.

Cómo funciona el transporte STDIO

  1. Bob inicia un servidor MCP como proceso hijo
  2. La comunicación ocurre a través de flujos de proceso: Bob escribe en STDIN del servidor, el servidor responde en STDOUT
  3. Cada mensaje está delimitado por un carácter de nueva línea
  4. Los mensajes están formateados como JSON-RPC 2.0
Cliente                   Servidor
  |                         |
  |---- Mensaje JSON ------>| (vía STDIN)
  |                         | (procesa solicitud)
  |<---- Mensaje JSON ------| (vía STDOUT)
  |                         |

Características de STDIO

  • Localidad: Se ejecuta en la misma máquina que Bob
  • Rendimiento: Latencia y sobrecarga muy bajas (sin pila de red involucrada)
  • Simplicidad: Comunicación directa de procesos sin configuración de red
  • Relación: Relación uno a uno entre cliente y servidor
  • Seguridad: Inherentemente más seguro sin exposición de red

Cuándo usar STDIO

El transporte STDIO es ideal para:

  • Integraciones y herramientas locales que se ejecutan en la misma máquina
  • Operaciones críticas de seguridad
  • Requisitos de baja latencia
  • Escenarios de cliente único (una instancia de Bob por servidor)
  • Herramientas de línea de comandos o extensiones de IDE

Ejemplo de implementación STDIO


const server = new Server({name: 'local-server', version: '1.0.0'});
// Registrar herramientas...

// Usar transporte STDIO
const transport = new StdioServerTransport(server);
transport.listen();

Transporte HTTP Streamable

El transporte HTTP Streamable es el estándar moderno para la comunicación de servidores MCP remotos, reemplazando el transporte HTTP+SSE más antiguo. Opera sobre HTTP/HTTPS y permite implementaciones de servidor más flexibles.

Cómo funciona el transporte HTTP Streamable

  1. El servidor proporciona un único endpoint HTTP (endpoint MCP) que soporta métodos POST y GET
  2. Bob envía solicitudes a este endpoint MCP con HTTP POST
  3. El servidor procesa la solicitud y envía una respuesta de vuelta
  4. Opcionalmente, el servidor puede usar Server-Sent Events (SSE) sobre la misma conexión para transmitir múltiples mensajes o notificaciones a Bob

Esto permite tanto interacciones básicas de solicitud-respuesta como streaming más avanzado y comunicación iniciada por el servidor.

Cliente                             Servidor
  |                                  |
  |---- HTTP POST /mcp_endpoint ---->| (Solicitud del cliente)
  |                                  | (procesa solicitud)
  |<--- HTTP Response / SSE Stream --| (Respuesta del servidor / Stream)
  |                                  |

Características de HTTP Streamable

  • Estándar moderno: Método preferido para nuevas implementaciones de servidores MCP remotos
  • Acceso remoto: Puede alojarse en una máquina diferente a Bob
  • Escalabilidad: Puede manejar múltiples conexiones de cliente simultáneamente
  • Protocolo: Funciona sobre HTTP/HTTPS estándar
  • Flexibilidad: Soporta solicitud-respuesta simple y streaming avanzado
  • Endpoint único: Usa una única ruta URL para toda la comunicación MCP
  • Autenticación: Puede usar mecanismos de autenticación HTTP estándar
  • Compatibilidad hacia atrás: Los servidores pueden mantener compatibilidad con clientes HTTP+SSE más antiguos

Cuándo usar HTTP Streamable

El transporte HTTP Streamable es ideal para:

  • Todos los nuevos desarrollos de servidores MCP remotos
  • Servidores que requieren comunicación robusta, escalable y flexible
  • Integraciones que pueden involucrar datos de streaming o notificaciones enviadas por el servidor
  • Servicios públicos o herramientas centralizadas
  • Reemplazo de implementaciones de transporte SSE legacy

Ejemplo de implementación HTTP Streamable

Configuración en settings.json:

{
  "mcpServers": {
    "StreamableHTTPMCPName": {
      "type": "streamable-http",
      "url": "http://localhost:8080/mcp"
    }
  }
}

Para la implementación del lado del servidor, consulta la documentación del SDK de MCP para StreamableHTTPClientTransport.

Compatibilidad hacia atrás con HTTP+SSE

Los clientes y servidores pueden mantener compatibilidad hacia atrás con el transporte HTTP+SSE obsoleto.

Los servidores que deseen soportar clientes más antiguos deben continuar alojando tanto los endpoints SSE (/events) como POST (/message) del transporte antiguo, además del nuevo endpoint MCP definido para el transporte HTTP Streamable.

Transporte SSE (Legacy)

El transporte Server-Sent Events (SSE) se ejecuta en un servidor remoto y se comunica a través de HTTP/HTTPS. Para nuevos servidores remotos, usa el transporte HTTP Streamable en su lugar.

Cómo funciona el transporte SSE

  1. Bob se conecta al endpoint SSE del servidor a través de una solicitud HTTP GET
  2. Esto establece una conexión persistente sobre la cual el servidor puede enviar eventos a Bob
  3. Para la comunicación cliente-a-servidor, Bob envía solicitudes HTTP POST a un endpoint separado
  4. La comunicación ocurre a través de dos canales:
    • Flujo de eventos (GET): Actualizaciones servidor-a-cliente
    • Endpoint de mensajes (POST): Solicitudes cliente-a-servidor
Cliente                             Servidor
  |                                  |
  |---- HTTP GET /events ----------->| (Establecer conexión SSE)
  |<---- Flujo de eventos SSE --------| (conexión persistente)
  |                                  |
  |---- HTTP POST /message --------->| (Solicitud del cliente)
  |<---- Evento SSE con respuesta ---| (Respuesta del servidor)
  |                                  |

Características de SSE

  • Acceso remoto: Puede alojarse en una máquina diferente a Bob
  • Escalabilidad: Puede manejar múltiples conexiones de cliente simultáneamente
  • Protocolo: Funciona sobre HTTP estándar (no se requieren protocolos especiales)
  • Persistencia: Mantiene una conexión persistente para mensajes servidor-a-cliente
  • Autenticación: Puede usar mecanismos de autenticación HTTP estándar

Cuándo usar SSE

El transporte SSE es adecuado para:

  • Acceso remoto a través de redes
  • Escenarios multi-cliente
  • Servicios públicos
  • Herramientas centralizadas a las que muchos usuarios necesitan acceder
  • Integración con servicios web

Ejemplo de implementación SSE

import express from 'express';

const app = express();
const server = new Server({name: 'remote-server', version: '1.0.0'});
// Registrar herramientas...

// Usar transporte SSE
const transport = new SSEServerTransport(server);
app.use('/mcp', transport.requestHandler());
app.listen(3000, () => {
  console.log('Servidor MCP escuchando en puerto 3000');
});

Consideraciones de implementación

La elección entre transportes STDIO y remotos (HTTP Streamable o SSE) afecta directamente cómo implementas y gestionas tus servidores MCP.

STDIO: Implementación local

Los servidores STDIO se ejecutan localmente en la misma máquina que Bob:

  • Instalación: El ejecutable del servidor debe instalarse en la computadora de cada usuario
  • Distribución: Debes proporcionar paquetes de instalación para diferentes sistemas operativos
  • Actualizaciones: Cada instancia debe actualizarse por separado
  • Recursos: Usa CPU, memoria y disco de la máquina local
  • Control de acceso: Depende de los permisos del sistema de archivos de la máquina local
  • Integración: Integración simple con recursos del sistema local (archivos, procesos)
  • Ejecución: Se inicia y detiene con Bob (ciclo de vida de proceso hijo)
  • Dependencias: Todas las dependencias deben instalarse en la computadora del usuario

Ejemplo de caso de uso:

Una herramienta de búsqueda de archivos local usando STDIO:

  • Se ejecutaría en la computadora del usuario
  • Tendría acceso directo al sistema de archivos local
  • Se iniciaría bajo demanda por Bob
  • No requeriría configuración de red
  • Necesitaría instalarse junto a Bob o a través de un gestor de paquetes

Remoto: Implementación alojada

Los servidores remotos (HTTP Streamable o SSE) pueden implementarse en servidores remotos y accederse a través de la red:

  • Instalación: Instalado una vez en un servidor, accedido por muchos usuarios
  • Distribución: Una sola implementación sirve a múltiples clientes
  • Actualizaciones: Actualizaciones centralizadas afectan a todos los usuarios instantáneamente
  • Recursos: Usa recursos del servidor, no recursos de la máquina local
  • Control de acceso: Gestionado a través de sistemas de autenticación y autorización
  • Integración: Integración más compleja con recursos específicos del usuario
  • Ejecución: Se ejecuta como servicio independiente (a menudo continuamente)
  • Dependencias: Gestionadas en el servidor, no en las máquinas de los usuarios

Ejemplo de caso de uso:

Una herramienta de consulta de base de datos usando transporte remoto:

  • Se ejecutaría en un servidor central
  • Se conectaría a bases de datos con credenciales del lado del servidor
  • Estaría disponible continuamente para múltiples usuarios
  • Requeriría configuración de seguridad de red adecuada
  • Se implementaría usando tecnologías de contenedores o nube

Enfoques híbridos

Algunos escenarios se benefician de un enfoque híbrido:

  1. STDIO con acceso a red: Un servidor STDIO local que actúa como proxy para servicios remotos
  2. Remoto con comandos locales: Un servidor remoto que puede activar operaciones en la máquina del cliente a través de callbacks
  3. Patrón de gateway: Servidores STDIO para operaciones locales que se conectan a servidores remotos para funcionalidad especializada

Comparación de transportes

ConsideraciónSTDIOHTTP Streamable / SSE
UbicaciónSolo máquina localLocal o remoto
ClientesCliente únicoMúltiples clientes
RendimientoMenor latenciaMayor latencia (sobrecarga de red)
Complejidad de configuraciónMás simpleMás complejo (requiere servidor HTTP)
SeguridadInherentemente seguroRequiere medidas de seguridad explícitas
Acceso a redNo requeridoRequerido
EscalabilidadLimitado a máquina localPuede distribuirse a través de red
ImplementaciónInstalación por usuarioInstalación centralizada
ActualizacionesActualizaciones distribuidasActualizaciones centralizadas
Uso de recursosUsa recursos del clienteUsa recursos del servidor
DependenciasDependencias del lado del clienteDependencias del lado del servidor

Configurar transportes en Bob

Para información detallada sobre cómo configurar transportes en Bob, incluyendo configuraciones de ejemplo, consulta MCP en Bob.

¿Cómo es este tema?