MCP Docker Orchestrator
Un demonio para orquestar servidores MCP como contenedores Docker y configurar el enrutamiento basado en rutas de AWS ALB.
Documentación
MCP Docker Orchestrator
Un demonio gestionado por systemd que orquesta servidores MCP (Model Context Protocol) como contenedores Docker y configura el enrutamiento basado en rutas de AWS ALB.
Características
- Integración con Docker Compose: Gestiona servidores MCP utilizando el formato estándar de Docker Compose
- Integración con AWS ALB: Configura el enrutamiento basado en rutas en el Application Load Balancer de AWS
- Panel web: Monitorea y controla los servicios MCP a través de una interfaz web
- Autocuración: Reconciliar automáticamente la configuración y el estado real
- Seguro: Sin persistencia de secretos, compatible con LiteLLM Proxy
Arquitectura
El MCP Docker Orchestrator consta de varios componentes principales:
- Administrador de configuración: Maneja la carga y el análisis de la configuración de Docker Compose
- Administrador de Compose: Gestiona el ciclo de vida de los servicios de Docker Compose
- Administrador de ALB: Configura las reglas de enrutamiento de AWS ALB
- Panel: Interfaz web para monitoreo y gestión
- Servicio Orquestador: Proceso principal que coordina todos los componentes
Requisitos previos
- Python 3.8 o superior
- Docker y Docker Compose
- Cuenta de AWS con los permisos adecuados
- Host Linux (para el servicio systemd)
Instalación
Instalación automática
La forma más fácil de instalar es utilizando el script de configuración proporcionado:
sudo ./setup.sh
Esto hará lo siguiente:
- Instalar las dependencias de Python
- Crear los archivos de configuración predeterminados
- Configurar el servicio systemd
- Configurar los permisos
Instalación manual
-
Instalar las dependencias de Python:
pip install -r requirements.txt -
Configurar los ajustes en
settings.conf -
Configurar los servidores MCP en
mcp-compose.yaml -
Instalar el servicio systemd:
sudo cp service.template /etc/systemd/system/mcp-orchestrator.service # Edit the service file to configure paths sudo systemctl daemon-reload sudo systemctl enable mcp-orchestrator.service
Configuración
Ajustes (settings.conf)
[aws]
region = us-west-2 # AWS region
alb_arn = # ARN of your Application Load Balancer
listener_arn = # ARN of your ALB listener
vpc_id = # ID of your VPC
[service]
reconciliation_interval_seconds = 60 # How often to check and reconcile state
port_range_start = 8000 # Start of port range for container mapping
port_range_end = 9000 # End of port range for container mapping
[dashboard]
username = admin # Dashboard login username
password = changeme # Dashboard login password (change this!)
path = /monitor # URL path for dashboard
[logging]
level = INFO # Logging level (DEBUG, INFO, WARNING, ERROR)
Configuración del servidor MCP (mcp-compose.yaml)
version: '3'
services:
example-mcp-server:
image: mcp/example:latest
restart: always
environment:
FASTMCP_LOG_LEVEL: "ERROR"
ADDITIONAL_ENV_VAR: "value"
labels:
mcp.path: "/mcp/example"
mcp.disabled: "false"
mcp.managed_by: "mcp-orchestrator"
Cada configuración de servidor MCP consta de:
- image: Imagen de Docker a ejecutar
- restart: Política de reinicio (siempre recomendado)
- environment: Variables de entorno
- labels:
- mcp.path: Patrón de ruta para el enrutamiento de ALB
- mcp.disabled: Si este servidor está deshabilitado
- mcp.managed_by: Siempre debe ser "mcp-orchestrator"
Uso
Iniciar el servicio
sudo systemctl start mcp-orchestrator
Verificar el estado
sudo systemctl status mcp-orchestrator
Ver los registros
sudo journalctl -u mcp-orchestrator -f
Ejecución manual
Para pruebas o depuración:
# Run once and exit
python orchestrator/main.py --one-shot
# Run without dashboard
python orchestrator/main.py --no-dashboard
# Specify custom config files
python orchestrator/main.py --compose /path/to/mcp-compose.yaml --settings /path/to/settings.conf
# Migrate from old config format
python orchestrator/main.py --migrate /path/to/old/mcp.config.json
Panel
El panel web está disponible en:
http://your-server:5000/monitor
Inicio de sesión predeterminado: admin / changeme
Características:
- Resumen de los servidores MCP
- Monitoreo del estado de los contenedores
- Configuración del enrutamiento de ALB
- Acciones (iniciar/detener/reiniciar servicios)
- Controles de sincronización
Enrutamiento
Cada servidor MCP se asigna a una ruta basada en su ID o en la etiqueta mcp.path:
/mcp/{server-id}/*
Estos patrones de ruta se configuran en las reglas del listener de ALB.
Migración desde mcp.config.json
Si está actualizando desde una versión anterior que usaba mcp.config.json, puede utilizar la herramienta de migración integrada:
python orchestrator/main.py --migrate /path/to/mcp.config.json
Esto hará lo siguiente:
- Leer su
mcp.config.jsonexistente - Convertirlo al nuevo formato de Docker Compose
- Guardarlo como
mcp-compose.yaml
Solución de problemas
Problemas con contenedores
- Verifique el estado de Docker Compose:
docker compose ps - Verifique los registros del contenedor:
docker compose logs {service-id} - Verifique si hay conflictos de puertos
- Si ve errores de "Permiso denegado":
- El usuario del servicio necesita acceso al socket de Docker
- Asegúrese de que el usuario esté en el grupo docker
- Es posible que deba cerrar sesión y volver a iniciarla para que los cambios de grupo surtan efecto
Problemas con AWS ALB
- Verifique las credenciales de AWS
- Verifique el ARN del listener de ALB y las reglas
- Asegúrese de que los grupos de destino estén configurados correctamente
- Verifique que la instancia EC2 esté registrada con los grupos de destino
Problemas con el servicio
- Verifique el estado de systemd:
systemctl status mcp-orchestrator - Vea los registros:
journalctl -u mcp-orchestrator -f - Verifique que los archivos de configuración tengan el formato correcto
Licencia
Este proyecto está licenciado bajo la Licencia MIT: consulte el archivo LICENSE para obtener más detalles.