Docker MCP 服务器

Docker MCP Server 是一个基于 MCP Mediator 框架的 Docker 命令协议服务器,支持通过 HTTP、WebSocket 和 SSE 端点访问 Docker 命令,适用于容器管理和自动化任务。

  • by masx200
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 masx200/docker_mcp_server

使用说明

Docker MCP服务器

码头工人

docker pull docker.cnb.cool/masx200/docker_mirror/docker_mcp_server:latest

使用Docker构建和运行

构建Docker镜像

要在本地构建Docker镜像:

docker build -t docker-mcp-server .

运行Docker容器

构建映像后,您可以运行它:

# Basic run
docker run -d -p 3000:3000 --name docker-mcp-server docker-mcp-server

# With Docker socket mounted (for Docker operations)
docker run -d -p 3000:3000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --name docker-mcp-server docker-mcp-server

# With custom configuration
docker run -d -p 8080:3000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e DOCKER_HOST=unix:///var/run/docker.sock \
  --name docker-mcp-server docker-mcp-server

访问MCP服务器

容器运行后,Docker MCP服务器将通过HTTP网桥可用:

  • HTTP端点: http://localhost:3000/mcp/docker
  • WebSocket端点: http://localhost:3000/ws/docker
  • SSE端点: http://localhost:3000/sse/docker

MCP配置示例

以下是如何使用Claude Desktop配置Docker MCP服务器:

{
  "mcpServers": {
    "docker": {
      "url": "http://localhost:3000/mcp/docker",
      "transport": "streamable-http"
    }
  }
}

或者使用WebSocket:

{
  "mcpServers": {
    "docker": {
      "url": "ws://localhost:3000/ws/docker",
      "transport": "ws"
    }
  }
}

使用Docker Compose

为了更容易部署,您可以使用提供的 docker-compose.yml 文件:

# Start the service
docker-compose up -d

# Stop the service
docker-compose down

# View logs
docker-compose logs -f

此模块提供了一个 模型上下文协议 用于Docker命令的MCP服务器,由 mcp_mediator 核心框架。 Docker MCP服务器利用 自动服务器生成 MCP中介暴露现有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

使用Claude Desktop运行Docker MCP服务器 java -jar:

{
  "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

此命令在下面创建一个jar文件 target 文件夹 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 自动生成MCP工具 从现有的Docker服务中。

Docker服务类中的每个方法都可以选择性地注释为 @McpTool 明确定义工具的* 名字*, 描述以及其他元数据。

然而,注释是 不需要--MCP中介支持自动生成 无注释方法 通过 从方法、类和包名称推断详细信息。要启用此行为,请设置 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

检查 io.github.makbn.mcp.mediator.docker.server.DockerMcpServer 对于完整的Mcp中介器配置。

支持的CLI选项

选项 描述 默认值
--docker-host Docker守护进程主机URI unix:///var/run/docker.sock
--tls-verify 启用TLS验证(与 --cert-path) false
--cert-path Docker TLS客户端证书的路径(如果启用了TLS,则需要) 无
--docker-config 自定义Docker配置目录 ~/.docker
--server-name MCP服务器的服务器名称 docker_mcp_server
--server-version 服务器版本标签 1.0.0.0
--max-connections Docker守护进程的最大连接数 100
--help 显示用法和可用选项 没有

环境变量:

选项 描述 默认值
DOCKER_MCP_LOG_LEVEL 日志记录级别(TRACE, DEBUG, INFO等等) DEBUG
DOCKER_MCP_LOG_FILE 日志输出文件的路径 logs/docker_mcp_server.log

支持的Docker命令作为MCP服务器工具

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_deisconnect_container_from_network 断开容器与docker网络的连接
docker_remove_contain 使用可选的力移除容器。
docker_inspect_service 检查docker服务。
docker_remove_secret 按ID删除docker密钥
docker_pull_image 从注册表中提取图像,支持身份验证。
docker_inspect_container 检查容器配置和状态。
docker_unpuse_container 取消暂停容器的暂停。
docker_list_images 列出带有可选过滤器的docker镜像。
docker_list_services 列出集群中的所有docker服务。
docker_remove_image 使用强制和修剪选项删除图像。
docker_create_network 创建一个docker网络
docker_tag_image 用新的仓库和标签标记图像。
docker_authenticate 向docker注册表进行身份验证。
docker_exec_command 在容器内执行命令。
docker_remove_swam_node 删除群节点,可以选择强制删除。
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集群中的所有节点。
docker_log_contain 从容器中检索日志。
docker_preeme 修剪未使用的docker资源。
docker_inspect_network 获取有关网络的详细信息
docker_kill_container 向容器发送终止信号。
docker_top_container 获取容器中正在运行的进程。
docker_list_volumes 列出带有可选过滤器的docker卷。
docker_update_swarm_node 更新群集节点的配置。
docker_info 显示docker系统范围的信息。
docker_log_service 从docker服务获取日志。
docker_load_image 从tar存档中加载图像。
docker_list_tasks 列出docker Swarm环境中的任务。
docker_save_image 将docker映像保存到本地tar文件。
dockerjoin_swarm 将节点加入现有的swarm集群。
docker_create_volume 创建一个新的docker卷。
docker_initialize_swarm 初始化一个新的docker swarm集群。

工作正在进行中,还有更多内容需要添加。

DockerClientService功能覆盖率

检查 DockerClientService 类,以获取可用和计划工具的完整列表(待实施)

[!重要]
几乎所有MCP工具的描述和名称都是使用AI代理自动生成的!

🧩 仓库结构和Git子树设置

这个项目是 Git子树模块 父存储库的 makbn/mcp_mediator。它保存在自己的存储库中,以支持独立 版本控制、CI和发布流程,同时保持与主流程的集成 mcp_mediator 单声道回购。

🔀 克隆结构

如果你在完整的背景下工作 mcp_mediator 系统:

`git clone --recurse-submodules https://github.com/makbn/docker_mcp_server.git`

贡献

欢迎投稿!请随时提交拉取请求。请先阅读此内容!

许可证

此项目根据GPL3许可证获得许可——有关详细信息,请参阅License文件。