使用说明
Docker MCP服务器
一个用自然语言管理Docker的MCP服务器。
它能做什么?
- 用自然语言编写容器
- 反思并调试正在运行的容器
- 使用Docker卷管理持久数据
这是给谁的?
- 服务器管理员:连接到远程Docker引擎,例如管理面向公众的网站。
- Tinkers:在本地运行容器,并尝试使用支持Docker的开源应用程序。
- AI爱好者:挑战LLM的极限。
快速入门
安装
克劳德桌面版
在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守护进程。
提示
码头_组成
使用自然语言编写容器。提供项目名称和所需容器的描述,让LLM完成其余工作。
此提示指示LLM进入计划+应用循环。您与LLM的互动将涉及以下步骤:
- 您向LLM说明要携带哪些容器
- LLM计算一个简洁的自然语言计划并将其呈现给您
- 你要么:
- 应用该计划
- 提供LLM反馈,LLM重新计算计划
示例
- 姓名:
nginx,containers:“部署一个nginx容器,将其暴露在端口9000上” - 姓名:
wordpress,containers:“部署一个WordPress容器和一个支持MySQL的容器,在端口9000上暴露WordPress”
恢复项目
当使用此提示启动新聊天时,LLM将收到使用给定项目创建的任何容器、卷和网络的状态 name.
这主要用于清理,以防您丢失了负责许多容器的聊天。
资源
服务器为每个容器实现了几个资源:
- 统计数据:容器的CPU、内存等
- 原木:从集装箱中拖出一些原木
工具
列表工具接受可选过滤器(例如按标签)。容器和图像列表工具支持 all 标记以包括已停止或中间资源。
容器
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 方法。有关配置的详细信息,请参阅Docker Python客户端文档。
可选环境变量(前缀 MCP_SERVER_):
MCP_SERVER_LOG_LEVEL–日志级别:调试、信息、警告或错误(默认值:警告)- 设置也从加载
.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来配置您的开发环境。
安装开发依赖项(例如使用ruff进行linting):
uv sync --extra dev
看 devbox.json 对于开发脚本:
devbox run python-lint–在源树上运行ruffdevbox run mcp-run–在本地运行MCP服务器devbox run mcp-inspector–运行MCP检查器devbox run prettier-formatJSON和Markdown格式devbox run pyproject-check–验证pyproject.toml
设置devbox后,您可以配置Claude MCP配置以使用它:
"docker": {
"command": "/path/to/repo/.devbox/nix/profile/default/bin/uv",
"args": [
"--directory",
"/path/to/repo/",
"run",
"mcp-server-docker"
]
},
