关于 Docker MCP Server
Docker MCP Server 将 Docker 和 Docker Swarm 操作作为工具提供给 MCP 客户端。它基于 MCP Mediator,可从 Docker 服务方法生成工具,并支持配置 Docker 守护进程和 TLS。
主要功能
- 01管理容器、镜像和卷
- 02检查网络、服务和 Swarm
- 03执行命令并获取日志
- 04配置 Docker 主机和 TLS
- 05从服务方法生成 MCP 工具
适用场景
- 01检查容器状态和资源用量
- 02管理 Docker Swarm 节点与服务
- 03通过工具构建、拉取或删除镜像
MCP 相关
它通过 MCP Mediator 将 Docker 和 Docker Swarm 命令作为 MCP 工具提供。客户端可连接到配置了 Docker 守护进程选项的服务进程。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Docker MCP Server
此模块基于 mcp_mediator 核心框架,为 Docker 命令提供 Model Context Protocol MCP 服务实现。
Docker MCP Server 利用 MCP Mediator 的 自动生成服务 功能,将现有 Docker 命令作为 MCP 工具开放。
每个命令都可以选择使用 @McpTool 注解,并附上简短说明,以提高工具的可发现性和易用性。
👉 请点击此处查看支持的命令完整列表。

重要
这是mcp_mediator项目的一部分:https://github.com/makbn/docker_mcp_server 要构建或修改,请克隆父仓库:git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git
使用示例
java -jar docker-mcp-server.jar \
--docker-host=tcp://localhost:2376 \
--tls-verify \
--cert-path=/etc/docker/certs \
--server-name=my-server \
--server-version=1.0.0 \
--max-connections=150 \
--docker-config=/custom/docker/config
要通过 java -jar 使用 Claude Desktop 运行 Docker MCP Server:
{
"mcpServers": {
"my_java_mcp_server": {
"command": "java",
"args": [
"-jar",
"docker-mcp-server.jar"
"--docker-host=tcp://localhost:2376",
"--tls-verify", # not required
"--cert-path=/etc/docker/certs", # required only if --tls-verify is available
"--server-name=my-docker-mcp-server",
"--server-version=1.0.0",
"--max-connections=150",
"--docker-config=/custom/docker/config"
]
}
}
}
或者创建原生镜像(请参阅下方步骤)并使用独立应用程序:
{
"mcpServers": {
"my_java_mcp_server": {
"command": "docker-mcp-server-executable",
"args": [
"--docker-host=tcp://localhost:2376" // rest of args
]
}
}
}
如何构建
要构建可执行文件:
mvn clean compile package
此命令会在 target 文件夹下创建一个 jar 文件:mcp-mediator-implementation-docker-[version].jar。你可以在此处停止,使用该 jar 文件并通过 java -jar 命令运行。或者,你也可以使用 GraalVM 原生镜像创建独立的可执行应用程序:
native-image -jar mcp-mediator-implementation-docker-[version].jar
此命令会创建一个可执行文件:'mcp-mediator-implementation-docker-[version],可直接运行。
自动生成 MCP 工具
此项目集成了 MCP Mediator,可根据现有 Docker 服务自动生成 MCP 工具。
Docker 服务类中的每个方法都可以选择使用 @McpTool 注解,明确指定工具的 名称、描述和其他元数据。
但是,无需使用注解——MCP Mediator 支持通过推断方法、类和包名称,为未添加注解的方法自动生成工具。要启用此行为,请将 createForNonAnnotatedMethods 设为 true:
DefaultMcpMediator mediator = new DefaultMcpMediator(McpMediatorConfigurationBuilder.builder()
.createDefault()
.serverName(serverName)
.serverVersion(serverVersion)
.build());
mediator.
registerHandler(McpServiceFactory.create(dockerClientService)
.
createForNonAnnotatedMethods(true)); // Enables support for non-annotated methods
完整的 MCP Mediator 配置请查看 io.github.makbn.mcp.mediator.docker.server.DockerMcpServer。
支持的 CLI 选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--docker-host | Docker 守护进程主机 URI | unix:///var/run/docker.sock |
--tls-verify | 启用 TLS 验证(与 --cert-path 配合使用) | false |
--cert-path | Docker TLS 客户端证书的路径(启用 TLS 时必填) | none |
--docker-config | 自定义 Docker 配置目录 | ~/.docker |
--server-name | MCP 服务的服务名称 | docker_mcp_server |
--server-version | 服务版本标签 | 1.0.0.0 |
--max-connections | 与 Docker 守护进程的最大连接数 | 100 |
--help | 显示用法和可用选项 | n/a |
环境变量:
| 选项 | 描述 | 默认值 |
|---|---|---|
DOCKER_MCP_LOG_LEVEL | 日志级别(TRACE、DEBUG、INFO 等) | DEBUG |
DOCKER_MCP_LOG_FILE | 日志输出文件的路径 | logs/docker_mcp_server.log |
作为 MCP 服务工具支持的 Docker 命令
| MCP 工具名称 | 描述 |
|---|---|
| docker_start_container | 按 ID 启动 Docker 容器。 |
| docker_stop_container | 按 ID 停止 Docker 容器。 |
| docker_leave_swarm | 从 Docker Swarm 中移除一个节点。 |
| docker_container_diff | 显示对容器文件系统所做的更改。 |
| docker_build_image_file | 根据 Dockerfile 或目录构建镜像。 |
| docker_inspect_volume | 获取 Docker 卷的详细信息。 |
| docker_remove_service | 按 ID 移除 Docker 服务。 |
| docker_list_containers | 列出容器,可使用筛选条件。 |
| docker_inspect_swarm | 检查 Docker Swarm 的详细信息。 |
| docker_push_image | 将镜像推送到注册表,支持身份验证。 |
| docker_copy_archive_to_container | 将 tar 归档复制到正在运行的容器中。 |
| docker_stats_container | 获取容器统计信息(CPU、内存等)。 |
| docker_disconnect_container_from_network | 断开容器与 Docker 网络的连接。 |
| docker_remove_container | 移除容器,可选择强制执行。 |
| docker_inspect_service | 检查 Docker 服务。 |
| docker_remove_secret | 按 ID 移除 Docker 密钥。 |
| docker_pull_image | 从注册表拉取镜像,支持身份验证。 |
| docker_inspect_container | 检查容器配置和状态。 |
| docker_unpause_container | 恢复已暂停的容器。 |
| docker_list_images | 列出 Docker 镜像,可使用筛选条件。 |
| docker_list_services | 列出 swarm 中的所有 Docker 服务。 |
| docker_remove_image | 移除镜像,可使用强制和清理选项。 |
| docker_create_network | 创建 Docker 网络。 |
| docker_tag_image | 为镜像添加新的仓库名和标签。 |
| docker_authenticate | 登录 Docker 注册表进行身份验证。 |
| docker_exec_command | 在容器内执行命令。 |
| docker_remove_swarm_node | 移除 swarm 节点,可选择强制执行。 |
| docker_search_images | 在 Docker Hub 中搜索镜像。 |
| docker_list_networks | 列出所有 Docker 网络。 |
| docker_remove_volume | 移除 Docker 卷。 |
| docker_create_container | 使用自定义设置创建容器。 |
| docker_remove_network | 移除 Docker 网络。 |
| docker_copy_archive_from_container | 将文件从容器复制到主机。 |
| docker_rename_container | 重命名 Docker 容器。 |
| docker_pause_container | 暂停正在运行的容器。 |
| docker_version | 获取 Docker 版本信息。 |
| docker_list_swarm_nodes | 列出 Docker swarm 中的所有节点。 |
| docker_log_container | 获取容器日志。 |
| docker_prune | 清理未使用的 Docker 资源。 |
| docker_inspect_network | 获取网络的详细信息。 |
| docker_kill_container | 向容器发送终止信号。 |
| docker_top_container | 获取容器中正在运行的进程。 |
| docker_list_volumes | 列出 Docker 卷,可使用筛选条件。 |
| docker_update_swarm_node | 更新 swarm 节点的配置。 |
| docker_info | 显示 Docker 系统范围的信息。 |
| docker_log_service | 获取 Docker 服务的日志。 |
| docker_load_image | 从 tar 归档加载镜像。 |
| docker_list_tasks | 列出 Docker Swarm 环境中的任务。 |
| docker_save_image | 将 Docker 镜像保存到本地 tar 文件。 |
| docker_join_swarm | 将节点加入现有的 Swarm 集群。 |
| docker_create_volume | 创建新的 Docker 卷。 |
| docker_initialize_swarm | 初始化新的 Docker Swarm 集群。 |
| 正在开发中,后续将添加更多内容。 |
DockerClientService 功能覆盖情况
查看 DockerClientService 类,了解可用和计划实现的工具完整列表
重要
几乎所有 MCP 工具的描述和名称都是使用 AI Agent 自动生成的!
🧩 仓库结构和 Git 子树设置
本项目是父仓库
makbn/mcp_mediator 的 Git 子树模块。它保存在独立仓库中,以支持独立的版本管理、CI 和发布流程,同时仍与主 mcp_mediator 单体仓库集成。
🔀 克隆结构
如果你是在完整的 mcp_mediator 系统环境中工作:
`git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git`
贡献
欢迎贡献!请随时提交 Pull Request。请先阅读此内容!
许可证
本项目采用 GPL3 许可证,详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。