Docker MCP Orchestrator — это интеллектуальная система управления MCP серверами, которая работает как proxy/gateway между AI-клиентом (Cursor) и множеством MCP серверов. Orchestrator предоставляет инструменты для управления серверами и проксирует все взаимодействие с запущенными серверами.
- ✅ Управление MCP серверами: Запуск, остановка, получение информации о серверах
- ✅ Proxy функциональность: Все взаимодействие с запущенными серверами идет через Orchestrator
- ✅ Управление конфигурацией: Настройка серверов, управление секретами
- ✅ Управление промптами: Автоматическое извлечение и предоставление промптов для серверов
- ✅ Кэширование: Эффективное кэширование метаданных для производительности
- ✅ 14 Tools: Полный набор инструментов для управления MCP серверами
- Docker и Docker Compose
- Docker Desktop с установленным MCP Toolkit
- MCP серверы, добавленные в Docker MCP Catalog
Проект запускается ТОЛЬКО через Docker контейнер. Управление зависимостями осуществляется через Poetry.
docker build -t docker-mcp-orchestrator .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 -dОбраз уже опубликован в 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.0Добавьте 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"
]
}
}
}-
Получи список установленных серверов:
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"])После запуска вы получите:
- Список доступных tools
- Промпты для добавления в контекст (если есть)
-
Используй tools через proxy:
call_tool(tool_name="github_create_repo", arguments={"name": "my-repo"}) -
Останови серверы после завершения:
stop_servers(servers=["github-mcp", "postgres-mcp"])
list_installed_servers- Список установленных серверовlist_catalog_servers- Список серверов в каталогеstart_servers- Запуск серверовstop_servers- Остановка серверовget_active_servers- Список активных серверов
get_server_tools- Метаданные о tools сервераget_server_info- Детальная информация о сервере
config_set- Установка конфигурацииconfig_get- Получение конфигурацииsecret_set- Установка секретаsecret_list- Список секретовsecret_remove- Удаление секрета
call_tool- Вызов tool через proxylist_active_tools- Список активных tools
Файл .cursorrules уже создан с кратким промптом (1 предложение) для экономии токенов.
Содержимое:
Все вызовы tools от запущенных MCP серверов идут ТОЛЬКО через call_tool(tool_name, arguments).
Начинай с list_installed_servers(), настраивай конфигурацию перед запуском через start_servers(),
и обязательно добавляй промпты в контекст при запуске серверов.
Перезапусти Cursor для применения правил.
Полная документация: prompts/ai_rules.md (для справки, не загружается автоматически)
- Orchestrator MCP Server - Основной сервер с 14 tools
- Docker MCP Client - Интеграция с Docker MCP Toolkit
- Connection Pool - Управление соединениями с MCP серверами
- Proxy Layer - Маршрутизация запросов к серверам
- Cache Manager - Кэширование метаданных
- Prompt Manager - Управление промптами
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: 3docker-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 конфигурация
Проект использует Poetry для управления зависимостями. Все зависимости определены в pyproject.toml.
Для обновления зависимостей:
# Внутри Docker контейнера
poetry lock
poetry installdocker build -t docker-mcp-orchestrator .Важно: Механизм подключения к запущенным MCP серверам требует уточнения. В текущей реализации connection_pool.py содержит placeholder, который нужно будет реализовать после определения того, как Docker MCP Toolkit предоставляет доступ к запущенным серверам.
Варианты реализации:
- Через Docker MCP Toolkit gateway API
- Прямое подключение к контейнерам через stdio
- Использование SSE/streaming transport
Все взаимодействие с запущенными серверами идет через Orchestrator proxy. AI должен использовать call_tool() для вызова tools, а не пытаться вызывать их напрямую.
- ARCHITECTURE_V2.md - Детальная архитектура системы
- IMPLEMENTATION_PLAN_V2.md - План реализации
- DEPLOYMENT.md - Инструкции по развертыванию
- docker_mcp_commands.md - Полный список команд Docker MCP Toolkit
- prompts/ai_rules.md - AI правила для работы с Orchestrator
- Connection Pool: Требуется реализация механизма подключения к серверам
- MCP API: Формат возвращаемых значений может потребовать уточнения в зависимости от версии MCP библиотеки
MIT License
Вклад приветствуется! Пожалуйста, создавайте issue или pull request для предложений и исправлений.
При возникновении проблем:
- Проверьте DEPLOYMENT.md для инструкций по развертыванию
- Проверьте раздел "Устранение неполадок" в README
- Создайте issue в репозитории GitHub