Docker MCP编排器
🎯 描述
Docker MCP Orchestrator是一个智能MCP服务器管理系统,在AI客户端(Cursor)和许多MCP服务器之间充当代理/网关。Orchestrator提供管理服务器的工具,并代理与正在运行的服务器的所有通信。
关键能力
- ✅ 管理MCP服务器:启动、停止、检索服务器信息
- ✅ 代理功能:与运行的服务器的所有通信都通过Orchestrator进行
- ✅ 配置管理:服务器配置,秘密管理
- ✅ 工业控制:自动提取和提供服务器插件
- ✅ 缓存:高效的元数据缓存以提高性能
- ✅ 14工具:管理MCP服务器的全套工具
______________________________________________________________________
📋 要求
- DockerиDocker作曲
- 安装了MCP工具包的Docker Desktop
- 添加到Docker MCP目录的MCP服务器
______________________________________________________________________
🚀 安装和启动
项目启动 通过Docker容器依赖关系是通过Poetry管理的。
1.构建Docker映像
docker build -t docker-mcp-orchestrator .2.启动集装箱
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/config:/app/config:ro \
docker-mcp-orchestrator使用Docker Compose:
docker-compose up -d3.将图像发布到Docker Registry
图片来源:Docker Hub: semenovsd/docker-mcp-orchestrator
可用标签:
semenovsd/docker-mcp-orchestrator:latest-最新版本semenovsd/docker-mcp-orchestrator:0.1.0版本0.1.0
使用已发布的图像:
# Скачать и запустить образ из Docker Hub
docker run -it --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/config:/app/config:ro \
semenovsd/docker-mcp-orchestrator:latest要发布新版本:
# Сборка образа
docker build -t docker-mcp-orchestrator:latest .
# Тегирование для публикации
docker tag docker-mcp-orchestrator:latest semenovsd/docker-mcp-orchestrator:latest
docker tag docker-mcp-orchestrator:latest semenovsd/docker-mcp-orchestrator:0.1.0
# Публикация в Docker Hub
docker push semenovsd/docker-mcp-orchestrator:latest
docker push semenovsd/docker-mcp-orchestrator:0.1.04.添加到Cursor
将Orchestrator添加到Cursor MCP服务器配置中(.cursor/mcp.json):
{
"mcpServers": {
"docker-mcp-orchestrator": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/var/run/docker.sock:/var/run/docker.sock",
"-v", "/path/to/docker-mcp-orchestrator/config:/app/config:ro",
"docker-mcp-orchestrator"
]
}
}
}或者使用Docker Hub中发布的图像:
{
"mcpServers": {
"docker-mcp-orchestrator": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v", "/var/run/docker.sock:/var/run/docker.sock",
"-v", "/path/to/docker-mcp-orchestrator/config:/app/config:ro",
"semenovsd/docker-mcp-orchestrator:latest"
]
}
}
}使用Docker Compose:
{
"mcpServers": {
"docker-mcp-orchestrator": {
"command": "docker-compose",
"args": [
"-f", "/path/to/docker-mcp-orchestrator/docker-compose.yml",
"exec",
"-T",
"orchestrator",
"python",
"-m",
"orchestrator"
]
}
}
}______________________________________________________________________
📚 使用
Workflow与Orchestrator合作
- 获取已安装服务器的列表:
list_installed_servers()- 探索服务器的功能:
get_server_tools(server="github-mcp")
get_server_info(server="github-mcp")- 配置 (如有必要):
secret_set(key="GITHUB_TOKEN", value="your-token")
config_set(server="postgres-mcp", config={"DATABASE_URL": "postgres://..."})- 运行所需的服务器:
start_servers(servers=["github-mcp", "postgres-mcp"])启动后,您将收到:
- 列出可用的工具 - 要添加到上下文中的插件(如果有)
- 通过代理使用工具:
call_tool(tool_name="github_create_repo", arguments={"name": "my-repo"})- 完成后停止服务器:
stop_servers(servers=["github-mcp", "postgres-mcp"])可用的工具
服务器管理(5 tools)
list_installed_servers-已安装服务器列表list_catalog_servers-目录中的服务器列表start_servers-启动服务器stop_servers-停止服务器get_active_servers-活动服务器列表
服务器信息(2 tools)
get_server_tools-服务器工具元数据get_server_info-服务器详细信息
配置管理(5 tools)
config_set-配置设置config_get-获取配置secret_set-设置秘密secret_list秘密清单secret_remove-去除秘密
代理(2个工具)
call_tool-通过代理调用工具list_active_tools-活动工具列表
______________________________________________________________________
🤖 AI提示规则
文件 .cursorrules 已创建 用一个简短的启动(1个句子)来节省代币。
内容:
Все вызовы tools от запущенных MCP серверов идут ТОЛЬКО через call_tool(tool_name, arguments).
Начинай с list_installed_servers(), настраивай конфигурацию перед запуском через start_servers(),
и обязательно добавляй промпты в контекст при запуске серверов.重新启动cursor 为了执行规则。
完整文档: prompts/ai_rules.md (仅供参考,不会自动下载)
______________________________________________________________________
🏗️ 建筑
组件
- 编排器MCP服务器 -带有14个工具的主服务器
- Docker MCP客户端 与Docker MCP Toolkit集成
- 连接池 管理与MCP服务器的连接
- 代理层 -路由请求到服务器
- 缓存管理器 -缓存元数据
- 快速经理 -工业品管理
相互作用电路
Cursor → Orchestrator MCP Server (14 tools)
│
├─► Docker MCP Toolkit CLI
│
└─► Proxy Layer
├─► Connection Pool
│ ├─► github-mcp
│ ├─► postgres-mcp
│ └─► ...
│
└─► Tool Router______________________________________________________________________
📝 配置
配置在 config/config.yaml:
orchestrator:
cache:
servers_ttl: 300 # 5 минут
tools_ttl: 600 # 10 минут
docker_mcp:
catalog: "docker-mcp"
command_timeout: 30
proxy:
connection_pool_size: 10
connection_timeout: 30
reconnect_attempts: 3______________________________________________________________________
🔧 开发
项目结构
docker-mcp-orchestrator/
├── src/
│ └── orchestrator/
│ ├── __init__.py
│ ├── __main__.py # Точка входа
│ ├── server.py # Основной MCP сервер
│ ├── docker_client.py # Docker MCP Toolkit клиент
│ ├── cache.py # Кэширование
│ ├── connection_pool.py # Пул соединений
│ ├── proxy.py # Proxy layer
│ ├── prompt_manager.py # Управление промптами
│ ├── models.py # Модели данных
│ ├── exceptions.py # Исключения
│ ├── utils.py # Утилиты
│ └── tools/ # Все tools
├── config/
│ └── config.yaml # Конфигурация
├── prompts/
│ └── ai_rules.md # AI правила
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
├── .dockerignore # Исключения для Docker
├── .gitignore # Исключения для Git
├── README.md
└── pyproject.toml # Poetry конфигурация依赖关系管理
项目使用 诗歌 来管理依赖关系。所有依赖关系定义为 pyproject.toml.
更新依赖关系:
# Внутри Docker контейнера
poetry lock
poetry install图像构建
docker build -t docker-mcp-orchestrator .______________________________________________________________________
⚠️ 重要评论
连接池
重要:连接到运行的MCP服务器的机制需要改进。正在实施 connection_pool.py 包含确定Docker MCP Toolkit如何提供对已运行服务器的访问后需要实现的placeholder。
实施选项:
- 完成Docker MCP工具包网关API
- 通过STDIO直接连接到容器
- 使用SSE/Streaming Transport
代理功能
与运行的服务器的所有通信都通过Orchestrator代理进行。AI应该使用 call_tool() 调用工具,而不是试图直接调用它们。
______________________________________________________________________
📚 文件
- ARCHITECTURE_V2.md -详细的系统架构
- 实施_PLAN_V2.md -实施计划
- 部署.md -部署指示
- Docker MCP Toolkit命令列表
- promises/ai_rules.md -与Orchestrator合作的AI规则
______________________________________________________________________
🐛 已知问题
- 连接池:需要实现服务器连接机制
- MCP API:返回值的格式可能需要根据库的MCP版本进行调整
______________________________________________________________________
📄 许可证
MIT许可证
______________________________________________________________________
🤝 贡献
欢迎贡献!请创建问题或推送请求以获取建议和更正。
______________________________________________________________________
📞 支持
如果出现问题:
- 检查 部署.md 部署说明
- 检查自述中的疑难解答部分
- 在GitHub存储库中创建一个问题
