MCP-Orchestrator
Manages AI agent workflows through a state machine and Git branches, enforcing isolated phases and audit trails via SPEC, PLAN, and AGENTS files.
README
MCP-Orchestrator
State Machine & Git Workflow Engine для AI-агентов
MCP-Orchestrator — это MCP-сервер, который превращает хаотичную работу AI-агентов в управляемый, изолированный и аудитируемый процесс. В основе лежит принцип SPEC → PLAN → AGENTS: агенты работают не напрямую с кодом, а через три управляющих файла, а сервер контролирует состояния, ветки Git и целостность проекта.
Концепция
┌─────────────────────────────────────────────────────┐
│ MCP-Orchestrator │
│ │
│ SPEC.md ──► PLAN.md ──► AGENTS.md │
│ ↑ ↑ ↑ │
│ Что? Как? Что сделано? │
│ │
│ ┌──────────────┬──────────────┬────────────────┐ │
│ │ State Machine │ Git Engine │ File Parser │ │
│ └──────────────┴──────────────┴────────────────┘ │
│ │
│ Tools: get_project_state │ start_phase │ commit │
│ complete_phase │ fail_phase │
└─────────────────────────────────────────────────────┘
AI-агент никогда не пишет код напрямую в main. Он:
- Запрашивает состояние проекта (
get_project_state) - Запускает фазу (
start_phase) — сервер создаёт изолированную Git-веткуfeature/phase_id - Пишет код внутри этой ветки
- Фиксирует прогресс (
commit_phase) - Завершает фазу (
complete_phase) — сервер вливает ветку вmain, обновляетPLAN.mdи пишет лог вAGENTS.md
Три управляющих файла
| Файл | Роль |
|---|---|
SPEC.md |
Спецификация проекта. Что нужно построить? Какие правила и ограничения? |
PLAN.md |
План работ. Разбивка на фазы, зависимости, статусы (pending → in_progress → completed / failed), режим выполнения (parallel: true/false) |
AGENTS.md |
Чёрный ящик. Аудит-лог всех завершённых фаз: кто, что и когда сделал, какие были проблемы |
Каждый файл содержит YAML Front Matter, который сервер парсит, валидирует и обновляет.
Архитектура
State Machine (src/state_machine.py)
In-memory конечный автомат для отслеживания жизненного цикла фаз.
- Статусы:
pending → in_progress → completed / failed - Защита от AI Looping: блокировка после 3 неудачных попыток перезапуска фазы
- Бэкапы: in-memory снимки
SPEC.md,PLAN.md,AGENTS.mdперед каждым инструментом - Автовосстановление: при повреждении
PLAN.mdфайл откатывается из бэкапа
File Parser (src/file_parser.py)
Парсер YAML Front Matter с двусторонней сериализацией.
- Читает
PLAN.mdв структурированныеPlanFileData/PhaseData - Записывает обновления без потери текстового описания шагов
- Валидирует: обязательные поля (
id,name), допустимые статусы, уникальность ID, корректность зависимостей
Git Engine (src/git_operations.py)
Управление ветками и изоляцией через системный Git.
start_phase→ проверка чистоты репозитория, созданиеfeature/phase_idcommit_phase→git add . && git commit -m "<message>"complete_phase→git merge --no-ffвmain, удаление feature-веткиfail_phase→git reset --hardк точке расхождения, удаление ветки- Конфликт-анализ: при параллельных фазах проверяет
git diff --name-onlyи блокирует запуск при пересечении файловых скоупов
MCP Server (src/server.py)
Интеграция всего в 5 MCP-инструментов (см. ниже).
MCP-инструменты
| Инструмент | Параметры | Действие |
|---|---|---|
get_project_state |
— | Возвращает матрицу фаз, доступные для запуска, подсказку о параллельных фазах |
start_phase |
phase_id |
Переводит фазу в in_progress, создаёт ветку feature/phase_id |
commit_phase |
phase_id, commit_message |
git add . + git commit |
complete_phase |
phase_id, summary, executor_name?, problems? |
Переводит в completed, merge в main, пишет лог в AGENTS.md |
fail_phase |
phase_id, error_log |
Переводит в failed, hard reset, удаляет ветку |
Установка
git clone <repo-url>
cd orchestrator-mcp
pip install -e ".[dev]"
Зависимости:
- Python ≥ 3.10
- System Git (доступный через
gitв PATH)
Запуск
python -m src.server
Сервер запускается в режиме stdio (стандартный протокол MCP). Подключайтесь через любой MCP-клиент (например, mcp-cli или AI-ассистент с поддержкой MCP).
Workflow разработки
1. get_project_state()
└─► Сервер отвечает: доступна фаза "phase_2a"
2. start_phase("phase_2a")
└─► Сервер создаёт ветку feature/phase_2a
└─► Статус PLAN.md: phase_2a → in_progress
3. [Агент пишет код...]
4. commit_phase("phase_2a", "Added foo module")
└─► git add . && git commit
5. [Агент продолжает или завершает...]
6. complete_phase("phase_2a", "Done", executor_name="...", problems="...")
└─► Статус PLAN.md: phase_2a → completed
└─► merge feature/phase_2a → main
└─► Запись в AGENTS.md: дата, исполнитель, summary, хэш коммита, проблемы
7. get_project_state()
└─► Сервер отвечает: доступны следующие фазы...
Параллельные фазы
Если в PLAN.md две фазы помечены parallel: true и не пересекаются по file_scope, сервер сообщит о возможности параллельного выполнения. При попытке запустить фазу, чей file_scope пересекается с уже изменёнными файлами в параллельной ветке, сервер заблокирует запуск с сообщением:
Конфликт файлов. Выполняй фазы строго последовательно
Тестирование
pytest tests/ -v
Проект покрыт unit-тестами (test_state_machine.py, test_git_operations.py, test_file_parser.py) и интеграционными тестами (test_server_integration.py), которые создают временный Git-репозиторий для каждого теста.
Лицензия
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.