Transportes de Servidor MCP: STDIO y SSE
El Protocolo de Contexto de Modelo (MCP) admite dos mecanismos de transporte principales para la comunicación entre AI Cockpit Reasoning y los servidores MCP: Entrada/Salida Estándar (STDIO) y Eventos Enviados por el Servidor (SSE). Cada uno tiene características, ventajas y casos de uso distintos.
Transporte STDIO
El transporte STDIO se ejecuta localmente en tu máquina y se comunica a través de flujos de entrada/salida estándar.
Cómo Funciona el Transporte STDIO
- El cliente (AI Cockpit Reasoning) genera un servidor MCP como proceso hijo
- La comunicación ocurre a través de flujos de proceso: el cliente escribe en el STDIN del servidor, el servidor responde al STDOUT
- Cada mensaje está delimitado por un carácter de nueva línea
- Los mensajes están formateados como JSON-RPC 2.0
Cliente Servidor
| |
|---- Mensaje JSON ------>| (vía STDIN)
| | (procesa la solicitud)
|<---- Mensaje JSON ------| (vía STDOUT)
| |
Características de STDIO
- Localidad: Se ejecuta en la misma máquina que AI Cockpit Reasoning
- Rendimiento: Latencia y sobrecarga muy bajas (sin pila de red involucrada)
- Simplicidad: Comunicación directa entre procesos sin configuración de red
- Relación: Relación uno a uno entre cliente y servidor
- Seguridad: Inherentemente más seguro ya que no hay exposición a la red
Cuándo Usar STDIO
El transporte STDIO es ideal para:
- Integraciones locales y herramientas que se ejecutan en la misma máquina
- Operaciones sensibles a la seguridad
- Requisitos de baja latencia
- Escenarios de cliente único (una instancia de AI Cockpit Reasoning por servidor)
- Herramientas de línea de comandos o extensiones de IDE
Ejemplo de Implementación STDIO
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server({name: 'local-server', version: '1.0.0'});
// Registrar herramientas...
// Usar transporte STDIO
const transport = new StdioServerTransport(server);
transport.listen();
Transporte SSE
El transporte de Eventos Enviados por el Servidor (SSE) se ejecuta en un servidor remoto y se comunica a través de HTTP/HTTPS.
Cómo Funciona el Transporte SSE
- El cliente (AI Cockpit Reasoning) se conecta al endpoint SSE del servidor a través de una solicitud HTTP GET
- Esto establece una conexión persistente donde el servidor puede enviar eventos al cliente
- Para la comunicación del cliente al servidor, el cliente realiza solicitudes HTTP POST a un endpoint separado
- La comunicación ocurre a través de dos canales:
- Flujo de Eventos (GET): Actualizaciones del servidor al cliente
- Endpoint de Mensajes (POST): Solicitudes del cliente al 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 AI Cockpit Reasoning
- Escalabilidad: Puede manejar múltiples conexiones de clientes simultáneamente
- Protocolo: Funciona sobre HTTP estándar (no se necesitan protocolos especiales)
- Persistencia: Mantiene una conexión persistente para mensajes del servidor al cliente
- Autenticación: Puede usar mecanismos de autenticación HTTP estándar
Cuándo Usar SSE
El transporte SSE es mejor para:
- Acceso remoto a través de redes
- Escenarios de múltiples clientes
- Servicios públicos
- Herramientas centralizadas a las que muchos usuarios necesitan acceder
- Integración con servicios web
Ejemplo de Implementación SSE
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
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 el puerto 3000');
});
Local vs. Alojado: Aspectos de Implementación
La elección entre los transportes STDIO y SSE afecta directamente cómo implementarás y gestionarás tus servidores MCP.
STDIO: Modelo de Implementación Local
Los servidores STDIO se ejecutan localmente en la misma máquina que AI Cockpit Reasoning, lo que tiene varias implicaciones importantes:
- Instalación: El ejecutable del servidor debe instalarse en la máquina de cada usuario
- Distribución: Necesitas proporcionar paquetes de instalación para diferentes sistemas operativos
- Actualizaciones: Cada instancia debe actualizarse por separado
- Recursos: Usa la 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: Fácil integración con recursos del sistema local (archivos, procesos)
- Ejecución: Inicia y se detiene con AI Cockpit Reasoning (ciclo de vida del proceso hijo)
- Dependencias: Cualquier dependencia debe instalarse en la máquina del usuario
Ejemplo Práctico
Una herramienta de búsqueda de archivos local usando STDIO:
- Se ejecuta en la máquina del usuario
- Tiene acceso directo al sistema de archivos local
- Se inicia cuando AI Cockpit Reasoning lo necesita
- No requiere configuración de red
- Necesita instalarse junto con AI Cockpit Reasoning o a través de un gestor de paquetes
SSE: Modelo de Implementación Alojado
Los servidores SSE pueden implementarse en servidores remotos y accederse a través de la red:
- Instalación: Se instala una vez en un servidor, accedido por muchos usuarios
- Distribución: Una sola implementación sirve a múltiples clientes
- Actualizaciones: Las actualizaciones centralizadas afectan a todos los usuarios inmediatamente
- Recursos: Usa recursos del servidor, no 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 un servicio independiente (a menudo de forma continua)
- Dependencias: Gestionadas en el servidor, no en las máquinas de los usuarios
Ejemplo Práctico
Una herramienta de consulta de base de datos usando SSE:
- Se ejecuta en un servidor central
- Se conecta a bases de datos con credenciales del lado del servidor
- Está disponible continuamente para múltiples usuarios
- Requiere configuración adecuada de seguridad de red
- Se implementa usando tecnologías de contenedores o nube
Enfoques Híbridos
Algunos escenarios se benefician de un enfoque híbrido:
- STDIO con Acceso a Red: Un servidor STDIO local que actúa como proxy para servicios remotos
- SSE con Comandos Locales: Un servidor SSE remoto que puede activar operaciones en la máquina del cliente a través de callbacks
- Patrón de Puerta de Enlace: Servidores STDIO para operaciones locales que se conectan a servidores SSE para funciones especializadas
Elegir Entre STDIO y SSE
| Consideración | STDIO | SSE |
|---|---|---|
| Ubicación | Solo máquina local | Local o remoto |
| Clientes | Cliente único | Múltiples clientes |
| Rendimiento | Menor latencia | Mayor latencia (sobrecarga de red) |
| Complejidad de Configuración | Más simple | Más compleja (requiere servidor HTTP) |
| Seguridad | Inherentemente seguro | Requiere medidas de seguridad explícitas |
| Acceso a Red | No necesario | Requerido |
| Escalabilidad | Limitado a la máquina local | Puede distribuirse a través de la red |
| Implementación | Instalación por usuario | Instalación centralizada |
| Actualizaciones | Actualizaciones distribuidas | Actualizaciones centralizadas |
| Uso de Recursos | Usa recursos del cliente | Usa recursos del servidor |
| Dependencias | Dependencias del lado del cliente | Dependencias del lado del servidor |
Configurar Transportes en AI Cockpit Reasoning
Para información detallada sobre la configuración de transportes STDIO y SSE en AI Cockpit Reasoning, incluyendo configuraciones de ejemplo, consulta la sección Comprender los Tipos de Transporte en la guía Usar MCP en AI Cockpit Reasoning.