🐋 Docker MCP服务器
一个用自然语言管理Docker的MCP服务器!
🪩 它能做什么?
- 🚀 用自然语言编写容器
- 🔍 反思并调试正在运行的容器
- 📀 使用Docker卷管理持久数据
❓ 这是给谁的?
- 服务器管理员:连接到远程Docker引擎,例如管理
面向公众的网站。
- Tinkers:在本地运行容器并尝试开源应用程序
支持Docker。
- AI爱好者:挑战LLM的极限!
演示
一个使用自然语言展示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
Install from PyPi with uv
如果你没有 uv 已安装,请按照您的安装说明进行操作 系统: 链接
然后将以下内容添加到MCP服务器文件中:
"mcpServers": {
"mcp-server-docker": {
"command": "uvx",
"args": [
"mcp-server-docker"
]
}
}Install with 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将包括以下步骤:
- 您向LLM说明要携带哪些容器
- LLM计算一个简洁的自然语言计划并将其呈现给您
- 你要么:
- 应用该计划 - 提供LLM反馈,LLM重新计算计划
例子
- 姓名:
nginx,containers:“部署一个nginx容器,将其暴露在端口上
9000"
- 姓名:
wordpress,containers:“部署一个WordPress容器和一个支持
MySQL容器,暴露了端口9000上的Wordpress”
恢复项目
当使用此提示开始新的聊天时,LLM将收到以下状态 使用给定项目创建的任何容器、卷和网络 name.
这主要用于清理,以防你丢失了一个聊天 负责许多集装箱。
📔 资源
服务器为每个容器实现了几个资源:
- 统计数据:容器的CPU、内存等
- 原木:从集装箱中拖出一些原木
🔨 工具
容器
list_containerscreate_containerrun_containerrecreate_containerstart_containerfetch_container_logsstop_containerremove_container
图像
list_imagespull_imagepush_imagebuild_imageremove_image
网络
list_networkscreate_networkremove_network
卷
list_volumescreate_volumeremove_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守护进程。
只需设置a ssh:// MCP服务器定义中的主机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"
]
},
