mcpField
D
Docker Mcp Server

Docker Mcp Server

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

关于 Docker Mcp Server

Docker Mcp Server 通过 Python Docker SDK 操作 Docker 容器和镜像,面向需要容器管理工具及 Docker 信息资源的 MCP 客户端,支持 stdio 或 SSE 传输。

主要功能

  1. 01列出容器和镜像
  2. 02运行、停止和移除容器
  3. 03查看日志并检查容器
  4. 04拉取 Docker 镜像
  5. 05提供 Docker 信息资源
  6. 06支持 SSE 令牌认证

适用场景

  1. 01查看运行中的容器和镜像清单
  2. 02通过 MCP 客户端启动或停止容器
  3. 03检查容器详情和日志
  4. 04使用令牌限制 SSE 连接

MCP 相关

将 Docker 操作作为 MCP 工具提供,并将 Docker 数据作为资源提供。客户端可通过 stdio 或 SSE 连接;SSE 可配置令牌认证。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"docker-mcp-xiispace": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp-docker-server"
]
}
}
}
启动命令docker run -i --rm mcp-docker-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocimcp-docker-server

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Docker MCP 服务

这是一个 Model Context Protocol (MCP) 服务,提供用于与 Docker 容器和镜像交互的工具和资源。它使用流式 HTTP 传输方式进行通信,并使用 Python Docker SDK (docker-py) 执行 Docker 操作。

功能

  • 列出 Docker 容器和镜像
  • 运行、停止和移除容器
  • 查看容器日志
  • 拉取 Docker 镜像
  • 检查容器详情
  • 以资源的形式访问 Docker 信息

前置条件

  • Docker
  • Docker Compose(可选,用于简化部署)
  • uv(用于本地开发)

入门

使用 Docker Compose 运行
  1. 克隆此仓库
  2. 构建并启动服务:
docker-compose up -d
直接使用 Docker 运行
  1. 构建 Docker 镜像:
docker build -t mcp-docker-server .
  1. 运行容器:
# Run server with SSE transport (no authentication)
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -e MCP_PORT=3000 --name mcp-docker-server mcp-docker-server

# Run server with SSE transport and token authentication
docker run -d -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -e MCP_PORT=3000 -e MCP_AUTH_TOKEN=your_secret_token --name mcp-docker-server mcp-docker-server

设置 MCP_PORT 环境变量后,服务将使用 SSE 传输,而不是 stdio。身份验证仅适用于 SSE 传输。如果设置了 MCP_AUTH_TOKEN 环境变量,服务将启用令牌身份验证,并将 SSE 端点配置为使用 /sse/{token} 格式,其中 {token} 必须与 MCP_AUTH_TOKEN 中设置的值一致。如果令牌不匹配或未提供,连接将被拒绝。如果未设置令牌,服务将使用标准的 /sse 端点,且不进行身份验证。

本地运行(开发)
  1. 安装 uv(如果尚未安装):
curl -sSf https://astral.sh/uv/install.sh | sh
  1. 使用 uv 安装依赖项:
uv sync
  1. 运行服务:
# Run with stdio transport (default)
uv run server.py

# Run with SSE transport on port 8000
MCP_PORT=8000 uv run server.py

# Run with SSE transport and token authentication
MCP_PORT=8000 MCP_AUTH_TOKEN=your_secret_token uv run server.py

配置

可使用环境变量配置服务:

  • MCP_PORT:设置后启用 SSE 传输模式,并指定监听端口(默认值:8000)。如果未设置,服务将使用 stdio 传输。
  • MCP_AUTH_TOKEN:用于身份验证的密钥令牌(仅适用于 SSE 传输)。设置后,SSE 端点将使用 /sse/{token},而不是 /sse
  • MCP_HOSTNAME:Docker 容器使用的主机名(默认值:localhost)。可以是域名或 IP 地址,用于在 Docker 容器创建后访问这些容器。
  • MCP_AVAILABLE_PORTS:Docker 容器可绑定的端口或端口范围的逗号分隔列表(例如:8000,8080-8090,9000)。指定后,服务将验证请求的主机端口是否在此列表中。

与 MCP 客户端搭配使用

应先构建 Docker 镜像。

{
  "mcpServers": {
    "docker": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/var/run/docker.sock:/var/run/docker.sock",
        "mcp-docker-server"
      ]
    }
  }
}

可用工具

  • docker_ps:列出正在运行的容器
  • docker_images:列出可用的 Docker 镜像
  • docker_inspect:获取容器的详细信息
  • docker_run:运行 Docker 容器
  • docker_stop:停止正在运行的容器
  • docker_rm:移除容器
  • docker_logs:获取容器日志
  • docker_pull:拉取 Docker 镜像

可用资源

  • docker://containers:所有容器的信息
  • docker://images:所有镜像的信息
  • docker://container/{container_id}:特定容器的详细信息
  • docker://config/hostname:获取 Docker 容器配置的主机名
  • docker://config/available_ports:获取 Docker 容器可用端口列表

待办事项

  • 添加查询特定 Docker 镜像文档的功能

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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