項目概述
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