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.

🐋 Docker MCP 服务器

一个使用自然语言管理 Docker 的 MCP 服务器!

🪩 它能做什么?

  • 🚀 使用自然语言编写容器
  • 🔍 自省和调试正在运行的容器
  • 📀 使用 Docker 卷管理持久数据

❓ 这是给谁的?

  • 服务器管理员:连接到远程 Docker 引擎,例如管理面向公众的网站。
  • 修补者:在本地运行容器并试验支持 Docker 的开源应用程序。
  • 人工智能爱好者:突破法学硕士的极限!

演示

使用自然语言展示 WordPress 部署的快速演示:

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

🏎️ 快速入门

安装

克劳德桌面

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

在 Windows 上: %APPDATA%/Claude/claude_desktop_config.json

如果你没有安装uv ,请按照你的系统的安装说明进行操作:链接

然后将以下内容添加到您的 MCP 服务器文件中:

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

纯粹为了方便,服务器可以在 Docker 容器中运行。

克隆此存储库后,构建 Docker 镜像:

docker build -t mcp-server-docker .

然后将以下内容添加到您的 MCP 服务器文件中:

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

请注意,我们将 Docker 套接字作为卷挂载;这确保 MCP 服务器可以连接并控制本地 Docker 守护进程。

📝 提示

docker_compose

使用自然语言编写容器。请参阅上面的演示。

提供项目名称和所需容器的描述,然后让 LLM 完成剩下的工作。

此提示指示LLM进入plan+apply循环。你与LLM的互动将涉及以下步骤:

  1. 你给 LLM 指示要带上哪个容器
  2. LLM 计算出一个简洁的自然语言计划并呈现给你
  3. 您可以:
    • 应用计划
    • 向LLM提供反馈,LLM重新计算计划

示例

  • 名称: nginx ,容器:“部署一个 nginx 容器并将其暴露在端口 9000 上”
  • 名称: wordpress ,容器:“部署一个 WordPress 容器和一个支持 MySQL 容器,在端口 9000 上公开 Wordpress”

恢复项目

当使用此提示开始新的聊天时,LLM 将收到使用给定项目name创建的任何容器、卷和网络的状态。

这主要用于清理,以防您丢失负责许多容器的聊天。

📔 资源

服务器为每个容器实现了一些资源:

  • 统计信息:容器的 CPU、内存等
  • 日志:从容器中跟踪一些日志

🔨工具

容器

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

图片

  • list_images
  • pull_image
  • push_image
  • build_image
  • remove_image

网络

  • list_networks
  • create_network
  • remove_network

  • list_volumes
  • create_volume
  • remove_volume

🚧 免责声明

敏感数据

**请勿在容器中配置敏感数据。**这些数据包括 API 密钥、数据库密码等。

除非 LLM 在您的本地机器上运行,否则与 LLM 交换的任何敏感数据本质上都会受到损害。

如果您有兴趣将机密安全地传递给容器,请在此存储库上提交您的用例问题。

查看已创建的容器

请仔细检查 LLM 创建的容器。Docker 并非安全沙盒,因此 MCP 服务器可能会通过 Docker 影响主机。

出于安全考虑,此 MCP 服务器不支持--privileged--cap-add/--cap-drop等敏感 Docker 选项。如果您对这些功能感兴趣,请在此仓库中提交您的用例问题。

🛠️ 配置

此服务器使用 Python Docker SDK 的from_env方法。有关配置详细信息,请参阅文档

💻 开发

最好使用 Devbox 来配置您的开发环境。

请参阅devbox.json以获取有用的开发命令。

设置 devbox 后,您可以配置 Claude MCP 配置来使用它:

"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

MCP 服务器允许通过自然语言管理 Docker 容器,使用户无需自己运行命令即可编写、自省和调试容器。

  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