Ir al contenido principal
IngenieríaMar 28, 2026

MCP en produccion: resolver desafios de transport, auth y scaling

OS
Open Soft Team

Engineering Team

Del prototipo a produccion: que cambia

Construir un servidor MCP que funcione en tu portatil es relativamente sencillo. Operar uno que maneje miles de sesiones de agentes AI concurrentes a traves de una infraestructura distribuida es un desafio de ingenieria completamente diferente. Los despliegues MCP en produccion deben abordar cinco preocupaciones que los prototipos pueden ignorar: escalabilidad del transporte, autenticacion y autorizacion, gestion de sesiones a escala, pistas de auditoria y orquestacion multi-servidor.

Este articulo es una guia tecnica para equipos de ingenieria que estan trasladando servidores MCP del desarrollo a produccion. Asumimos que has construido al menos un servidor MCP y comprendes los fundamentos del protocolo. Si no, comienza con nuestro articulo sobre como construir tu primer servidor MCP.

Escalabilidad del transporte: stdio vs SSE vs Streamable HTTP

MCP define tres mecanismos de transporte. Elegir el adecuado para produccion es tu primera decision arquitectonica.

Transporte stdio

El transporte stdio se comunica a traves de flujos de entrada/salida estandar. La aplicacion Host lanza el servidor MCP como un proceso hijo e intercambia mensajes JSON-RPC a traves de stdin/stdout.

Ventajas:

  • Cero configuracion de red
  • Aislamiento a nivel de proceso
  • Sin conflictos de puertos
  • Latencia mas baja (sin pila de red)

Limitaciones:

  • El servidor debe ejecutarse en la misma maquina que el Host
  • Un proceso de servidor por sesion de Client
  • Sin balanceo de carga
  • Sin escalado horizontal

Ideal para: Herramientas de desarrollo local, extensiones de IDE, aplicaciones de escritorio de un solo usuario.

Transporte SSE (Server-Sent Events)

El transporte SSE utiliza HTTP para mensajes de cliente a servidor y Server-Sent Events para mensajes de servidor a cliente. El servidor funciona como un servicio HTTP.

Ventajas:

  • Accesible a traves de la red (servidor remoto)
  • Compatible con infraestructura HTTP existente
  • Soporta multiples clientes simultaneos
  • Funciona a traves de firewalls y proxies

Limitaciones:

  • Streaming unidireccional (SSE solo de servidor a cliente)
  • Requiere afinidad de sesion (conexion stateful)
  • Algunos balanceadores de carga tienen problemas con conexiones SSE de larga duracion
  • Sin semantica de reconexion incorporada en el protocolo

Ideal para: Despliegues de pequena a mediana escala, herramientas internas, equipos con infraestructura HTTP existente.

Transporte Streamable HTTP

Streamable HTTP es el transporte mas reciente, disenado especificamente para despliegues en produccion. Utiliza POST HTTP estandar para todos los mensajes, con streaming SSE opcional para operaciones de larga duracion.

Ventajas:

  • Modelo request/response completamente stateless
  • Funciona con cualquier balanceador de carga HTTP
  • Gestion de sesiones incorporada a traves del header Mcp-Session-Id
  • Soporta respuestas streaming y no-streaming
  • Compatible con CDN y proxies

Limitaciones:

  • Requiere almacenamiento de sesiones del lado del servidor (Redis, base de datos)
  • Overhead por mensaje ligeramente mayor que stdio
  • Transporte mas nuevo — menos herramientas en el ecosistema

Ideal para: Despliegues cloud en produccion, plataformas multi-tenant, entornos empresariales.

Matriz de comparacion de transportes

CaracteristicastdioSSEStreamable HTTP
Soporte de redNoSiSi
Escalado horizontalNoLimitadoSi
Balanceo de cargaNoAfinidad de sesion requeridaLB HTTP estandar
Gestion de sesionesPor procesoMemoria del servidorStore externo
LatenciaLa mas bajaBajaBaja
Compatible con firewallN/ASiSi

Autenticacion y autorizacion

Integracion OAuth 2.0

Los servidores MCP en produccion necesitan una forma para que los clientes se autentiquen y restrinjan el acceso a tools y resources especificos. El protocolo MCP soporta OAuth 2.0 para servidores remotos.

El flujo funciona asi:

  1. El MCP client se conecta al servidor y envia una solicitud initialize
  2. El servidor responde con 401 Unauthorized y un header WWW-Authenticate con la URL de metadatos OAuth
  3. El Client obtiene la configuracion OAuth desde /.well-known/oauth-authorization-server
  4. El Client obtiene un token de acceso mediante un flujo de autorizacion basado en navegador
  5. Las solicitudes posteriores incluyen el token Bearer en el header Authorization

Autorizacion a nivel de tool

La autenticacion sola no es suficiente. Los sistemas de produccion necesitan autorizacion granular que controle que tools puede llamar un usuario y a que resources puede acceder.

Enfoques recomendados:

  • Control de acceso basado en roles (RBAC): Asignar permisos de tools a roles. Ejemplo: el rol analyst accede a tools de consulta de solo lectura, el rol admin accede a operaciones de escritura.
  • Control basado en scopes: Usar scopes OAuth para limitar el acceso a tools. Ejemplo: el scope mcp:tools:query:read solo permite consultas SELECT.
  • Filtrado dinamico de tools: Filtrar la lista de tools disponibles basandose en los permisos del usuario autenticado.

Escalado horizontal con Redis

Usando el transporte Streamable HTTP stateless, puedes ejecutar multiples instancias de servidor MCP detras de un balanceador de carga. El estado de sesion se almacena en Redis y se comparte entre todas las instancias.

Client → Load Balancer → MCP Server 1 ↔ Redis
                       → MCP Server 2 ↔ Redis
                       → MCP Server 3 ↔ Redis

Cada solicitud incluye el header Mcp-Session-Id, y cualquier instancia del servidor puede obtener el estado de sesion de Redis para continuar el procesamiento.

Auto-scaling en Kubernetes

Desplegar servidores MCP en Kubernetes permite escalar automaticamente los Pods basandose en el numero de sesiones activas o la utilizacion de CPU. Usa metricas personalizadas con el Horizontal Pod Autoscaler (HPA).

Registro de auditoria

Los despliegues empresariales requieren pistas de auditoria detalladas cada vez que una AI llama a una herramienta externa. Para cada llamada a un tool, registra:

  • Marca de tiempo: Hora de la llamada
  • ID de usuario: El usuario que inicio la accion de AI
  • Nombre del tool: El tool MCP llamado
  • Parametros de entrada: Los datos enviados al tool
  • Resultado: Los datos devueltos por el tool
  • Duracion de ejecucion: El tiempo que tomo la llamada
  • Errores: Cualquier error ocurrido

Usa registro estructurado (formato JSON) y envia los logs a un sistema centralizado de gestion de logs (ELK Stack, Datadog, CloudWatch).

Arquitectura de gateway

Para despliegues a gran escala, considera implementar un patron de gateway MCP. El gateway actua como un proxy inverso entre los MCP clients y los servidores MCP backend.

Responsabilidades del gateway:

  • Centralizacion de autenticacion: Manejar toda la validacion OAuth en el gateway
  • Limitacion de velocidad: Aplicar limites por usuario y por tool
  • Enrutamiento: Enrutar solicitudes a los servidores backend apropiados basandose en el nombre del tool
  • Recopilacion de logs de auditoria: Registrar todas las llamadas a tools a nivel de gateway
  • Circuit breaker: Manejo de fallback cuando los servidores backend fallan

FAQ

P: Se puede usar el transporte stdio en produccion? R: Si, pero solo en escenarios limitados. Es adecuado para aplicaciones de escritorio donde cada usuario ejecuta su propio proceso de servidor MCP local. Para infraestructura de servidor compartida, usa Streamable HTTP.

P: Es necesario persistir las sesiones MCP? R: Si, al usar Streamable HTTP. El estado de sesion incluye las capacidades del cliente, la version del protocolo negociada y las notificaciones registradas. Redis es el almacen de sesiones recomendado.

P: Como se debe versionar los servidores MCP? R: Usa el campo de version del servidor en la respuesta initialize. Para cambios incompatibles (eliminacion de tools, cambios de esquema), incrementa la version mayor y soporta tanto la version antigua como la nueva durante un periodo de migracion.

P: Cual es el tamano maximo de mensaje para MCP? R: El protocolo no define un maximo, pero los limites practicos dependen del transporte. Para Streamable HTTP, manten las respuestas por debajo de 10 MB. Para stdio, los buffers de pipes del sistema (tipicamente 64 KB) pueden requerir chunking para respuestas grandes.