Skip to content

Integración con MCP ​

DockerSwarm

Dozzle es compatible con el Model Context Protocol (MCP), que permite a los asistentes de programación con IA interactuar con tus contenedores de Docker. Al activarlo, Dozzle expone un endpoint MCP en /api/mcp mediante el transporte Streamable HTTP, servido desde el mismo contenedor: no hacen falta procesos adicionales ni sidecars.

Esta función está desactivada por defecto. Para activarla, pon el flag --enable-mcp o la variable de entorno DOZZLE_ENABLE_MCP a true.

sh
docker run --volume=/var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle --enable-mcp
yaml
services:
  dozzle:
    image: amir20/dozzle:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 8080:8080
    environment:
      DOZZLE_ENABLE_MCP: true

Herramientas disponibles ​

Todas las herramientas son de solo lectura y no modifican los contenedores.

HerramientaDescripción
list_containersLista todos los contenedores de todos los hosts. Admite un filtro state opcional. Las etiquetas se omiten salvo que include_labels sea true.
get_container_logsObtiene logs estructurados con niveles detectados, análisis de JSON y agrupación multilínea.
search_container_logsBusca una palabra o frase en los logs de un contenedor. Devuelve solo las coincidencias.
list_hostsLista todos los hosts de Docker conectados.
get_container_statsObtiene el historial de uso de CPU y memoria de un contenedor.

Las herramientas de logs y estadísticas aceptan en container_id el ID del contenedor, su ID corto o su nombre, así que un nombre sigue funcionando después de que un redespliegue le asigne un ID nuevo al contenedor. host es opcional. Si se omite, el contenedor se busca en todos los hosts. Si un nombre coincide con varios contenedores, gana uno en ejecución y, después, el que tuvo actividad más reciente, y el resultado menciona los demás.

Por defecto, ambas herramientas de logs leen los últimos 5 minutos. since_minutes cambia ese intervalo, o puedes pasar start y end (RFC 3339) para una ventana fija. level conserva las entradas de ese nivel o superior (por ejemplo warn), y limit devuelve solo las N entradas más recientes. Las respuestas tienen un límite de 1 MB. Cuando una respuesta se recorta, se conservan las entradas más recientes y una nota indica cuántas se omitieron. Los códigos de color ANSI se eliminan de los mensajes.

Configurar clientes MCP ​

VS Code (GitHub Copilot / Copilot Chat) ​

Añade esto a tu .vscode/mcp.json o a la configuración MCP de usuario:

json
{
  "servers": {
    "dozzle": {
      "type": "http",
      "url": "http://localhost:8080/api/mcp"
    }
  }
}

Claude Desktop ​

Añade esto a la configuración MCP de Claude Desktop:

json
{
  "mcpServers": {
    "dozzle": {
      "type": "streamable-http",
      "url": "http://localhost:8080/api/mcp"
    }
  }
}

NOTE

Sustituye localhost:8080 por la dirección de tu instancia de Dozzle. Si Dozzle usa una ruta base personalizada (por ejemplo, --base /dozzle), el endpoint MCP estará en /dozzle/api/mcp.

Autenticación ​

El endpoint MCP forma parte del grupo de API autenticada. Cuando la autenticación está activada, los clientes MCP deben aportar credenciales válidas.

Autenticación simple y OIDC ​

Con --auth-provider simple o --auth-provider oidc, Dozzle es un servidor de autorización OAuth para clientes MCP. Los clientes que admiten autorización MCP (VS Code, Claude Code, Claude Desktop y otros) inician sesión por su cuenta. Añade el servidor sin cabeceras y, la primera vez que el cliente se conecte, abrirá una pestaña del navegador:

  1. Inicia sesión en Dozzle como siempre (contraseña, GitHub o tu proveedor OIDC).
  2. Dozzle muestra una página de consentimiento con el nombre del cliente y la dirección a la que te devolverá. Elige Permitir.
  3. El navegador vuelve al cliente, que guarda el token y lo renueva por sí solo.

El token solo funciona en /api/mcp y lleva los mismos roles y filtros de contenedores que tu sesión del navegador. Los tokens de acceso duran una hora. Los tokens de refresco dejan de funcionar 30 días después de aprobar el cliente, que entonces te pide aprobarlo de nuevo. Todo lo que cierra la sesión de todos en Dozzle, como editar users.yml o cambiar el emisor OIDC, también revoca los tokens MCP.

NOTE

Dozzle construye sus URL de OAuth a partir de la petición, igual que el callback de OIDC. Detrás de un proxy inverso, reenvía Host (o X-Forwarded-Host) y X-Forwarded-Proto. Con una ruta base personalizada, algunos clientes buscan metadatos en /.well-known/ en la raíz del dominio, así que dirige /.well-known/ a Dozzle si puedes.

Clientes sin soporte de OAuth ​

Con autenticación simple, un cliente que solo puede enviar cabeceras fijas puede usar un token de sesión:

  1. Envía una petición POST a /api/token con tu usuario y contraseña.
  2. Configura tu cliente MCP para enviar el token como cabecera Bearer.

Por ejemplo, en la configuración MCP de VS Code:

json
{
  "servers": {
    "dozzle": {
      "type": "http",
      "url": "http://localhost:8080/api/mcp",
      "headers": {
        "Authorization": "Bearer <your-jwt-token>"
      }
    }
  }
}

Con oidc esto no está disponible, porque no hay contraseña que cambiar por un token.

Autenticación por proxy ​

Con --auth-provider forward-proxy, el proxy inverso que hay delante de Dozzle se encarga de la autenticación e inyecta las cabeceras correspondientes. Los clientes MCP deben conectarse a través de ese mismo proxy y la autenticación se resuelve de forma transparente.

Sin autenticación ​

Si no hay ningún proveedor de autenticación configurado (lo predeterminado), el endpoint MCP es de acceso público. No hace falta configurar nada más.

Publicado bajo la licencia MIT. Código abierto y patrocinado por Docker OSS.