Skip to main content
Glama

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: Запускает buildCommand

  • DEPLOY: Запускает 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"

Переменные окружения

Переменная

Обязательно

Описание

ANTHROPIC_API_KEY

Да

Ваш API-ключ Anthropic

DEV_LOOP_ROOT

Нет

Корневой каталог проекта (по умолчанию cwd)

Настройка 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,
});
-
security - not tested
F
license - not found
-
quality - not tested

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