Implementar MCP Docker Server personalizado
- Creado servidor MCP en TypeScript con @modelcontextprotocol/sdk - Implementadas 13 herramientas Docker seguras usando dockerode: * docker_ps: Listar contenedores * docker_logs: Ver logs de contenedores * docker_inspect: Inspeccionar contenedor * docker_stats: Estadísticas de recursos * docker_top: Procesos del contenedor * docker_start/stop/restart: Gestión de contenedores * docker_exec: Ejecutar comandos * docker_images/networks/volumes: Listar recursos * docker_info: Información del sistema - Configurado servidor HTTP con Express en puerto 3000 - Agregado endpoint /mcp para protocolo MCP - Agregado health check en /health - Actualizado docker-compose.yml para usar imagen personalizada - Configurado GitHub Actions para build y deploy automático - Socket Docker montado en modo solo lectura para seguridad
This commit is contained in:
@@ -49,10 +49,11 @@ services:
|
||||
- "traefik.http.middlewares.${APP_NAME}-cors.headers.addvaryheader=true"
|
||||
|
||||
mcp-docker:
|
||||
image: docker:cli
|
||||
image: ${REG}/${REPO_OWNER}/mcp-docker-server:latest
|
||||
container_name: ${APP_NAME}-mcp-docker
|
||||
restart: unless-stopped
|
||||
command: mcp gateway run --port 8080 --transport streaming
|
||||
environment:
|
||||
- PORT=3000
|
||||
volumes:
|
||||
# Montar el socket de Docker para acceso al daemon
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
@@ -65,15 +66,15 @@ services:
|
||||
- "traefik.docker.network=traefik-network"
|
||||
|
||||
# Service
|
||||
- "traefik.http.services.${APP_NAME}-mcp.loadbalancer.server.port=8080"
|
||||
- "traefik.http.services.${APP_NAME}-mcp.loadbalancer.server.port=3000"
|
||||
|
||||
# Router sin autenticación
|
||||
- "traefik.http.routers.${APP_NAME}-mcp.rule=Host(`${MCP_DOMAIN}`)"
|
||||
# Router sin autenticación con PathPrefix para /mcp
|
||||
- "traefik.http.routers.${APP_NAME}-mcp.rule=Host(`${MCP_DOMAIN}`) && PathPrefix(`/mcp`)"
|
||||
- "traefik.http.routers.${APP_NAME}-mcp.entrypoints=websecure"
|
||||
- "traefik.http.routers.${APP_NAME}-mcp.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.routers.${APP_NAME}-mcp.service=${APP_NAME}-mcp"
|
||||
|
||||
# Headers personalizados para WebSocket y streaming
|
||||
# Headers personalizados para MCP
|
||||
- "traefik.http.middlewares.${APP_NAME}-mcp-headers.headers.customrequestheaders.X-Forwarded-Proto=https"
|
||||
- "traefik.http.routers.${APP_NAME}-mcp.middlewares=${APP_NAME}-mcp-headers"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user