Docker MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows management of Docker with natural language, including composing containers, introspecting running containers, and managing Docker volumes, networks, and images.

  • Allows deployment of MySQL containers through natural language commands.

  • Allows deployment of NGINX containers through natural language commands.

Servidor Docker MCP

¡Un servidor MCP para gestionar Docker con lenguaje natural!

🪩¿Qué puede hacer?

  • 🚀 Componer contenedores con lenguaje natural
  • 🔍 Introspeccionar y depurar contenedores en ejecución
  • 📀 Administrar datos persistentes con volúmenes Docker

❓¿Para quién es esto?

  • Administradores de servidor: se conectan a motores Docker remotos, por ejemplo, para administrar un sitio web público.
  • Tinkerers: ejecutan contenedores localmente y experimentan con aplicaciones de código abierto compatibles con Docker.
  • Entusiastas de la IA: ¡superen los límites de lo que un LLM es capaz de hacer!

Manifestación

Una demostración rápida que muestra una implementación de WordPress utilizando lenguaje natural:

https://github.com/user-attachments/assets/65e35e67-bce0-4449-af7e-9f4dd773b4b3

🏎️ Inicio rápido

Instalar

Escritorio de Claude

En MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

En Windows: %APPDATA%/Claude/claude_desktop_config.json

Si no tiene instalado uv , siga las instrucciones de instalación para su sistema: enlace

Luego agregue lo siguiente a su archivo de servidores MCP:

"mcpServers": { "mcp-server-docker": { "command": "uvx", "args": [ "mcp-server-docker" ] } }

Por pura conveniencia, el servidor puede ejecutarse en un contenedor Docker.

Después de clonar este repositorio, construya la imagen de Docker:

docker build -t mcp-server-docker .

Y luego agregue lo siguiente a su archivo de servidores MCP:

"mcpServers": { "mcp-server-docker": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/var/run/docker.sock:/var/run/docker.sock", "mcp-server-docker:latest" ] } }

Tenga en cuenta que montamos el socket Docker como un volumen; esto garantiza que el servidor MCP pueda conectarse y controlar el demonio Docker local.

📝 Indicaciones

🎻 docker_compose

Utilice lenguaje natural para crear contenedores. Vea una demostración más arriba .

Proporcione un nombre de proyecto y una descripción de los contenedores deseados y deje que el LLM haga el resto.

Este mensaje indica al LLM que inicie un ciclo plan+apply . Su interacción con el LLM implicará los siguientes pasos:

  1. Le das instrucciones al LLM sobre qué contenedores traer
  2. El LLM calcula un plan de lenguaje natural conciso y te lo presenta
  3. Usted o bien:
    • Aplicar el plan
    • Proporciona retroalimentación al LLM y el LLM recalcula el plan

Ejemplos

  • Nombre: nginx , contenedores: "Implementar un contenedor nginx y exponerlo en el puerto 9000"
  • Nombre: wordpress , Contenedores: "Implementar un contenedor de WordPress y un contenedor MySQL compatible, exponiendo WordPress en el puerto 9000"

Reanudar un proyecto

Al iniciar un nuevo chat con este mensaje, el LLM recibirá el estado de todos los contenedores, volúmenes y redes creados con el name de proyecto indicado.

Esto es principalmente útil para limpiar, en caso de que pierdas un chat que era responsable de muchos contenedores.

📔 Recursos

El servidor implementa un par de recursos para cada contenedor:

  • Estadísticas: CPU, memoria, etc. de un contenedor
  • Troncos: saca algunos troncos de un contenedor

🔨 Herramientas

Contenedores

  • list_containers
  • create_container
  • run_container
  • recreate_container
  • start_container
  • fetch_container_logs
  • stop_container
  • remove_container

Imágenes

  • list_images
  • pull_image
  • push_image
  • build_image
  • remove_image

Redes

  • list_networks
  • create_network
  • remove_network

Volúmenes

  • list_volumes
  • create_volume
  • remove_volume

🚧 Descargo de responsabilidad

Datos sensibles

NO CONFIGURE CONTENEDORES CON DATOS CONFIDENCIALES. Esto incluye claves API, contraseñas de bases de datos, etc.

Cualquier dato confidencial intercambiado con el LLM está inherentemente comprometido, a menos que el LLM se esté ejecutando en su máquina local.

Si está interesado en pasar secretos de forma segura a los contenedores, presente un problema en este repositorio con su caso de uso.

Revisión de contenedores creados

Revise cuidadosamente los contenedores que crea el LLM. Docker no es un entorno de pruebas seguro, por lo que el servidor MCP podría afectar al equipo host a través de Docker.

Por razones de seguridad, este servidor MCP no admite opciones sensibles de Docker como --privileged o --cap-add/--cap-drop . Si estas funciones le interesan, informe un problema en este repositorio con su caso de uso.

🛠️ Configuración

Este servidor utiliza el método from_env del SDK de Docker para Python. Para obtener más información sobre la configuración, consulte la documentación .

💻 Desarrollo

Prefiera usar Devbox para configurar su entorno de desarrollo.

Consulte devbox.json para obtener comandos de desarrollo útiles.

Después de configurar devbox, puedes configurar tu Claude MCP para usarlo:

"docker": { "command": "/path/to/repo/.devbox/nix/profile/default/bin/uv", "args": [ "--directory", "/path/to/repo/", "run", "mcp-server-docker" ] },
-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor MCP que permite administrar contenedores Docker a través del lenguaje natural, lo que permite a los usuarios componer, introspectar y depurar contenedores sin ejecutar comandos ellos mismos.

  1. 🪩 What can it do?
    1. ❓ Who is this for?
      1. Demo
        1. 🏎️ Quickstart
          1. Install
        2. 📝 Prompts
          1. 🎻 docker_compose
        3. 📔 Resources
          1. 🔨 Tools
            1. Containers
            2. Images
            3. Networks
            4. Volumes
          2. 🚧 Disclaimers
            1. Sensitive Data
            2. Reviewing Created Containers
          3. 🛠️ Configuration
            1. 💻 Development
              ID: dmna3tblnr