容器管理工具

Docker MCP 管理工具是一个基于 Docker Engine API 的容器管理服务,提供容器和镜像的列表、启动、停止和检查功能,适用于本地和远程 Docker 环境管理。

  • by fly32101
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 fly32101/mcp-docker-manage

使用说明

Docker MCP 管理工具

使用 Go、DDD 分层与 mark3labs/mcp-go 构建的 MCP 服务,通过 Docker Engine API 管理容器与镜像,可直接打包成 Docker 镜像发布。

分层设计

  • internal/domain:实体与仓储接口(容器、镜像、端口映射)
  • internal/application:用例服务
  • internal/infrastructure/docker:基于 Docker SDK 的仓储实现
  • internal/interfaces/mcp:基于 mcp-go 注册工具(list/start/stop/inspect 等)
  • cmd/server:入口,启动 SSE 传输的 MCP 服务

MCP 工具

  • list_containers:列出容器(状态、端口、创建时间)
  • inspect_container:id 必填,返回容器详情
  • start_container:id 必填,启动容器
  • stop_container:id 必填,停止容器
  • list_images:列出镜像(标签、大小、创建时间)

本地运行

export MCP_ADDR=":8080"
export MCP_BASE_PATH="/mcp"   # SSE 默认挂载路径
go run ./cmd/server

连接信息(默认):

  • SSE 端点:http://localhost:8080/mcp/sse
  • Message 端点:http://localhost:8080/mcp/message

Docker 打包与运行

# 构建镜像
docker build -t mcp-docker-manager .

# 运行(挂载 Docker Socket 以管理宿主 Docker)
docker run -d \
  -p 8080:8080 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -e MCP_ADDR=":8080" \
  -e MCP_BASE_PATH="/mcp" \
  --name mcp-docker-manager \
  mcp-docker-manager

# 直接推送到仓库(示例)
# Docker Hub(先 docker login)
docker tag mcp-docker-manager your-dockerhub-username/mcp-docker-manager:latest
docker push your-dockerhub-username/mcp-docker-manager:latest

配置

  • MCP_ADDR:监听地址,默认 :8080
  • MCP_PORT:仅端口号,优先于 MCP_ADDR(自动补冒号)
  • MCP_BASE_PATH:SSE/message 路径前缀,默认 /mcp
  • MCP_BASE_URL:可选,用于反向代理场景返回完整回调 URL
  • MCP_SERVER_NAME / MCP_SERVER_VERSION:对外曝光的服务器信息
  • Docker SDK 环境变量(可选):DOCKER_HOST、DOCKER_API_VERSION 等

提示:如果在容器内设置 MCP_ADDR=8080,会自动补成 :8080;也可以直接设置 MCP_PORT=8080。

连接远程 Docker:

  • 设置 DOCKER_HOST=tcp://<remote>:2376(或 2375),可连远程守护进程。
  • 如启用 TLS,配置 DOCKER_TLS_VERIFY=1 以及 DOCKER_CERT_PATH 指向证书目录。
  • 其他变量(按 Docker SDK 约定):DOCKER_API_VERSION、DOCKER_TLS 等。

容器内连接宿主机 Docker(典型做法):

  • 直接挂载宿主机的 Unix Socket:-v /var/run/docker.sock:/var/run/docker.sock
  • Windows/macOS Docker Desktop:挂载 //./pipe/docker_engine 或使用 DOCKER_HOST=tcp://host.docker.internal:2375(如开启了 2375 端口,注意安全)。
  • 如果使用 TCP 远程守护进程(带证书):设置 DOCKER_HOST、DOCKER_TLS_VERIFY=1、DOCKER_CERT_PATH=/path/to/certs 并挂载证书目录。

开发与测试

go test ./...