mcpField
D
Docker MCP Server

Docker MCP Server

本地服务
github.com/makbn云与基础设施177 周前更新

关于 Docker MCP Server

Docker MCP Server 将 Docker 和 Docker Swarm 操作作为工具提供给 MCP 客户端。它基于 MCP Mediator,可从 Docker 服务方法生成工具,并支持配置 Docker 守护进程和 TLS。

主要功能

  1. 01管理容器、镜像和卷
  2. 02检查网络、服务和 Swarm
  3. 03执行命令并获取日志
  4. 04配置 Docker 主机和 TLS
  5. 05从服务方法生成 MCP 工具

适用场景

  1. 01检查容器状态和资源用量
  2. 02管理 Docker Swarm 节点与服务
  3. 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 注解,并附上简短说明,以提高工具的可发现性和易用性。

👉 请点击此处查看支持的命令完整列表。

Docker MCP Server

重要


这是 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-hostDocker 守护进程主机 URIunix:///var/run/docker.sock
--tls-verify启用 TLS 验证(与 --cert-path 配合使用)false
--cert-pathDocker TLS 客户端证书的路径(启用 TLS 时必填)none
--docker-config自定义 Docker 配置目录~/.docker
--server-nameMCP 服务的服务名称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 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。