关于 🐋 Docker MCP server
Docker MCP 服务用于通过自然语言管理 Docker,适合服务器管理员、爱好者和 AI 爱好者。它可以编排容器、调试运行中的容器并管理数据卷。
主要功能
- 01通过自然语言编排容器
- 02查看并调试运行中的容器
- 03管理 Docker 数据卷与网络
- 04通过 SSH 连接远程 Docker 引擎
适用场景
- 01通过自然语言部署 WordPress 等应用及其数据库
- 02读取容器日志与统计信息进行排查
- 03管理面向公网网站的远程 Docker 主机
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露容器、镜像、网络和数据卷的工具,以及容器日志与统计信息的资源模板。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🐋 Docker MCP 服务
一款通过自然语言管理 Docker 的 MCP 服务!
🪩 它能做什么?
- 🚀 通过自然语言编排容器
- 🔍 检查并调试正在运行的容器
- 📀 使用 Docker 卷管理持久化数据
❓ 适合哪些人?
- 服务器管理员:连接到远程 Docker 引擎,例如管理面向公众的网站。
- 技术爱好者:在本地运行容器,并试用支持 Docker 的开源应用。
- AI 爱好者:探索大模型的能力极限!
演示
通过自然语言部署 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
使用 uv 从 PyPi 安装
如果尚未安装 uv,请按照系统对应的安装说明进行操作:
链接
然后将以下内容添加到 MCP 服务配置文件中:
"mcpServers": {
"mcp-server-docker": {
"command": "uvx",
"args": [
"mcp-server-docker"
]
}
}
使用 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
使用自然语言编排容器。请参阅上方的演示。
提供项目名称和所需容器的描述,其余工作交给大模型完成。
此提示词会指示大模型进入 plan+apply 循环。你与大模型的交互包括以下步骤:
- 告诉大模型需要启动哪些容器
- 大模型计算出简洁的自然语言计划并展示给你
- 你可以:
- 应用该计划
- 向大模型提供反馈,由大模型重新计算计划
示例
- 名称:
nginx,容器:"部署一个 nginx 容器,并将其暴露在端口 9000 上" - 名称:
wordpress,容器:"部署一个 WordPress 容器和一个配套的 MySQL 容器,并将 WordPress 暴露在端口 9000 上"
恢复项目
使用此提示词开始新的聊天时,大模型将收到使用指定项目 name 创建的所有容器、卷和网络的状态。
这主要适用于清理工作,以防你丢失了负责创建许多容器的聊天记录。
📔 资源
该服务公开资源模板,而不是枚举当前正在运行的容器:
docker://containers/{container_id}/logs(text/plain)docker://containers/{container_id}/stats(application/json)
使用 Docker 容器 ID 或名称读取任一 URI。
🔨 工具
容器
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 密钥、数据库密码等。
除非大模型在你的本地计算机上运行,否则与大模型交换的任何敏感数据都必然会遭到泄露。
如果你有兴趣安全地向容器传递密钥,请在此仓库中提交一个 issue,说明你的使用场景。
审查已创建的容器
请务必审查 LLM 创建的容器。Docker 不是安全的沙盒,因此 MCP 服务可能会通过 Docker 影响主机。
出于安全考虑,此 MCP 服务不支持 --privileged 或 --cap-add/--cap-drop 等敏感 Docker 选项。如果你对此类功能感兴趣,请在此仓库中提交 issue,并说明你的使用场景。
🛠️ 配置
此服务使用 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://[email protected]"
}
}
}
💻 开发
建议使用 Devbox 配置开发环境。此服务使用 MCP Python SDK v2 的高级 MCPServer API,可直接进行检查:
uv sync --all-groups
uv run mcp dev src/mcp_server_docker/server.py:app
# or: npx @modelcontextprotocol/inspector uv run mcp-server-docker
无需 Docker 守护进程即可运行隔离的测试和 lint 套件:
uv run pytest
uv run ruff format --check src tests
uv run ruff check src tests
请参阅 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"
]
},
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。