项目概述
Docker-MCP 是一个 支持mcp的Docker 管理服务器,它允许 客户端 通过 MCP(Model Control Protocol)接口直接与 Docker 进行交互。该项目提供了一套工具,使 AI 助手能够创建容器、部署 Docker Compose 、获取容器日志以及列出所有容器。
项目结构
.
├── .gitignore
├── .python-version
├── LICENSE
├── README.md
├── pyproject.toml
├── src/
│ └── docker_mcp/
│ ├── __init__.py
│ ├── docker_executor.py
│ ├── handlers.py
│ └── server.py
└── uv.lock
流程图
核心文件功能解析
1. pyproject.toml
这是项目的配置文件,定义了项目的元数据和依赖项:
- 项目名称:docker-mcp
- 版本:0.1.0
- 描述:A docker MCP server
- Python 版本要求:>=3.12
- 主要依赖:
- httpx
- mcp
- python-dotenv
- python-on-whales
- pyyaml
- 入口点:docker_mcp:main
2. src/docker_mcp/init.py
这是包的初始化文件,定义了包的入口点:
from . import server
import asynciodef main():"""Main entry point for the package."""asyncio.run(server.main())# 在包级别暴露重要项
__all__ = ['main', 'server']
这个文件导入了 server 模块并定义了 main 函数作为包的主入口点,它会运行 server.main() 函数。
3. src/docker_mcp/server.py
这是项目的核心服务器文件,负责设置和运行 MCP 服务器:
- 创建 MCP 服务器实例
- 定义可用的提示(prompts)
- 定义可用的工具(tools)
- 处理工具调用
- 设置信号处理(用于优雅关闭)
- 运行服务器的主函数
服务器提供了四个主要工具:
- create-container:创建独立的 Docker 容器
- deploy-compose:部署 Docker Compose 堆栈
- get-logs:获取特定容器的日志
- list-containers:列出所有 Docker 容器
4. src/docker_mcp/handlers.py
这个文件包含处理各种 Docker 操作的类和函数:
- DockerHandlers 类:实现了服务器提供的所有工具功能
- handle_create_container:创建和运行 Docker 容器
- handle_deploy_compose:部署 Docker Compose 堆栈
- handle_get_logs:获取容器日志
- handle_list_containers:列出所有容器
- 辅助函数:
- parse_port_mapping:解析端口映射配置
- _process_yaml:处理 YAML 配置
- _save_compose_file:保存 Docker Compose 文件
- _deploy_stack:部署 Docker Compose 堆栈
- _cleanup_files:清理临时文件
5. src/docker_mcp/docker_executor.py
这个文件提供了与 Docker 命令行交互的执行器类:
- CommandExecutor 协议:定义命令执行接口
- WindowsExecutor 和 UnixExecutor 类:针对不同操作系统的命令执行实现
- DockerExecutorBase 抽象类:Docker 执行器的基类
- DockerComposeExecutor 类:专门用于执行 Docker Compose 命令
- 提供 down、pull、up、ps 等方法
- 根据操作系统构建适当的命令
使用示例
1、启动docker
2、在trae
中安装与配置mcp
marketspace安装
配置mcp
3、测试
列出当前有多少个镜像
查看正在运行的docker
总结
Docker-MCP 是一个精心设计的项目,它通过 MCP 协议将 Docker 功能暴露给 Claude AI,使 AI 能够直接管理 Docker 容器和 Compose 堆栈。该项目采用了现代 Python 异步编程技术,并具有良好的模块化设计,为 AI 与容器化应用的交互提供了一个强大的接口。
github链接:docker-mcp