ccc-mcp
Provides a fixed set of git operations (such as status checks and commits) that can be run directly, with commit messages passed via stdin, without invoking Claude Code or requiring a plan.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
ccc-mcp — Command Claude Code
Локальный MCP-сервер, через который внешний агент Claude ставит задачи вашей установке Claude Code и получает структурированный отчёт — без копирования текста между окнами.
Сервер универсальный: «текст задачи → Claude Code → структурированный отчёт». Никакой логики Архитектора/Вайбкодера и разбора паспорта проекта в нём нет.
⚠️ Прежде чем подключать
Это не песочница. Мост запускает на вашей машине настоящий claude, который правит файлы,
исполняет команды и коммитит — от вашего имени и с вашими правами.
Пооперационные разрешения по умолчанию выключены (
hooksEnabled: false): внутри уже одобренного плана мост не перехватываетBashдочернего процесса.write_project_fileиrun_gitменяют состояние вне цикла план→одобрение — это осознанное решение, разобранное в docs/security.md.Единственная жёсткая граница —
allowedRoots. Не указывайте там домашний каталог целиком: перечисляйте конкретные проекты.
Модель угроз и куда сообщать об уязвимости — SECURITY.md.
Related MCP server: worker-mcp
Что это даёт
Правка кода идёт через обязательный цикл «план → одобрение → выполнение»: дочерний Claude Code
сначала показывает, что собирается сделать, и только явно одобренный план разрешено выполнять.
Всё, что интеллекта не требует — прочитать файл, положить его обратно, посмотреть git status,
закоммитить, — доступно напрямую, без запуска дочерней модели.
Человеку — пошаговая установка, подключение и разбор проблем: SETUP.md.
Вызывающему ИИ-агенту — императивный протокол одним файлом: AGENT-PROTOCOL.md.
Подробности по темам — в docs/, карта ниже в разделе «Документация».
Инструменты
Инструмент | Назначение |
| Планирование ( |
| Явное согласие на выполнение плана. Переводит сессию в |
| Выполнение одобренного плана. Возвращает итоговый отчёт. |
| Состояние и результат задачи, запущенной в фоне. |
| Идущие и недавние задачи с |
| Версия моста и |
| Принудительная остановка зависшей задачи вместе с потомками. |
| Решение по отдельной операции дочернего Claude Code. Работает только при включённом контроле разрешений. |
| Плоский список файлов и каталогов проекта. Без запуска Claude Code и без плана. |
| Прямое чтение текстового файла проекта. Без запуска Claude Code и без плана. |
| Прямая перезапись текстового файла проекта целиком. Без запуска Claude Code и без плана. |
| Фиксированный набор git-операций напрямую. Без запуска Claude Code и без плана. |
Границы, поведение и обоснования файловых и git-инструментов — docs/tools.md.
Протокол в двух словах
plan_task → показать план человеку → approve_plan → execute_task
planned approved executing → executedexecute_taskбез одобренногоsession_idневозможен. Запустить задачу «с нуля», минуя план, нельзя — в этом и смысл моста.Повторный
plan_taskсбрасывает одобрение и меняетplan_digest: одобрить один план и подменить его другим не получится.has_open_questions: trueблокирует одобрение. Модели не хватило данных — она обязана выписать вопросы, а не угадать; задайте их пользователю и перепланируйте.Сбой одобрение не сжигает. После таймаута, отмены или ошибки API сессия остаётся
approved, попытку можно повторить.
Таблица состояний, поля ответа и обоснования — docs/protocol.md.
Быстрый старт
Требуется Node.js ≥ 20 и установленный Claude Code (проверено на 2.1.177, 2.1.268 и 2.1.274). CLI должен
уметь --output-format stream-json — на нём держится наблюдаемость идущей задачи; если версия
его не поддерживает, обход — streamEvents: false в конфиге.
1. Авторизация. Сервер не работает с вашими учётными данными: дочерний claude
аутентифицируется сам.
claude auth loginПроверить — должно прийти "is_error":false:
claude -p "hi" --output-format json2. Сборка.
npm install
npm run build3. Конфиг. Без белого списка каталогов сервер не стартует.
cp ccc-mcp.config.example.json ccc-mcp.config.jsonВпишите в allowedRoots свои каталоги.
4. Подключение.
claude mcp add --scope user ccc-mcp -e CCC_MCP_CONFIG=D:/Projects/ccc-mcp/ccc-mcp.config.json -- node D:/Projects/ccc-mcp/dist/index.jsИмя сервера должно идти до -e — флаг вариадический и иначе заберёт имя себе. Проверить:
claude mcp list.
Claude Desktop, Windows, macOS и разбор проблем подключения — в SETUP.md.
Пример: полный цикл
Шаг 1 — план.
{ "name": "plan_task",
"arguments": { "task_text": "Добавь валидацию email в форму регистрации и покрой её тестами.",
"project_dir": "D:\\Projects\\my-project" } }Ответ (сокращённо):
{ "status": "done", "ok": true,
"session_id": "b1e41519-93c1-4dc3-8eb2-0669513addf9",
"session_state": "planned", "plan_digest": "a3f19c4b7e02",
"result_text": "План: 1) добавить схему валидации…",
"next_step": "План готов, но не одобрен — выполнение пока запрещено…" }Шаг 2 — показать план человеку и одобрить. Оба значения берутся из ответа plan_task
без изменений.
{ "name": "approve_plan",
"arguments": { "session_id": "b1e41519-93c1-4dc3-8eb2-0669513addf9",
"plan_digest": "a3f19c4b7e02" } }Приходит session_state: "approved".
Шаг 3 — выполнение. Claude Code продолжит с уже собранным контекстом и вернёт тот же
session_id.
{ "name": "execute_task",
"arguments": { "task_text": "Выполни план.",
"project_dir": "D:\\Projects\\my-project",
"session_id": "b1e41519-93c1-4dc3-8eb2-0669513addf9",
"permission_mode": "acceptEdits", "model": "opus" } }project_dir должен совпадать с тем, для которого строился план: одобрение действует только
для своего проекта.
permission_mode — acceptEdits (по умолчанию, принимать правки файлов) либо
bypassPermissions (не спрашивать вообще, включая запуск команд).
model — необязательный, доступен в обоих вызовах: алиас (opus, sonnet, haiku) или полное
имя (claude-opus-5). Если не передать, берётся model из конфига, а если и там пусто — модель
выбирает сам CLI. Алиас haiku мост передаёт полным именем claude-haiku-4-5: с алиасом Claude
Code в режиме плана намеренно планирует на Sonnet.
Если пропустить шаг 2, вызов будет отклонён с текстом «план сессии b1e41519… получен, но не одобрен» и подсказкой, что вызвать дальше.
Долгие задачи и наблюдаемость
MCP-клиенты обычно обрывают вызов инструмента примерно через минуту, а задача может идти
полчаса. Поэтому plan_task и execute_task ждут результат не дольше wait_seconds
(по умолчанию 20 с). Успели — отдают полный отчёт сразу; не успели — возвращают
status: "running" и process_id:
{ "name": "get_task_status", "arguments": { "process_id": "6f0c…", "wait_seconds": 30 } }wait_seconds при опросе означает «подожди до N секунд, если задача ещё идёт».
wait_seconds: 0 в execute_task — сразу уйти в фон, не дожидаясь ничего. Стоимость известна
только по завершении: пока задача идёт, total_cost_usd равен null.
Идущая задача не чёрный ящик. В каждом ответе есть объект progress: что вызывалось
(tools_used, last_tool_call), последнее видимое сообщение модели, idle_seconds и лента
recent_events, — а next_step называет словами то, что происходит прямо сейчас (ждёт
разрешения, зависла, выполняет долгий инструмент, ходит по кругу). Поле wait_ended_reason
говорит, почему вернулось ожидание: задача закончилась, вышло время или появился запрос
на разрешение.
Поля ответа и таблица progress целиком — docs/protocol.md; устройство
потока событий и пороги диагностики — docs/internals.md.
Настройка
Сервер ищет конфиг в таком порядке:
путь из переменной
CCC_MCP_CONFIG;ccc-mcp.config.jsonрядом с пакетом;ccc-mcp.config.jsonв текущем каталоге.
Если конфига нет и не задан CCC_ALLOWED_ROOTS — сервер не стартует: без белого списка
работать небезопасно. В конфиге разрешены комментарии // и /* … */.
Белый список каталогов. project_dir из вызова проходит realpath (снимаются симлинки и
junction'ы, нормализуется регистр) и только потом сверяется с allowedRoots. Отклоняются
относительные пути, обход через .., несуществующие каталоги и каталоги-соседи вроде
D:\Projects-other.
Наблюдаемостью управляют три ключа: streamEvents (килсвитч разбора потока, по умолчанию
true), logProgress и logProgressIntervalMs (сводка живого состояния в лог, по умолчанию
выключена).
Переменные окружения перекрывают файл: CCC_ALLOWED_ROOTS (несколько путей через ;),
CCC_CLAUDE_BIN, CCC_GIT_BIN, CCC_MODEL, CCC_TIMEOUT_MS, CCC_LOG_FILE,
CCC_HOOKS_ENABLED (1/0), CCC_STREAM_EVENTS (1/0), CCC_AUTO_APPROVE_COMMANDS
(несколько команд через ;).
Все ключи с умолчаниями и пояснениями — в ccc-mcp.config.example.json и в разделе «Что стоит настроить» SETUP.md.
Безопасность — коротко
Правка файлов силами Claude Code — только по одобренному плану, привязанному к
plan_digestи каталогу.write_project_fileиrun_git— сознательные исключения: тот же результат достижим через обычный цикл, поэтому запрет дал бы не защиту, а неудобство. Каждая операция в логе.Ключ родителя не передаётся: все
ANTHROPIC_*иCLAUDE_*вычищаются из окружения дочернего процесса.Мост не запускается внутри своего же дочернего claude: окружение помечается
CCC_MCP_NESTED=1, и вложенный сервер завершается на старте.Без shell.
spawnсshell: false, текст задачи и аргументы git — отдельными элементами argv, сообщение коммита — через stdin.Белый список каталогов проверяется до запуска процесса.
Таймаут (
timeoutMs, 90 минут) снимает зависший процесс вместе с потомками,maxConcurrentне даёт расплодить процессы.
Разбор каждого пункта — docs/security.md.
Документация
Файл | О чём |
Пошаговый рунбук оператора: авторизация, сборка, конфиг, подключение к CLI и Desktop на Windows и macOS, проверка | |
Императивный протокол для вызывающего ИИ-агента — файл, который кладут в системный промпт | |
Инструменты вне протокола: файловые, | |
Протокол целиком: состояния, открытые вопросы, | |
Пооперационные разрешения (PreToolUse-хуки), | |
Модель безопасности и обоснование каждой границы | |
Политика безопасности: модель угроз коротко, поддерживаемые версии, адрес для приватного сообщения об уязвимости | |
Что и как пишется в JSONL-лог, что не пишется никогда | |
Полный справочник симптомов и решений | |
Внутреннее устройство: поток событий stream-json, паттерны диагностики, | |
Инструкции Claude Code, работающему над этим репозиторием |
Проверка
npm run build
npm run smoke -- --no-live # только проверки без вызовов Claude Code
npm run smoke # полный прогон, тратит токеныСкрипт поднимает сервер как настоящий MCP-клиент и проходит весь протокол вместе с отказами,
мост разрешений, файловые инструменты, листинг и run_git на реальном временном репозитории.
Что именно покрывает каждый блок — docs/internals.md.
Автор
Basil@155 — me@basil155.ru, www.basil155.ru
Код написан в паре с Claude Code (Claude Opus 5).
Лицензия
MIT — см. LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Hand tasks, bugs and finished work to AI coding agents, and get back a write-up with evidence.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Source-checked CLI guides and model-aware planning for Claude Code, Codex, and Grok Build.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables ISLI agents and MCP clients to dispatch natural-language coding and terminal tasks to a locally-installed Claude Code CLI, supporting both one-shot execution and persistent sessions with workspace and security controls.-
- FlicenseNot gradedqualityDmaintenanceEnables Claude to delegate coding tasks to a worker CLI, handling actual code modifications and command execution while Claude supervises and verifies results.-
- AlicenseAqualityDmaintenanceBridges a main agent (e.g., Codex) to a separate execution model in Claude Code Haha Desktop, enabling delegated coding tasks with file modifications, test runs, and change auditing.61MIT
- AlicenseAqualityCmaintenanceEnables Claude Code to run cursor-agent tasks in isolated git worktrees, manage asynchronous and parallel jobs, review diffs, and safely apply changes back to the repository.167 npmMIT