一个通过自然语言管理 Docker 的 MCP 服务器!
一个快速演示,展示如何使用自然语言部署 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
使用自然语言编排容器。查看上方 的演示。
提供一个项目名称和所需容器的描述,让大语言模型完成其余工作。
此提示指示大语言模型进入 计划+应用
循环。你与大语言模型的交互将包括以下步骤:
nginx
,容器:"部署一个 nginx 容器并将其暴露在 9000 端口"wordpress
,容器:"部署一个 WordPress 容器和一个支持 MySQL 容器,将 WordPress 暴露在 9000 端口"当使用此提示开始新聊天时,大语言模型将接收使用给定项目 名称
创建的任何容器、卷和网络的状态。
这主要用于清理,以防你丢失了负责许多容器的聊天记录。
服务器为每个容器实现了几个资源:
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 密钥、数据库密码等。
除非大语言模型运行在你的本地机器上,否则与大语言模型交换的任何敏感数据本质上都是不安全的。
如果你有兴趣安全地向容器传递机密信息,请在此仓库中提交一个包含你使用场景的问题。
小心审查大语言模型创建的容器。Docker 不是一个安全的沙箱,因此 MCP 服务器可能通过 Docker 影响主机。
出于安全原因,此 MCP 服务器不支持敏感的 Docker 选项,如 --privileged
或 --cap-add/--cap-drop
。如果你对这些功能感兴趣,请在此仓库中提交一个包含你使用场景的问题。
此服务器使用 Python Docker SDK 的 from_env
方法。有关配置详情,请参阅
文档。
此 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" ] },