Ir al contenido principal

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

  1. El cliente (AI Cockpit Reasoning) genera un servidor MCP como proceso hijo
  2. La comunicación ocurre a través de flujos de proceso: el cliente escribe en el STDIN del servidor, el servidor responde al 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 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

  1. El cliente (AI Cockpit Reasoning) se conecta al endpoint SSE del servidor a través de una solicitud HTTP GET
  2. Esto establece una conexión persistente donde el servidor puede enviar eventos al cliente
  3. Para la comunicación del cliente al servidor, el cliente realiza solicitudes HTTP POST a un endpoint separado
  4. 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:

  1. STDIO con Acceso a Red: Un servidor STDIO local que actúa como proxy para servicios remotos
  2. SSE con Comandos Locales: Un servidor SSE remoto que puede activar operaciones en la máquina del cliente a través de callbacks
  3. 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ónSTDIOSSE
UbicaciónSolo máquina localLocal o remoto
ClientesCliente únicoMúltiples clientes
RendimientoMenor latenciaMayor latencia (sobrecarga de red)
Complejidad de ConfiguraciónMás simpleMás compleja (requiere servidor HTTP)
SeguridadInherentemente seguroRequiere medidas de seguridad explícitas
Acceso a RedNo necesarioRequerido
EscalabilidadLimitado a la máquina localPuede distribuirse a través de la 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 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.