| 类别 | 状态 |
|---|---|
| 构建与持续集成 | |
| SonarQube | |
| 安全 | |
| 包 | |
| 技术 |
一个暴露Docker功能给AI助手(如Claude)的模型上下文协议(MCP)服务器。通过类型安全、有文档说明的API来管理容器、镜像、网络和卷,并带有安全控制。
快速开始:
claude mcp add --transport stdio docker uvx mcp-docker@latestcodex mcp add docker -- uvx mcp-docker@latestresources/templates/list)uvx自动安装)在终端运行以下命令:
claude mcp add --transport stdio docker uvx mcp-docker@latest
就是这样!Docker套接字会根据您的操作系统(Windows、Linux、macOS、WSL)自动检测。
添加到您的claude_desktop_config.json:
{
"mcpServers": {
"docker": {
"command": "uvx",
"args": ["mcp-docker"]
}
}
}
注意:本地使用无需额外配置。Docker套接字会根据您的操作系统自动检测。
获取更新:uvx缓存包且不会自动更新。要获取最新版本:
# 运行最新版本(推荐 - 不缓存)
uvx mcp-docker@latest
# 或清除所有缓存的工具环境
uv cache prune
对于网络可访问的部署,使用HTTP传输:
# 使用HTTP传输运行
mcp-docker --transport http --host 127.0.0.1 --port 8000
生产部署:
对于生产用途,部署在反向代理(如NGINX、Caddy)后面,提供:
命令行选项:--transport(标准输入输出/HTTP)、--host、--port
MCP Docker服务器为生产部署提供了企业级的安全性,包括OAuth认证、TLS加密、速率限制、审计日志和安全控制。
⚠️重要:容器日志可能包含恶意提示(RADE风险)。参见SECURITY.md了解威胁模型和缓解策略。
对于生产部署,参见SECURITY.md:
所有环境变量(安全、服务器、传输、OAuth、速率限制、CORS)都记录在 CONFIGURATION.md中。生产强化步骤、威胁模型和部署检查表位于SECURITY.md。
文档:
服务器提供了33个工具,分为5类:
docker_list_containers - 列出容器并应用过滤器docker_inspect_container - 获取详细容器信息docker_create_container - 创建新容器docker_start_container - 启动容器docker_stop_container - 平稳停止容器docker_restart_container - 重启容器docker_remove_container - 移除容器docker_container_logs - 获取容器日志docker_exec_command - 在容器内执行命令docker_container_stats - 获取资源使用统计信息docker_list_images - 列出镜像docker_inspect_image - 获取镜像详情docker_pull_image - 从注册表拉取docker_build_image - 从Dockerfile构建docker_push_image - 推送到注册表docker_tag_image - 标记镜像docker_remove_image - 移除镜像docker_prune_images - 清理未使用的镜像docker_image_history - 查看层历史docker_list_networks - 列出网络docker_inspect_network - 获取网络详情docker_create_network - 创建网络docker_connect_container - 将容器连接到网络docker_disconnect_container - 从网络断开连接docker_remove_network - 移除网络docker_list_volumes - 列出卷docker_inspect_volume - 获取卷详情docker_create_volume - 创建卷docker_remove_volume - 移除卷docker_prune_volumes - 清理未使用的卷docker_version - 获取Docker版本信息docker_events - 获取Docker事件,可选时间范围和过滤器docker_prune_system - 清理所有未使用的资源五个提示帮助AI助手处理Docker:
两个资源模板提供对容器数据的参数化访问(可通过resources/templates/list发现):
资源模板使用URI参数动态生成资源。客户端可以通过提供container_id来通过resources/read端点访问特定容器的数据。
服务器实现了一个三级安全系统,具有可配置的操作模式和细粒度的工具过滤:
安全 - 只读操作(列表、检查、日志、统计)
docker_list_containers,docker_inspect_image,docker_container_logs中等 - 可改变但可逆的状态(启动、停止、创建)
SAFETY_ALLOW_MODERATE_OPERATIONS控制(默认:true)docker_create_container,docker_start_container,docker_pull_image破坏性 - 永久更改(移除、清理)
SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS=truedocker_remove_container,docker_prune_images,docker_system_prune除了安全级别外,还可以使用允许和拒绝列表精确控制哪些工具可用:
拒绝列表 - 阻止特定工具(优先于允许列表)
# 通过工具名称阻止破坏性操作
SAFETY_DENIED_TOOLS="docker_remove_container,docker_prune_images,docker_system_prune"
允许列表 - 只允许特定工具(空值 = 根据安全级别允许所有)
# 只允许只读监控工具
SAFETY_ALLOWED_TOOLS="docker_list_containers,docker_inspect_container,docker_container_logs,docker_container_stats,docker_version"
工作原理:
list_tools()和执行时被过滤用例:
使用环境变量配置安全模式:
只读模式(最安全) - 监控和可观测性
SAFETY_ALLOW_MODERATE_OPERATIONS=false
SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS=false
# 可选:明确只允许监控工具
SAFETY_ALLOWED_TOOLS="docker_list_containers,docker_list_images,docker_inspect_container,docker_inspect_image,docker_container_logs,docker_container_stats,docker_version,docker_system_info"
默认模式(平衡) - 开发和运营
SAFETY_ALLOW_MODERATE_OPERATIONS=true # 或省略(默认)
SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS=false
# 可选:仅阻止最危险的操作
SAFETY_DENIED_TOOLS="docker_system_prune,docker_prune_volumes"
全模式(最少限制) - 基础设施管理
SAFETY_ALLOW_MODERATE_OPERATIONS=true
SAFETY_ALLOW_DESTRUCTIVE_OPERATIONS=true
注意:只读模式适用于监控、审核和可观测性用例,不允许对Docker状态进行任何更改。
| 功能 | 直接使用Docker CLI | MCP Docker服务器 |
|---|---|---|
| Claude Desktop | ❌ 无CLI访问 | ✅ 必需(唯一选择) |
| Claude Code | ✅ 立即生效 | ✅ 可选(增加安全性) |
| 设置 | 无需设置 | 安装和配置 |
| 安全控制 | ❌ 无 | ✅ 只读模式,操作阻塞 |
| 数据格式 | 文本(需解析) | 结构化JSON |
| 审计日志 | 手动设置 | ✅ 内置 |
| 速率限制 | ❌ 无 | ✅ 可配置 |
| 输入验证 | ❌ 无 | ✅ Pydantic模式 |
| Docker覆盖率 | 100%(所有功能) | 36个核心操作 |
| 复杂性 | 低(标准命令) | 中等(MCP协议) |
何时使用MCP服务器:
何时直接使用CLI:
混合方法:使用MCP进行常见操作 + 使用CLI进行高级功能。
# 克隆仓库
git clone https://github.com/williajm/mcp_docker.git
cd mcp_docker