MCP facade over CodeGraphContext + grace-marketplace: impact, context, drift-detect for LLM-driven codebases.
Project description
doubled-graph
MCP-сервер для LLM-агентов, работающих с большими кодовыми базами.
Проблема: агент правит код не зная, кто вызывает функцию и какой у неё контракт — получаем регрессии и тихий дрейф. doubled-graph даёт агенту два графа одновременно:
- Computed graph — AST-граф реального кода (через CodeGraphContext): кто вызывает что, где определено.
- Declared graph — граф из артефактов (
docs/*.xml): замысел, контракты, верификация.
Четыре MCP-инструмента:
| Инструмент | Когда |
|---|---|
analyze |
построить/обновить граф |
impact |
радиус влияния изменений — до правки |
context |
360° вид: символ + контракт + вызовы |
detect_changes |
дрейф кода от артефактов — до коммита |
Установка
Требования: Python 3.11+, Bun/Node (для grace-cli), pipx.
doubled-graph — CLI-утилита. Рекомендуемый способ — pipx: он ставит её в изолированный venv и кладёт бинарь в PATH. Это также обходит PEP 668 (externally-managed-environment) на современных Homebrew/Debian/Ubuntu.
1. Установить pipx
| OS | Команда |
|---|---|
| macOS | brew install pipx |
| Debian / Ubuntu | sudo apt install pipx |
| Fedora | sudo dnf install pipx |
| Arch | sudo pacman -S python-pipx |
| Windows / прочее | python3 -m pip install --user pipx |
После установки один раз добавьте pipx-папку в PATH и перезапустите терминал:
pipx ensurepath
2. Установить doubled-graph
pipx install doubled-graph
Уже работаете в своём venv или conda-окружении? Тогда подойдёт обычная установка:
python3 -m pip install doubled-graph.
Первые шаги
1. Онбординг репозитория
cd your-project
doubled-graph setup
Одна команда:
- установит
@osovv/grace-cliчерез первый найденный JS-менеджер (bun→npm→yarn→pnpm); если Bun отсутствует — установитtsxтем же менеджером и запустит grace под Node - скопирует
prompts/иmethodology/в репозиторий - запишет 5 наших skills в native-формат для всех известных IDE одновременно (
.claude/skills/,.cursor/rules/,.continue/rules/,.roo/rules/,.kilocode/rules/,.opencode/rules/+opencode.json,.windsurfrules) — мы не знаем, каким клиентом вы пользуетесь - зарегистрирует MCP-сервер в вашей IDE (Claude Code / Cursor / Continue)
- установит
git post-commitхук для автообновления графа - запустит первый полный
analyze
Посмотреть план без реальных изменений:
doubled-graph setup --dry-run
Явно указать IDE:
doubled-graph setup --ide claude-code
2. Подключить MCP вручную (если нужно)
Рекомендуем doubled-graph setup — он сам сгенерирует .mcp.json с правильными значениями. Это важно: GUI-приложения (Claude Desktop, Cursor, Continue) на macOS стартуют без ~/.local/bin в PATH, и простая запись command: "doubled-graph" у них не работает.
Если нужно прописать руками — используйте абсолютный путь к Python, в который установлен doubled-graph:
# Узнать путь к нужному Python:
doubled-graph --version # проверить, что бинарь работает
head -1 "$(which doubled-graph)" # вывести shebang — это и есть нужный python
.mcp.json в корне репозитория:
{
"mcpServers": {
"doubled-graph": {
"command": "/Users/you/.local/pipx/venvs/doubled-graph/bin/python",
"args": ["-m", "doubled_graph", "serve"]
}
}
}
3. Инициализация
Введите в ваш ИИ первый промт. Остальные промты он сам подгрузит.
Сценарий 1. Новый проект - prompts/new-project/00-entry-prompt.md.
Сценарий 2. Миграция существующего - prompts/migrate-existing-project/00-entry-prompt.md.
Другие команды
# Обновить граф вручную
doubled-graph analyze --mode auto
# 360° контекст символа
doubled-graph context validateUser
# Текущая фаза методологии (migration | post_migration)
doubled-graph phase get
doubled-graph phase set post_migration --reason "migration complete"
Удаление
pipx uninstall doubled-graph
(или python3 -m pip uninstall doubled-graph, если ставили в venv).
Это снимает сам CLI и Python-зависимости. Артефакты, которые doubled-graph setup создал в вашем репозитории, нужно удалить вручную:
- запись
doubled-graphв.mcp.json(Claude Code) /.cursor/mcp.json/.continue/config.json - скопированные
prompts/иmethodology/— если они больше не нужны - skill-файлы для IDE: каталоги
.claude/skills/doubled-graph-*/,.cursor/rules/doubled-graph-*.mdc,.continue/rules/doubled-graph-*.md,.roo/rules/doubled-graph-*.md,.kilocode/rules/doubled-graph-*.md,.opencode/rules/doubled-graph-*.md, блок между<!-- doubled-graph-skills:start -->/<!-- ... :end -->в.windsurfrules, и запись.opencode/rules/*.mdвopencode.jsoninstructions - git-хук
.git/hooks/post-commit(проверьте содержимое — там может быть ваша логика поверх нашей) - локальный кеш графа:
rm -rf .doubled-graph - grace-cli (отдельный Bun/Node-пакет) — через тот менеджер, которым ставился:
bun remove -g @osovv/grace-cliилиnpm uninstall -g @osovv/grace-cli
Документация
- SPEC.md — архитектура, хранилище
.doubled-graph/ - TOOLS.md — подробные схемы инструментов
- HOOKS.md — git и Claude Code хуки
- CHANGELOG.md — история изменений
Лицензия
MIT. Upstream-компоненты (CodeGraphContext, grace-marketplace) — MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file doubled_graph-1.5.0.tar.gz.
File metadata
- Download URL: doubled_graph-1.5.0.tar.gz
- Upload date:
- Size: 233.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f322821bb5dc54feba729a234dbefe118da8c01a71d2cd2ebb1d10b7d438e89
|
|
| MD5 |
75d6369276b5045e571c46c6feb7e274
|
|
| BLAKE2b-256 |
61d5580939264856517257446b126274ea1a8f43f51d27041fd74966370e7b1e
|
File details
Details for the file doubled_graph-1.5.0-py3-none-any.whl.
File metadata
- Download URL: doubled_graph-1.5.0-py3-none-any.whl
- Upload date:
- Size: 290.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9f98e59778fa4cf4ca69e642e854dc31eafa0882f96fcfa01394a92c3f2c639
|
|
| MD5 |
c8f828bb282dfc714d0541a8219c83a9
|
|
| BLAKE2b-256 |
9a62b03e868a1ee36b2eb33c30494ebc811bd5076578153b16f101e44acdf4f1
|