dev-loop-mcp
dev-loop-mcp
MCP-сервер (Model Context Protocol), который запускает цикл разработки TDD под управлением ИИ. Он обобщает конечный автомат цикла разработки для работы с любым проектом через простой файл конфигурации.
Что он делает
Доступны два типа циклов — оба используют один и тот же конвейер TDD; они различаются только тем, как создаются задачи:
flowchart LR
subgraph start_loop["start_loop (feature)"]
direction LR
A("description<br/>or tasks") --> B["DECOMPOSE<br/>AI breaks into tasks"]
B --> C[/"tasks"/]
end
subgraph start_debug_loop["start_debug_loop (bug)"]
direction LR
D("symptom<br/>+ context files") --> E["DIAGNOSE<br/>AI ranks hypotheses"]
E --> F[/"tasks"/]
end
C --> Pipeline["TDD pipeline"]
F --> Pipeline
subgraph Pipeline["Shared TDD pipeline"]
direction LR
I[INIT] --> T[TDD_LOOP<br/>per task]
T --> Bu[BUILD]
Bu --> De[DEPLOY<br/>optional]
De --> It[INTEG_TEST<br/>optional]
It -->|pass| Qr[QUALITY_REVIEW]
It -->|fail| If[INTEG_FIX<br/>up to 5×]
If --> Qr
Qr --> Ct[CLEAN_TREE<br/>CHECK]
Ct --> Pr[PUSH_AND_PR]
Pr --> Done(["✓ DONE<br/>PR opened"])
endПолный конечный автомат
flowchart TD
start_loop --> INIT
start_debug_loop -->|"DIAGNOSE:<br/>ranked hypotheses → tasks"| INIT
INIT -->|"pre-loaded tasks"| TDD_LOOP
INIT -->|"description only"| DECOMPOSE
DECOMPOSE -->|"AI → Task[]"| TDD_LOOP
TDD_LOOP -->|"task done, more remain"| TDD_LOOP
TDD_LOOP -->|"all tasks done"| BUILD
TDD_LOOP -->|"task failed"| FAILED
BUILD -->|pass| DEPLOY
BUILD -->|fail| FAILED
DEPLOY -->|"pass / skipped"| INTEG_TEST
DEPLOY -->|fail| FAILED
INTEG_TEST -->|"pass / skipped"| QUALITY_REVIEW
INTEG_TEST -->|fail| INTEG_FIX
INTEG_FIX -->|fixed| QUALITY_REVIEW
INTEG_FIX -->|"still failing<br/>(retry, max 5)"| INTEG_FIX
INTEG_FIX -->|"5 attempts exhausted"| FAILED
QUALITY_REVIEW --> CLEAN_TREE_CHECK
CLEAN_TREE_CHECK --> PUSH_AND_PR
PUSH_AND_PR --> DONE
DONE(["✓ DONE"])
FAILED(["✗ FAILED"])
style DONE fill:#22c55e,color:#fff
style FAILED fill:#ef4444,color:#fff
style start_loop fill:#6366f1,color:#fff
style start_debug_loop fill:#f59e0b,color:#fffЦикл TDD для каждой задачи
Каждая задача в TDD_LOOP проходит этот внутренний цикл (до 5 итераций кодирования):
flowchart LR
A["Write scenarios<br/>scenarios/scenarios-*.md"] --> B["Write failing tests<br/>*.test.ts"]
B --> C{"Tests<br/>fail?"}
C -->|"no — tester error"| Z["✗ task failed"]
C -->|yes| D["Implement"]
D --> E{"Tests<br/>pass?"}
E -->|yes| F["✓ commit & next task"]
E -->|"no (retry)"| DСправочник фаз:
INIT: Создает ветку git
DECOMPOSE: ИИ преобразует описание в
Task[]DIAGNOSE: (только для цикла отладки) ИИ считывает симптомы + файлы контекста и создает ранжированные гипотезы о первопричинах в виде
Task[]TDD_LOOP: Для каждой задачи: сценарии → провальные тесты → реализация (до 5 итераций кодирования на задачу)
BUILD: Запускает
buildCommandDEPLOY: Запускает
deployCommand— пропускается, если не настроеноINTEG_TEST: Запускает
integTestCommand— пропускается, если не настроеноINTEG_FIX: ИИ диагностирует и исправляет ошибки интеграционного тестирования (до 5 попыток)
QUALITY_REVIEW: ИИ проверяет полный diff ветки и применяет исправления качества
CLEAN_TREE_CHECK: Автоматически фиксирует (commit) любые незафиксированные файлы
PUSH_AND_PR: Отправляет ветку в репозиторий и открывает GitHub PR
Установка
npm install -g dev-loop-mcpИли используйте через npx:
npx dev-loop-mcpКонфигурация
Создайте dev-loop.config.json в корне вашего проекта:
{
"buildCommand": "npm run build",
"testCommand": "npm test",
"deployCommand": "npm run deploy",
"integTestCommand": "npm run test:integ",
"branchPrefix": "claude/",
"model": "claude-sonnet-4-6"
}Все поля необязательны. Значения по умолчанию:
buildCommand:"npm run build"testCommand:"npm test"deployCommand: отсутствует (фаза DEPLOY пропускается)integTestCommand: отсутствует (фаза INTEG_TEST пропускается)branchPrefix:"claude/"model:"claude-sonnet-4-6"
Переменные окружения
Переменная | Обязательно | Описание |
| Да | Ваш API-ключ Anthropic |
| Нет | Корневой каталог проекта (по умолчанию |
Настройка MCP
Добавьте в конфигурацию вашего MCP-клиента (например, claude_desktop_config.json для Claude Desktop):
{
"mcpServers": {
"dev-loop": {
"command": "dev-loop-mcp",
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"DEV_LOOP_ROOT": "/path/to/your/project"
}
}
}
}Доступные инструменты
start_debug_loop
Запуск цикла отладки на основе описания симптома. ИИ диагностирует первопричины в виде ранжированных задач TDD, затем запускает стандартный конвейер TDD для каждой гипотезы и открывает PR с полным отчетом о диагностике.
{
"symptom": "read_website returns failure on most real URLs",
"context_files": ["src/tools/read-website.ts", "src/http/client.ts"]
}Параметры:
symptom(обязательно) — описание наблюдаемой ошибки или сбоя на естественном языкеcontext_files(необязательно) — относительные пути к исходным файлам, которые ИИ должен прочитать во время диагностики
Шаг DIAGNOSE выполняется перед стандартным конвейером TDD (см. конечный автомат выше). Тело PR включает симптом, выявленные первопричины и то, что было исправлено.
Ветка называется <branchPrefix>debug/<symptom-slug>.
start_loop
Запуск нового цикла разработки.
{
"description": "Add email validation to the user registration flow",
"branch": "claude/email-validation"
}Или с предварительно декомпозированными задачами:
{
"tasks": [
{
"id": 1,
"title": "Add email validator function",
"scope": "src/utils/email.ts",
"acceptance": "validateEmail returns true for valid emails and false for invalid ones"
}
],
"branch": "claude/email-validation"
}resume_loop
Возобновление прерванного цикла:
{}loop_status
Проверка текущего статуса цикла:
{}Использование в качестве библиотеки
import { runLoop, loadConfig, RealShellAdapter, AnthropicDevWorker } from "dev-loop-mcp";
import Anthropic from "@anthropic-ai/sdk";
const config = await loadConfig("/path/to/project");
const client = new Anthropic();
const shell = new RealShellAdapter();
const aiWorker = new AnthropicDevWorker(client, config.model, shell);
const finalState = await runLoop(initialState, {
shell,
aiWorker,
stateFilePath: "/path/to/project/.loop-state.json",
repoRoot: "/path/to/project",
config,
});This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/soynog/dev-loop-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server