返回市场
MCP服务器Docker

MCP服务器Docker

作者:ckreiling655 星标更新:2025-06-05

项目介绍

🐋 Docker MCP 服务器

用于通过自然语言管理Docker的MCP服务器!

🪩 它能做什么?

  • 🚀 使用自然语言组合容器
  • 🔍 检查并调试正在运行的容器
  • 📀 使用Docker卷管理持久数据

❓ 这适用于谁?

  • 服务器管理员:连接到远程Docker引擎,例如管理面向公众的网站。
  • 爱好者:本地运行容器并实验支持Docker的开源应用程序。
  • AI爱好者:探索LLM的能力极限!

示例

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

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

🏎️ 快速开始

安装

Claude Desktop

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

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

<details> <summary>从PyPi安装uv</summary>

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

然后,在你的MCP服务器文件中添加以下内容:

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ]
  }
}
</details> <details> <summary>使用Docker安装</summary>

为了方便起见,该服务器可以在Docker容器中运行。

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

docker build -t mcp-server-docker .

然后,在你的MCP服务器文件中添加以下内容:

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

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

</details>

📝 提示

🎻 docker_compose

使用自然语言组合容器。参见上面的演示

提供项目名称以及所需容器的描述,让LLM完成其余部分。

此提示指示LLM进入计划+应用循环。您与LLM的交互将涉及以下步骤:

  1. 您向LLM提供要启动哪些容器的指令
  2. LLM计算一个简洁的自然语言计划,并将其呈现给您
  3. 您可以选择:
    • 应用该计划
    • 向LLM提供反馈,LLM重新计算计划

示例

  • 名称:nginx,容器:"部署一个暴露在9000端口上的nginx容器"
  • 名称:wordpress,容器:"部署一个WordPress容器和支持它的MySQL容器,并将WordPress暴露在9000端口上"

恢复项目

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

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

📔 资源

该服务器为每个容器实现了几个资源:

  • 统计信息:容器的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服务器不支持敏感的Docker选项,如--privileged--cap-add/--cap-drop。如果您对这些功能感兴趣,请在此仓库中提交一个问题并描述您的使用场景。

🛠️ 配置

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

通过SSH连接到Docker

此MCP服务器可以通过SSH连接到远程Docker守护进程。

只需在MCP服务器定义中设置一个ssh://主机URL:

"mcpServers": {
  "mcp-server-docker": {
    "command": "uvx",
    "args": [
      "mcp-server-docker"
    ],
    "env": {
      "DOCKER_HOST": "ssh://myusername@myhost.example.com"
    }
  }
}

💻 开发

建议使用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"
    ]
  },