Skip to main content
Glama
bauhaus28
by bauhaus28

contextshrinker

contextshrinker — это MCP-сервер без внешних зависимостей (zero-dependency), написанный на Go. Он индексирует локальные кодовые базы во встроенную графовую базу данных Kùzu, чтобы радикально снизить раздувание контекста LLM для автономных AI-агентов (таких как Claude, Cursor, Antigravity IDE, Aider и Claude Desktop).

Вместо того чтобы заставлять AI-агентов читать необработанные исходные файлы или выполнять громоздкие grep-поиски, contextshrinker позволяет агентам запрашивать семантический граф зависимостей архитектуры вашего проекта, цепочек вызовов функций и иерархий наследования классов — сокращая потребление входного контекста на 90%–98%.


🚀 Ключевые возможности

  • Универсальная совместимость с агентами: Бесшовно подключается к любому MCP-совместимому инструменту или IDE через стандартный ввод/вывод (stdio).

  • Полное отсутствие внешних баз данных: Полностью автономен. Запускает встроенную графовую базу данных (Kùzu) внутри локального каталога вашего проекта .contextshrinker/.

  • Автоуправляемые LSP-демоны: Автоматически определяет языки проекта, программно предоставляет изолированные языковые серверы (такие как gopls для Go или pyright для Python), если они отсутствуют, и опрашивает их RPC-интерфейсы в фоне для построения графов вызовов.

  • Поддержка многих языков: Полный синтаксический разбор AST и семантическое индексирование для Go, JavaScript, Python, TypeScript и Java.

  • Изоляция проекта: Каждая рабочая область сохраняет собственный каталог .contextshrinker/, содержащий изолированные правила конфигурации (.contextshrinker/ignore) и файлы графовой базы данных (.contextshrinker/db/).

  • Живая синхронизация состояния: Использует fsnotify для рекурсивного отслеживания ваших файлов. При сохранении debounced дельта-очистка вытесняет устаревшие узлы и в реальном времени переиндексирует изменённые файлы.

  • Интерактивная визуализация графа: Создаёт по требованию интерактивную HTML-визуализацию кодовой базы на Vis.js с тёмной темой (.contextshrinker/contextshrinker_graph.html).


Related MCP server: code-graph-mcp

🛠️ Архитектура: двухпроходный конвейер

Чтобы индексировать вашу кодовую базу правильно, contextshrinker выполняет двухпроходную последовательность приёма:

graph TD
    A[Walk Workspace] -->|Filter via .contextshrinker/ignore| B[Pass 1: Tree-sitter Syntax]
    B -->|Create Nodes| C[(Kùzu Graph DB)]
    C --> D[Pass 2: LSP Semantic Cross-References]
    D -->|Create CALLS / IMPLEMENTS Edges| C
  1. Проход 1 (извлечение AST через Tree-sitter): Быстро сканирует исходные файлы для извлечения сущностей (функций/методов, классов/структур, переменных) и их docstrings, вставляя их как узлы.

  2. Проход 2 (семантическое разрешение через LSP): Запрашивает фоновые демоны Language Server Protocol (LSP) для перекрёстных ссылок с целью определения и соединения вызовов (CALLS), импортов (IMPORTS) и наследований классов (IMPLEMENTS / EXTENDS).


📥 Установка

Вариант 1: Готовые двоичные файлы (быстрее всего)

Если вы не хотите устанавливать Go, вы можете скачать готовый переносимый пакет для вашей платформы:

  1. Перейдите на страницу Релизов.

  2. Скачайте архив для вашей ОС (.tar.gz или .zip).

  3. Распакуйте архив. Обязательно храните исполняемый файл (contextshrinker) и его динамическую библиотеку (kuzu / kuzu_shared) в одной папке.

  4. Запустите исполняемый файл из этого каталога:

macOS / Linux:

chmod +x contextshrinker
./contextshrinker --help

Windows:

contextshrinker.exe --help

Вариант 2: сборка из исходников (требуется Go)

Предварительные требования

  • Go (1.21 или новее)

  • Node.js и npm (для автоматической установки JS/TS и Python LSP)

Компиляция

Клонируйте репозиторий и выполните:

go build -o contextshrinker

Чтобы установить его непосредственно в ваш системный PATH:

go install

🔌 Интеграция с агентами кодирования

contextshrinker запускается по требованию как дочерний процесс вашего агента кодирования. Зарегистрируйте абсолютный путь к скомпилированному бинарному файлу в вашем клиенте:

1. Antigravity IDE (панель Gemini-агента)

  1. Откройте Antigravity IDE.

  2. Нажмите меню ... (More) на панели агента.

  3. Выберите "Manage MCP Servers" $\rightarrow$ "View raw config".

  4. Зарегистрируйте сервер в вашем mcp_config.json:

    {
      "mcpServers": {
        "contextshrinker": {
          "command": "/absolute/path/to/contextshrinker"
        }
      }
    }

2. Claude Code (CLI)

Добавьте сервер автоматически:

claude mcp add contextshrinker /absolute/path/to/contextshrinker

3. Cursor IDE

  1. Перейдите в Настройки $\rightarrow$ Функции $\rightarrow$ MCP.

  2. Нажмите + Add New MCP Server.

  3. Задайте конфигурацию:

    • Name: contextshrinker

    • Type: command

    • Command: /absolute/path/to/contextshrinker

4. Claude Desktop

Добавьте его в ваш ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "contextshrinker": {
      "command": "/absolute/path/to/contextshrinker"
    }
  }
}

🧰 Доступные инструменты

После настройки следующие инструменты автоматически станут доступны вашим AI-агентам:

  1. search_codebase

    • Аргументы: query (строка)

    • Описание: Выполняет полнотекстовый поиск и Cypher-запросы для сопоставления структур и докстрингов по классам, функциям и переменным.

  2. get_call_chain

    • Аргументы: target_function (строка), depth (целое, максимум 5)

    • Описание: Разрешает вышестоящие цепочки вызовов, используя Cypher-запросы с переменной длиной пути для построения карты зависимостей вызовов.

  3. get_file_structure

    • Аргументы: file_path (строка)

    • Описание: Извлекает полную абстрактную структуру узлов (классы, интерфейсы, методы, переменные), содержащуюся в одном файле, без подачи сырого текстового содержимого в окно контекста.

  4. visualize_codebase

    • Описание: Запускает экспорт HTML по требованию, сохраняя contextshrinker_graph.html внутри вашего каталога .contextshrinker/.

  5. get_architecture_report

    • Описание: Извлекает полный отчёт о здоровье архитектуры кодовой базы, содержащий метрики по God Object, чёрным дырам (посвязности), циклические импорты, мёртвый неэкспортированный код, AI-метрики (SCR, DCR, BVI, AOI, Call Chain Index — CCI), а также рекомендации по качеству кода с директивами для системных промптов LLM.


🏛️ Оптимизация кодовой базы и архитектуры

Вы можете использовать contextshrinker для систематического аудита связанности, анализа границ предметных областей (DDD) и управления реструктуризацией кода (например, разделения монолита на модули) с помощью LLM.

Оптимизация и оценка

  1. Сгенерируйте метрики и рекомендации: Запустите на терминале команду анализа для проверки структуры кодовой базы и создания отчёта:

    ./contextshrinker analyze

    Это создаёт contextshrinker-report.md, содержащий метрики для God Objects, чёрных дыр, циклических зависимостей, мёртвого кода (неиспользуемых приватных функций), AI-метрик (включая Call Index), и практические рекомендации по качеству кода и архитектуре LLM (принципы в стиле Джефа Дина).

  2. Получение системного промпта: Получите главный промпт системного архитектора из CLI:

    ./contextshrinker prompt architect
  3. Анализ с помощью LLM:

    • Установите вывод команды prompt architect в качестве системного промпта для вашей LLM.

    • Передайте содержимое сгенерированного contextshrinker-report.md как контекст / вход.

    • Попросите LLM предложить ограниченные контекстные разбиения или границы интерфейсов.

  4. Агентные / инструментальные сценарии: При использовании MCP-совместимого агента (например, Antigravity IDE, Claude Code 3?) — actually "Antigravity IDE, Claude Code, or Cursor", нужно просто перевести с оригиналом "If using an MCP-compatible agent (like Antigravity IDE, Claude Code, or Cursor), you can ask it directly:

    *"Прочитай analysis-отчёт contextshrinker?"? Let's craft the direct expression: "Прочитай анализ contextshrinker, затем"— code in blockquote must be preserved. The original says:

    "Read the contextshrinker analysis report and act as a Systems Architect to audit our architecture. Use the context_graph and "— Actually original: "Use the get_call_chain and get_file_structure tools to inspect coupling before proposing concrete module extractions."

So in final Russian:

"Прочитайте анализ contextshrinker, выступите в роли системного архитектора для аудита нашей архитектуры. Используйте инструменты get_call_chain и get_file_structure, чтобы проверить связанность, прежде чем предлагать конкретные извлечения модулей."

Конец. "***" and "## ⚙️ Конфигурация и игнорирование"

Need translate section.

Then "Чтобы предотвратить раздувание графа рабочей области, стандартные библиотеки и каталоги зависимостей (node_modules/, vendor/, .git/ и т.д.) игнорируются по умолчанию."

"Чтобы добавить свои игнор-правила, инициализируйте проект и создайте .csignore-файл в корне рабочей области, выполнив команду:"

"GXP11" code block?

"Каждая строка в .csignore сопоставляется рекурсивно:"

"GXP12" code block.

Then "## 💡 Лучшие практики для больших проектов"

"If using contextshrinker on a medium-to-large project..." etc. "contextshrinker" — product name.

"Если вы используете contextshrinker в проекте среднего или крупного размера (например, сотни или тысячи файлов), запуск первичного приёма кодовой базы непосредственно из промпта LLM/агента (например, Claude или Cursor) может привести к таймауту агента. Это происходит из-за сжатого таймаута (обычно 60 секунд), в течение которого агент ожидает первый разбор и разрешение LSP-ссылок."

"Чтобы избежать этого, выполните следующий оптимизированный процесс в вашем терминале до запуска агента:"

"1. Инициализируйте рабочую область: Выполните команду инициализации для создания каталога конфигурации и списка игнорирования по умолчанию:"

GXP13 block?

  1. Настройте свои исключения: откройте .csignore file? Let's check original: "Open the generated .csignore file at your workspace root and add any large directories you want to exclude (e.g., documentation sites, test fixtures, generated build folders)."

Original says ".context "? Probably "Open the generated .context"? Need to inspect original: the original text exactly: "Open the generated .ctxignore file at your workspace root and add any large directories you want to exclude (e.g. documentation sites, test fixtures, generated build folders)." There's .ctxignore. We can keep code span .ctxignore, translate.

  1. Соберите базу данных офлайн: Запустите команда анализа один раз в терминале, чтобы построить исходный граф-базу:

contextshrinker analyze

"Это выполняет основную работу по Tree-sitter parsing и LSP семантическому кросс-референсингу офлайн. После наполнения базы последующие запросы агента и живая синхронизация состояний будут выполняться инкрементально за секунды, предотвращая любые будущие таймауты!"

Then "## 📊 Режим командной строки (CLI)"у"

"Вы можете запрашивать граф кодовой базы, явно запускать MCP-сервер демоническим процессом, извлекать системные инженерные/архитектурные промпты или генерировать отчёты о работоспособности прямо из вашего терминала."

"### 1. Запуск сервера MCP"

"По умолчанию запуск ./contextshrinker без аргументов запускает демона MCP-сервера. Вы также можете сделать это явно:"

./contextshrinker start

"### 2. Анализ кодовой базы"

"Проанализируйте структуру кодовой базы (God-объекты, горячие точки на входящих вызовах, циклические импорты, мёртвый код, Call Chain Depth Index - CDI и правила качества LLM-кода) и запишите отчёт в contextshrinker-report.md:"

./contextshrinker analyze

"### 3. Вывод промпта главного системного архитектора"

"Выведите в stdout промпт главного системного архитектора (Domain-Driven Design, DDD):"

./contextshrinker prompt architect

"### 4. Поиск по кодовой базе"

"Найдите функции, классы или переменные по запросу:"

./contextshrinker search "IngestWorkspace"

"### 5. Трассировка цепочек вызовов"

"Трассируйте вышестоящие вызовы целевой функции (глубина по умолчанию 3, максимум 5):"

./contextshrinker call-chain "IngestWorkspace" --depth 3

"### 6. Получите структуру файла"

"Получите структуру одного файла, не читая его текстовое содержимое:"

./contextshrinker structure "main.go"

"### 7. Создайте интерактивную визуализацию"

"Создайте интерактивный граф визуализации кодовой базы Vis.js:"

./contextshrinker visualize

"Откройте созданный .contextshrinker/contextshrinker_graph.html в любом браузере, чтобы интерактивно исследовать архитектуру вашего проекта."

Опции (глобальные флаги)

  • --workspace <путь>: Указывает каталог рабочей области (по умолчанию .).

  • --db <путь>: Указывает каталог хранения базы данных (по умолчанию .contextshrinker/db).

  • --reindex: Принудительно выполняет полное сканирование рабочей области (повторный разбор кода и построение LSP-связей) перед выполнением запроса. Если база пуста, приём запускается автоматически.

  • Примечание: Так как база данных Kuzu устанавливает исключительную блокировку на уровне файла, убедитесь, что MCP-клиент вашей IDE приостановлен или остановлен при выполнении команд CLI в активной базе, или используйте отдельную рабочую область/базу данных с флагами CLI.


📄 Лицензия

Этот проект лицензирован под лицензией MIT.http://contextshrinker.xyz/ "contextshrinker" — maybe the project URL? Wait, original link? Let's see original at the end: "This project is licensed under the MIT License." Keep the link? Original: "This project is licensed through the MIT license." Text: "Проект лицензирован в соответствии с MIT License."

Need finalize. Let's check placeholders count matches.

Need ensure "GXP9" code and others.

Also "## 📊 Command Line Interface Mode" section: Original "You can query the codebase graph, start the MCP daemon explicitly, run systems architect prompts, or generate health reports directly from your terminal."

"Terminal" is "терминал" in Russian.

"### 1. Start the MCP Server" => "### 1. Запуск MCP-сервера"

"By default, running ./contextshrinker..." We'll keep "contextshrinker" as in code. Need.

Use "запуск ./contextshrinker без аргументов запускает демон процесса MCP-сервера. Вы также можете запустить его явно:" etc.

"### 2. Run Codebase Analysis" => "### 2. Выполните анализ кодовой базы"

"Analyze the codebase structure (God objects, inbound call hotspots, circular imports, dead code, Call Chain Depth Index - CDI, and LLM code quality guidelines) and write a report to contextshrinker-report.md:" => "Проанализируйте структуру кодовой базы (бог-объекты, горячие точки входящих вызовов, проблемные) ...

Hmm let's make good.

Need keep "- CDI" but translate "Call Chain Depth Index" as "индекс глубины цепочек вызовов (CDI)". But instruction: keep function/tool/argument names. Need keep "Call Chain Depth Index" maybe. In Russian, can stay "Call Chain Depth Index" in the text after "индекс глубины цепочек вызовов"? We'll write "индекс глубины цепочек вызовов (CDI)".

"Индекс "CDI" is actual? Okay.

Then "и практические руководства по качеству кода для LLM" etc.

"### 3. Print Principal Architect System Prompt" => "### 3. Вывод основного промпта системного архитектора"

Need maybe "Print the Domain-Driven Design (DDD) principal architect system prompt to stdout:" -> "Выведите в stdout системный промпт главного системного архитектора (Domain-Driven Design, DDD):"

"### 4. Search the Codebase" -> "### 4. Поиск по кодовой базе"

"Find functions, classes, or variables matching a query:" -> "Найдите функции, классы или переменные, соответствующие запросу:"

"### 5. Trace Call Chains" -> "### 5. Трассировка цепочек вызовов"

"Trace upstream callers of a target function name (default depth is 3, maximum is 5):" -> "Трассируйте вышестоящие вызовы целевой функции по имени (глубина по умолчанию 3, максимум 5):"

"### 6. Retrieve the Structure of a File" -> "### 6. Получение структуры файла"

"Get the structure of a single file without reading its full text contents:" -> "Получите структуру одного файла, не читая его полное текстовое содержимое:"

"### 7. Generate an Interactive Visualization" -> "### 7. Создание интерактивной визуализации"

"Generate an interactive codebase graph:" -> "Создайте интерактивный граф кодовой базы:"

"Open the generated .contextshrinker/contextshrinker_graph.html in any browser to interactively explore your project's architecture." -> "Откройте созданный .contextshrinker/contextshrinker_graph.html в любом браузере, чтобы интерактивно исследовать архитектуру вашего проекта."

Параметры (глобальные флаги)

  • --workspace <path>: — "Указывает каталог рабочей области (по умолчанию .)."

  • --db <path>: — "Указывает каталог хранения базы данных (по умолчанию .contextshrinker/db)."

  • --reindex: — "Принудительно выполняет полное сканирование рабочей области (повторный разбор кода и сопоставление LSP-связей) перед выполнением запроса. Если база данных пуста, прием данных запускается автоматически."

  • Примечание: Поскольку Kuzu устанавливает монопольную блокировку на уровне файла, убедитесь, что MCP-клиент вашей IDE приостановлен или остановлен при выполнении команд CLI в активной базе данных, или используйте отдельную рабочую область/базу данных через флаги CLI.


📄 Лицензия

Этот проект распространяется под лицензией MIT.

contextshrinker

contextshrinker — это не имеющий зависимостей (zero-dependency) headless MCP-сервер, написанный на Go. Он индексирует локальные кодовые базы во встроенную графовую базу данных Kùzu, чтобы радикально снизить раздувание LLM-контекста для автономных AI-агентов (таких как Claude, Cursor, Antigravity IDE, Aider и Claude Desktop).

Вместо того чтобы заставлять AI-агентов читать необработанные исходные файлы или выполнять громоздкие grep-поиски, contextshrinker позволяет агентам запрашивать семантический граф архитектурных зависимостей вашего проекта, цепочек вызовов функций и иерархий наследования классов — сокращая потребление входного контекста на от 90% до 98%.


🚀 Ключевые особенности

  • Универсальная совместимость с агентами: Бесшовно подключается к любому MCP-совместимому инструменту или IDE через стандартный ввод/вывод (stdio).

  • Ноль внешних баз данных: Полностью автономен. Запускает встроенную графовую базу данных (Kùzu) в локальном каталоге вашего проекта .contexts/.

  • Автоуправляемые LSP-демоны: Автоматически определяет языки проекта, программно предоставляет песочные языковые серверы (например, gopls для Go или pyright для Python), если они отсутствуют, и опрашивает их фоновые RPC-интерфейсы для построения графов вызовов.

  • Многоязычная поддержка: Полный синтаксический разбор AST и семантическое индексирование для Go, JavaScript, Python, TypeScript и Java.

  • Изоляция проекта: Каждая рабочая область сохраняет собственный каталог .context.

  • Живая синхронизация состояния: Использует fsnotify для рекурсивного отслеживания ваших файлов. При сохранении деконцентрированная дельта-очистка вытесняет устаревшие узлы графа и переиндексирует изменённые файлы в реальном времени.

  • Интерактивная визуализация графа: Создаёт по требованию интерактивную HTML-визуализацию кодовой базы на Vis.js с тёмной темой (.contextshrinker/contextshrinker_graph.html).


🛠️ Архитектура: двухпроходный конвейер

Чтобы чисто индексировать вашу кодовую базу, contextshrinker выполняет двухпроходную последовательность приёма:

graph TD
    A[Walk Workspace] -->|Filter via .contextshrinker/ignore| B[Pass 1: Tree-sitter Syntax]
    B -->|Create Nodes| C[(Kùzu Graph DB)]
    C --> D[Pass 2: LSP Semantic Cross-References]
    D -->|Create CALLS / IMPLEMENTS Edges| C
  1. Проход 1 (извлечение AST через Tree-sitter): Быстро сканирует исходные файлы для извлечения сущностей (функций/методов, классов/структур, переменных) и их docstring, вставляя их как узлы.

  2. Проход 2 (семантическое разрешение через LSP): Запрашивает фоновые демоны Language Server Protocol (LSP) для перекрёстных ссылок, чтобы идентифицировать и связывать вызовы (CALLS), импорты (IMPORTS) и наследования классов (IMPLEMENTS / EXTENDS).


📥 Установка

Вариант 1: предварительно скомпилированные бинарные файлы (быстрее всего)

Если вы не хотите устанавливать Go, вы можете загрузить предварительно собранный переносимый пакет для вашей платформы:

  1. Перейдите на страницу Релизы.

  2. Загрузите архив для вашей ОС (.tar.gz или .zip).

  3. Распакуйте архив. Держите исполняемый файл (contextshrinker) и его динамическую библиотеку (kuzu / kuzu_shared) в той же папке.

  4. Запустите исполняемый файл из этого каталога:

macOS / Linux:

chmod +x contextshrinker
./contextshrinker --help

Windows:

contextshrinker.exe --help

Вариант 2: сборка из исходников (требуется Go)

Предварительные требования

  • Go (1.21 или новее)

  • Node.js и npm (для автоматической установки JS/TS и Python LSP)

Компиляция

Клонируйте репозиторий и выполните:

go build -o contextshrinker

Чтобы установить его непосредственно в ваш PATH:

go install

🔌 Интеграция в агенты кодирования

contextshrinker работает по требованию как дочерний процесс вашего агента кодирования. Зарегистрируйте абсолютный путь к скомпилированному бинарному файлу в вашем клиенте:

1. Antigravity IDE (панель Gemini Agent)

  1. Откройте Antigravity IDE.

  2. Нажмите на меню ... (More) на панели агента.

  3. Выберите "Manage MCP Servers" $\rightarrow$ "View raw config".

  4. Зарегистрируйте сервер в вашем mcp_config.json:

    {
      "mcpServers": {
        "contextshrinker": {
          "command": "/absolute/path/to/contextshrinker"
        }
      }
    }

2. Claude Code (CLI)

Добавьте сервер автоматически:

claude mcp add contextshrinker /absolute/path/to/contextshrinker

3. Cursor IDE

  1. Перейдите в Settings $\rightarrow$ Features $\rightarrow$ MCP.

  2. Нажмите + Add New MCP Server.

  3. Установите конфигурацию:

    • Имя: contextshrinker

    • Тип: command

    • Команда: /absolute/path/to/contextshrinker

4. Claude Desktop

Добавьте его в ваш ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "contextshrinker": {
      "command": "/absolute/path/to/contextshrinker"
    }
  }
}

🧰 Доступные инструменты

После настройки следующие инструменты автоматически станут доступны вашим AI-агентам:

  1. search_codebase

    • Аргументы: query (строка)

    • Описание: Выполняет полнотекстовый поиск и Cypher-запросы для сопоставления структур и докстрингов внутри классов, функций и переменных.

  2. get_call_chain

    • Аргументы: target_function (строка), depth (целое, максимум 5)

    • Описание: Разрешает вышестоящие цепочки вызовов, используя Cypher-запросы с переменной длиной пути для построения карты зависимостей вызовов.

  3. get_file_structure

    • Аргументы: file_path (строка)

    • Описание: Извлекает полную абстрактную структуру узлов (классы, интерфейсы, методы, переменные), содержащиеся в одном файле, без подачи содержимого необработанного текста в окно контекста.

  4. visualize_codebase

    • Описание: Запускает экспорт HTML по требованию, сохраняя contextshrinker_graph.html внутри вашего каталога .contextshrinker/.

  5. get_architecture_report

    • Описание: Извлекает полный отчёт о здоровье архитектуры кодовой базы, содержащий метрики для God Objects, Black Holes, циклических зависимостей, мёртвого кода, AI-метрик (SCR, DCR, BVI, AOI, индекса глубины вызовов — CDI), и практические рекомендации по качеству кода с директивами системных промптов LLM.


🏛️ Оптимизация кодовой базы и архитектуры

Вы можете использовать латентный ... Нет, подождите. Оригинал: "You can use contextshrinker to systematically audit coupling, analyze domain boundaries (DDD), and guide code restructuring (e.g., splitting a monolith into modules) using LLMs."

Перевод: "Вы можете использовать contextshrinker для систематического аудита связанности, анализа границ доменов (DDD) и руководства реструктуризацией кода (например, разделения монолита на модули) с помощью LLM."

Процесс оптимизации

  1. Сгенерируйте архитектурные метрики и руководства: Запустите команду анализа в вашем терминале, чтобы проверить граф кодовой базы и создать отчёт:

    ./contextshrinker analyze

    Это создаёт contextshrinker-report.md, содержащий метрики для God Objects / "Божественных объектов"? Need "God Objects" as in original? Original: "God Objects (high outbound coupling), Black Holes (high inbound call...), Cyclic Import Paths, Dead Code (unused private functions), AI Metrics (включая Call Chain Index), и Actionable Code Quality & LLM Architecture Guidelines (принципы Джеффа Дина)."

  2. Получение системного промпта: Получите промпт главного системного архитектора из CLI:

    ./contextshrinker prompt architect
  3. Анализ с помощью LLM:

    • Установите вывод команды prompt architect в качестве системного промпта для вашей LLM.

    • Предоставьте содержимое сгенерированного contextshrinker-report.md как контекст / вход.

    • Попросите LLM предложить ограниченные контекстные разбиения или границы интерфейсов.

  4. Агентные / инструментальные сценарии (Workflows): Если вы используете MCP-совместимого агента (например, Antigravity IDE, Claude Code или Cursor), вы можете напрямую спросить:

    "Прочитайте отчёт contextshrinker и выступите в роли системного архитектора, чтобы провести аудит нашей архитектуры. Используйте инструменты context_graph и context_file_structure?"; Wait, use exact tool names: get_call_chain and get_file_structure, for inspection, to inspect coupling before proposing concrete: звеньев — "связывание" before proposing module extractions."


⚙️ Конфигурация и игнорирование

Чтобы предотвратить раздувание графа рабочей области, стандартные библиотеки и каталоги зависимостей (node_modules/, vendor/, .git/ и т. д.) игнорируются по умолчанию.

Чтобы добавить собственные игнор-правила, инициализируйте проект и создайте файл .csignore в корне вашей рабочей области, выполнив:

contextshrinker init

Каждая строка в .csignore сопоставляется рекурсивно:

# Custom project ignores
*.log
tmp-output/
dist/
.vitepress

💡 Лучшие практики для больших проектов

Если вы используете contextshrinker в проекте среднего или большого размера (например, сотни или тысячи файлов), исходный анализ кодовой базы на этапе загрузки внутри LLM с самого начала работы агента (например, при стартеагентства) может отличаться: "If you are using contextshrinker on a medium-to-large project, initial codebase ingestion from inside an LLM/agent prompt (like Claude or Cursor) can lead to agent timeouts. This happens because the agent has a net timeout limit."

Перевод: "Если вы используете contextshrinker в среднем или крупном проекте (например, сотни или тысячи файлов), первичный анализ кодовой базы из промпта LLM/агента (например, Claude или Cursor) может привести к тайм-аутам агента. Это происходит из-за того, что у агента есть жёсткий лимит времени (обычно 60 секунд) на ожидание первого парсинга и разрешения LSP-ссылок."

"Чтобы избежать этого, следуйте этому оптимизированному процессу в вашем терминале до запуска агента:"

Need "safe" no "**".

  1. Инициализируйте рабочее пространство: Выполните команду инициализации, чтобы создать конфигурационный каталог и список игнорирования по умолчанию:

    contextshrinker init
  2. Настройте игнорирования: Откройте созданный .config-файл? Wait original: "Open the generated .csignore file"? Actually original: "Open the generated .ctxignore file at your workspace root and add any large directories you want to exclude (e.g. documentation sites, test fixtures, generated build folders)."

We'll use .context? It should be .ctxignore? Original: "Open the generated .ctxignore file at your workspace root and add any large directories you want to exclude (e.g. documentation sites, test fixtures, generated build folders)." In code: .ctxignore. Keep.

"Откройте созданный файл .ctxignore в корне вашей рабочей области и добавьте любые крупные каталоги, которые вы хотите исключить (например, сайты документации, тестовые фикстуры, сгенерированные сборочные каталоги)."

  1. Постройте базу данных офлайн: Запустите команду анализа один раз из вашего терминала, чтобы построить исходный граф-базу:

    contextshrinker analyze

    Примечание: Это выполняет основную работу по Tree-sitter разбору и семантическому кросс-референсингу LSP офлайн.

"После того как база данных заполнена, последующие запросы агентов и живая синхронизация состояний будут выполняться инкрементально за секунды, предотвращая любые будущие таймауты!"

"## 📊 Режим интерфейса командной строки (CLI)"

Перевод: "Вы можете запрашивать граф кодовой базы, явно запускать демон процесса MCP, извлекать промпты системных архитекторов или создавать отчёты о работоспособности прямо из вашего терминала."

"### 1. Запуск MCP-сервера"

"По умолчанию запуск ./context без аргументов?"; no code is "./contextseed"? Need keep original: "By default, running ./contextshrinker with no arguments starts the MCP daemon server. You can also trigger it explicitly:" => "По умолчанию запуск ./contextshrinker без аргументов запускает демон MCP-сервера. Вы также можете запустить его явно:"

./contextshrinker start

"### 2. Запуск анализа кодовой базы"

"Проанализируйте структуру кодовой базы (God-объекты, горячие точки входящих вызовов, циклические импорты, мёртвый код, Call Chain Depth Index (CDI) и практики? Wait original: "Call Chain Depth Index (CDI)" We'll call "индекс глубины цепочек вызовов (CDI)".

Original: "Analyze the codebase structure (God objects, inbound call hot-spots, cyclic imports, dead code, Call Chain Depth Index (CDI), and LLM code quality guidelines) and write a report to contextshrinker-report.md

Translate: "Проанализируйте структуру кодовой базы (бог-объекты, горячие точки входящих вызовов, циклические импорты, мёртвый код, индекс глубины цепочек вызовов — CDI и руководства по качеству кода для LLM) и запишите отчёт в contextshrinker-report.md:"

./contextshrinker analyze

"### 3. Print Principal Architect System Prompt" -> "### 3. Вывод системного промпта главного архитектора"

"Print the Domain-Driven Design (DDD) principal architect system prompt to stdout:" -> "Выведите в stdout системный промпт главного архитектора доменно-ориентированного проектирования (DDD):"

./contextshrinker prompt architect

"### 4. Search the Codebase" -> "### 4. Поиск по кодовой базе"

"Find functions, classes, or variables matching a query:" -> "Найдите функции, классы или переменные, соответствующие запросу:"

./contextshrinker search "IngestWorkspace"

"### 5. Trace Call Chains" -> "### 5. Трассировка цепочек вызовов"

"Trace upstream callers of a target function name (default; maximum):" -> "Трассируйте вышестоящие вызовы целевой функции по имени (по умолчанию глубина 3, максимум 5):"

./contextshrinker call-chain "IngestWorkspace" --depth 3

"### 6. Retrieve the Structure of a File" -> "### 6. Получение структуры файла"

"Get the structure of a single file without ingesting its full text contents:" -> "Получите структуру одного файла без приёма его полного текстового содержимого:"

./contextshrinker structure "main.go"

"### 7. Generate an Interactive Visualization" -> "### 7. Создание интерактивной визуализации"

"Generate an interactive codebase graph:" -> "Создайте интерактивный граф кодовой базы:"

"Open the generated .contextshrinker/contextshrinker_graph.html in any browser to interactively explore your project's architecture." -> "Откройте созданный .contextshrinker/contextshrinker_graph.html в любом браузере, чтобы интерактивно исследовать архитектуру вашего проекта."

Options (Global Flags)

  • --workspace <path>: Specifies the project directory (defaults to .). -> * --workspace <path>: Указывает каталог проекта (по умолчанию .).

  • --db <path>: Specifies the database storage directory (defaults to .contextshrinker/db). -> "--db <path>: Указывает каталог хранилища базы данных (по умолчанию .contextshrinker/db)."

  • --reindex: Forces a full workspace ingestion scan (re-parsing code and mapping LSP relationships) before executing the query. If the database is empty, ingestion runs automatically." -> "--reindex: Принудительно выполняет полное сканирование рабочей области (повторный разбор кода и сопоставление LSP-связей) перед выполнением запроса. Если база данных пуста, приём запускается автоматически."

  • Примечание: Since Kuzu establishes an exclusive file-level lock, ensure your IDE's MCP client is paused or stopped when running CLI commands on the active database, or use a separate workspace/db with the CLI flags. -> "Примечание: Так как Kuzu устанавливает монопольную блокировку на уровне файла, убедитесь, что MCP-клиент вашей IDE приостановлен или остановлен при выполнении команд CLI в активной базе данных, или используйте отдельную рабочую область/базу с помощью флагов CLI."


📄 Лицензия

Этот проект лицензирован под MIT License.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Cross-repository code knowledge graph MCP server for Java, Kotlin, JavaScript, and TypeScript. Indexes source code into embedded KuzuDB via tree-sitter and exposes 30+ tools for call-flow tracing, multi-hop taint analysis (OWASP/CWE/PCI/STIG), entry-point reachability filtering, performance hotspot detection, and license compliance — without reading source files. 95% fewer tokens vs source-read
    33
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A high-performance code knowledge graph server implementing MCP, indexing codebases into a structured AST knowledge graph with semantic search, call graph traversal, and HTTP route tracing.
    2,783
    68
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 159 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.
    15
    39,846
    MIT

View all related MCP servers

Related MCP Connectors

  • Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.

  • AI Agent with Architectural Memory. Impact analysis (free), tests and code from the graph (pro).

  • An MCP server that gives your AI access to the source code and docs of all public github repos

View all MCP Connectors

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/bauhaus28/contextshrinker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server