用于通过自然语言管理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
<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的交互将涉及以下步骤:
nginx,容器:"部署一个暴露在9000端口上的nginx容器"wordpress,容器:"部署一个WordPress容器和支持它的MySQL容器,并将WordPress暴露在9000端口上"当使用此提示开始新的聊天时,LLM会收到任何由给定项目名称创建的容器、卷和网络的状态。
这主要用于清理,以防您丢失了一个负责许多容器的聊天记录。
该服务器为每个容器实现了几个资源:
list_containerscreate_containerrun_containerrecreate_containerstart_containerfetch_container_logsstop_containerremove_containerlist_imagespull_imagepush_imagebuild_imageremove_imagelist_networkscreate_networkremove_networklist_volumescreate_volumeremove_volume不要配置包含敏感数据的容器。 这包括API密钥、数据库密码等。
除非LLM在您的本地机器上运行,否则与LLM交换的所有敏感数据本质上都是不安全的。
如果您有兴趣安全地将秘密传递给容器,请在此仓库中提交一个问题并描述您的使用场景。
小心审查LLM创建的容器。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"
]
},