关于 Docker Mcp Server
Docker Mcp Server 通过 Python Docker SDK 操作 Docker 容器和镜像,面向需要容器管理工具及 Docker 信息资源的 MCP 客户端,支持 stdio 或 SSE 传输。
主要功能
- 01列出容器和镜像
- 02运行、停止和移除容器
- 03查看日志并检查容器
- 04拉取 Docker 镜像
- 05提供 Docker 信息资源
- 06支持 SSE 令牌认证
适用场景
- 01查看运行中的容器和镜像清单
- 02通过 MCP 客户端启动或停止容器
- 03检查容器详情和日志
- 04使用令牌限制 SSE 连接
MCP 相关
将 Docker 操作作为 MCP 工具提供,并将 Docker 数据作为资源提供。客户端可通过 stdio 或 SSE 连接;SSE 可配置令牌认证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Docker MCP 服务
这是一个 Model Context Protocol (MCP) 服务,提供用于与 Docker 容器和镜像交互的工具和资源。它使用流式 HTTP 传输方式进行通信,并使用 Python Docker SDK (docker-py) 执行 Docker 操作。
功能
- 列出 Docker 容器和镜像
- 运行、停止和移除容器
- 查看容器日志
- 拉取 Docker 镜像
- 检查容器详情
- 以资源的形式访问 Docker 信息
前置条件
- Docker
- Docker Compose(可选,用于简化部署)
- uv(用于本地开发)
入门
使用 Docker Compose 运行
- 克隆此仓库
- 构建并启动服务:
docker-compose up -d
直接使用 Docker 运行
- 构建 Docker 镜像:
docker build -t mcp-docker-server .
- 运行容器:
# 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 端点,且不进行身份验证。
本地运行(开发)
- 安装 uv(如果尚未安装):
curl -sSf https://astral.sh/uv/install.sh | sh
- 使用 uv 安装依赖项:
uv sync
- 运行服务:
# 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},而不是/sseMCP_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
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。