API ВЕГА
English

jCodeMunch MCP

MCP-сервер, который находит исходный код по символам, а не по файлам, используя разбор AST с помощью tree-sitter. В нашем зафиксированном бенчмарке один запрос требует на 96,2% меньше токенов, чем поиск через grep с последующим чтением файлов (в 26,5 раза меньше; от 86,9% до 98,7% на 15 запросах). Благодаря этому агент не расходует контекстное окно на целые файлы.

Бенчмарк: по 5 запросов для express, fastapi и gin на зафиксированных коммитах; число токенов подсчитывалось с помощью tiktoken cl100k_base. jcodemunch-mcp использовался на коммите 15afcf75: строка версии — 1.108.391, однако в этой версии также есть изменение ранжирования файлов настроек, выпущенное в 1.108.392, и изменение для полей и констант, выпущенное позже. Один запрос — это один search_symbols и вызов get_symbol_source для трёх лучших результатов; для сравнения использовался подход с grep и чтением файлов: файлы ранжировались по числу совпадений, затем целиком читались три лучших. Сравнение выполнено для каждого запроса, а не для сеанса. Инструкции по воспроизведению: benchmarks/REPRODUCING.md.

Реальные результаты, актуальные данные из production Сэкономлено более 838B токенов · Более 136 000 установок с отправкой статистики · Сокращены расходы на AI более чем на $4,2 млн · Предотвращены выбросы более 100 000 кг CO₂ Данные счётчика приведены по состоянию на 2026-08-17; оценка выполнена по тарифу $5/MTok за входные токены Claude Opus. Все четыре показателя только растут, поэтому воспринимайте их как минимальные значения. Актуальные данные — на сайте jcodemunch.com.

Совместим с Claude Code, Cursor, VS Code, Codex CLI, Windsurf, Continue и любым клиентом с поддержкой MCP.

Установить · Краткое руководство · Ознакомиться с результатами · Тарифы

Бесплатно для личного использования. Если вы зарабатываете с его помощью, дядя J. получает свою долю. Справедливо? Коммерческие лицензии — ниже.

Наша гарантия: если jCodeMunch не окупится, платить за jCodeMunch не придётся.

По умолчанию — только необходимое. Новая установка начинается с шести инструментов: меню, заказ и маршрутизация выполняют основную работу, а jcodemunch_guide, announce_model и set_tool_tier помогают в настройке. Полный набор инструментов доступен отдельно, а команда jcodemunch-mcp surface показывает, какие именно возможности доступны в вашей установке.


Почему jCodeMunch?

Большинство AI-агентов изучают репозитории дорогим способом: открывают целые файлы, просматривают тысячи ненужных строк и повторяют это снова. Это не «небольшая неэффективность», а сжигатель токенов.

jCodeMunch индексирует кодовую базу один раз и позволяет агентам получать только нужный фрагмент кода: функции, классы, методы, константы, структуры и контекстные подборки с точно заданными границами. С помощью tree-sitter он разбирает исходный код и сохраняет в локальном индексе структурированные метаданные символов (сигнатуру, тип, полное имя, краткое описание и смещения в байтах) вместе с исходным содержимым файлов. Затем он получает точные реализации по запросу, вместо того чтобы снова и снова перечитывать файлы.

ЗадачаТрадиционный подходС jCodeMunch
Найти функциюОткрыть большие файлы и просмотреть ихНайти символ и получить точную реализацию
Разобраться в модулеЧитать большие фрагменты файловПолучить только нужные символы и импорты
Изучить структуру репозиторияПереходить от одного файла к другомуЗапрашивать структуры, деревья и целевые подборки
«Что сломается, если изменить X?»Найти имя, затем прочитать каждый результатget_blast_radius: получить затронутые файлы и символы во всех индексированных репозиториях, не запуская IDE

Индексируйте один раз. Выполняйте запросы с минимальными затратами. Продолжайте работу. Точный контекст лучше избыточного.


Результаты

Воспроизводимый бенчмарк эффективности использования токенов

Измерения выполнены с помощью tiktoken cl100k_base на трёх открытых репозиториях, зафиксированных на коммитах upstream; запуск — 2026-10-22 на v1.108.391 (коммит 15afcf75, строка версии которого — 1.108.391, однако он также включает изменение ранжирования файлов настроек, выпущенное в 1.108.392, и изменение для полей и констант, выпущенное позже). Сценарий: search_symbols (5 лучших результатов) + get_symbol_source × 3 на каждый запрос. Сравнивались два базовых подхода; запуск, набор данных и средство чтения файлов были одинаковыми:

  • Grep-top-3: выполнить rg -l по терминам запроса, ранжировать файлы по числу совпадений и целиком открыть три лучших. Именно так будет действовать опытный агент без этого инструмента; на этот показатель и следует ориентироваться.

  • Read-all: объединить содержимое всех индексированных исходных файлов. Это верхняя граница, которую никто не оплачивает; показатель сохранён для сопоставления с ранее опубликованными результатами.

РепозиторийФайлыСимволыБазовый показатель Grep-top-3jCodeMunchПо сравнению с grepПо сравнению с Read-all
expressjs/express18698915,724 в среднем990 в среднемв 15,9 разав 156,1 раза
fastapi/fastapi1,18613,69985,296 в среднем2,556 в среднемв 33,4 разав 322,9 раза
gin-gonic/gin981,82231,975 в среднем1,481 в среднемв 21,6 разав 102,5 раза
Всего (15 запусков задач)664,97525,132в 26,5 разав 225,2 раза

По сравнению с агентом, использующим grep и чтение файлов: на 96,2% меньше токенов, в 26,5 раза меньше токенов. Одно значение не описывает все запросы; диапазон показан в строках по репозиториям выше. По сравнению с Read-all сокращение составляет 99,6%, но никто не оплачивает такой верхний предел. Компактное проводное кодирование MUNCH дополнительно уменьшает медианный размер ответов на 45,5%.

Полная методика, зафиксированные коммиты, тестовый стенд и известные ограничения: benchmarks/METHODOLOGY.md · Повторите тест самостоятельно · TOKEN_SAVINGS.md

Независимое A/B-тестирование на production-кодовой базе

A/B-тестирование в 50 итераций на реальной production-кодовой базе Vue 3 + Firebase: jCodeMunch сравнивался со встроенными инструментами (Grep/Glob/Read), использовался Claude Sonnet 4.6, для каждой итерации создавался новый сеанс. Доля успешных запусков — 80% против 72%, доля превышений времени ожидания — 32% против 40%, среднее время создания кэша снизилось на 10,5%. Экономия на уровне инструментов, без учёта постоянных накладных расходов, составила 15–25%. Вариант с jCodeMunch выявил категорию проблем, отсутствовавшую в другом варианте: поиск файлов-сирот с помощью find_importers — структурный запрос, на который встроенные инструменты не могут ответить без скриптов. Полный отчёт: benchmarks/ab-test-naming-audit-2026-03-18.md

Упоминания

Все упоминания →


Установка

Установка в один клик
Рекомендуемый вариант: одна команда
uv tool install jcodemunch-mcp
jcodemunch-mcp init

Не нужно настраивать виртуальное окружение, изменения не вносятся в системную установку Python, а команда работает без дополнительной настройки в дистрибутивах с PEP 668 (Ubuntu 24.04+, Debian 12+), где обычная команда pip install недоступна. Ещё не установили uv?

Команда init автоматически определяет MCP-клиенты (Claude Code, Claude Desktop, Cursor, Windsurf, Continue, Codex, opencode, Gemini CLI, Cline, VS Code с Copilot), добавляет записи в их конфигурации и устанавливает хуки, которые поддерживают индекс в актуальном состоянии, не добавляя ничего в контекст модели: переиндексируют код после изменений, создают контрольную точку перед сжатием контекста и уведомляют вас о завершении задачи. При необходимости команда также индексирует проект и проверяет конфигурационные файлы агента на лишние токены.

Два дополнительных компонента включаются по желанию, поскольку модель читает их при каждом подходящем ходе: --policy добавляет Code Exploration Policy в CLAUDE.md, AGENTS.md и файлы правил Cursor и Windsurf, а --guidance устанавливает хуки, которые помогают модели работать с Read/Grep/Glob/Bash, кратко инструктировать субагентов и восстанавливать контекст после сжатия.

Если установлен хук PreToolUse (--guidance или --strict) и задано JCODEMUNCH_HOOK_GREP_ANSWER=1, запрос Grep в индексированном репозитории один раз обрабатывается по индексу: хук отклоняет его и указывает результат search_text в качестве причины. Повторно отправленный запрос Grep выполняется как обычно. По умолчанию эта функция отключена. Если хуки уже установлены, init оставляет их без изменений; команда jcodemunch-mcp init --remove-guidance удаляет их, предварительно создав резервные копии.

Попросите использовать jcodemunch по имени. Скажите агенту использовать jcodemunch, например: «используй jcodemunch, чтобы найти, где обрабатывается X». В проведённых нами сессиях агенты использовали его, когда пользователь называл инструмент по имени.

Другие способы установки

КомандаКогда использовать
uvx jcodemunch-mcpУстановка не требуется. Сервер запускается во временном окружении, и файлы не остаются на диске. Записи клиентов, создаваемые командой init, и так запускают сервер этим способом, поэтому в большинстве конфигураций используется именно он. ⚠ Исключение — хуки принудительного контроля: они запускаются из оболочки с минимальным PATH и ищут исполняемый файл по имени, поэтому для их работы потребуется uv tool install (или pipx/pip).
pipx install jcodemunch-mcpЕсли вы уже используете pipx как стандартный инструмент
pip install jcodemunch-mcpВ виртуальном окружении, которым вы управляете самостоятельно

Проверьте установку:

jcodemunch-mcp --version
Ручная настройка Claude Code
claude mcp add -s user jcodemunch -- uvx jcodemunch-mcp

Устанавливать сервер отдельно не нужно: uvx загружает и запускает его по запросу. Хотите, чтобы сервер был доступен в PATH (это также необходимо для хуков принудительного контроля)? Выполните uv tool install jcodemunch-mcp, а затем claude mcp add -s user jcodemunch jcodemunch-mcp.

Затем попросите агента отдавать предпочтение этим инструментам. Это важнее, чем кажется: установка делает инструменты доступными, но не избавляет агента от привычки читать файлы целиком. Достаточно добавить одну строку в CLAUDE.md:

Call the jcodemunch_guide tool and strictly follow its instructions.

Используете Cursor, Windsurf, Codex CLI, Antigravity, Gemini CLI, Qwen Code, Kiro, Cline, Zed, Goose, Hermes, Odysseus или Paperclip? Конфигурации всех проверенных клиентов собраны в CLIENTS.md. Дополнительные возможности по желанию (локальный семантический поиск и AI-сводки для разных провайдеров) описаны в QUICKSTART.md; системные компоненты, которые задействует каждый из этих модулей, перечислены в SECURITY.md.


Быстрый старт

Подробное руководство: QUICKSTART.md. Краткий вариант, который можно выполнить в агенте после init:

  • Попросите: «Индексируй этот репозиторий с помощью jcodemunch».

  • Попросите: «С помощью jcodemunch найди функцию, которая обрабатывает аутентификацию, и покажи её исходный код».

Агент должен использовать search_symbols и get_symbol_source и вернуть десятки строк вместо целых файлов. Проверьте результат с помощью get_session_stats: инструмент показывает количество переданных токенов и экономию за сессию. Именно эти данные отображаются на счётчике.

Хотите пропустить первичную индексацию популярных фреймворков? Используйте готовые стартовые пакеты: jcodemunch-mcp install-pack --list (для бесплатных пакетов лицензия не нужна).


Возможности

  • Получайте отдельный символ вместо загрузки целого файла. get_symbol_source возвращает точное тело функции с точностью до байта. Это подходит для большинства изменений, затрагивающих одну функцию в файле на 700 строк, и позволяет сэкономить около 95% токенов при чтении.

  • Собирайте контекст для всей задачи за один вызов. assemble_task_context определяет намерение задачи, извлекает опорные символы и запускает нужную последовательность инструментов в рамках одного бюджета токенов. plan_turn выбирает инструменты для текущего хода до первого чтения.

  • Задавайте структурные вопросы, на которые grep не ответит. Для этого доступны find_importers, get_blast_radius, get_call_hierarchy, find_dead_code, get_changed_symbols, get_hotspots, поиск антипаттернов с помощью search_ast и другие инструменты. Два из них звучат похоже, но работают по-разному: check_references показывает, где используется имя (места импорта и все файлы, где оно упоминается), а find_references ищет, кто импортирует символ, используя только граф импортов, поэтому места вызова он не обнаружит. get_call_hierarchy показывает непосредственных вызывающих: в каждой последующей строке указан вызывающий код, через который найден вызов.

  • Проверяйте рискованные изменения до их внесения и понимайте, когда достаточно данных. Инструменты check_edit_safe, check_delete_safe, get_pr_risk_profile и plan_refactoring формируют готовые к редактированию блоки {old_text, new_text}. Проверки безопасности возвращают stop_rule.terminal: значение true означает, что дальнейшие вызовы jcodemunch не изменят результат, поэтому повторно запускать find_importers или check_references для перепроверки бессмысленно. Это означает, что результат окончательный, а не что изменение безопасно. Статусы corpus_inadequate (индекс не позволяет подтвердить отсутствие) и dynamic_import_boundary (файл может быть загружен через динамический импорт или, для элемента управления или сборки .NET, по пути, который индекс не отслеживает) никогда не являются окончательными; описание каждого инструмента перечисляет все возможные результаты. check_rename_safe возвращает safe: null, а не true, если граф импортов не позволил найти файл символа: в таком случае файлы, где он используется, не проверялись. get_pr_risk_profile возвращает risk_score: null и заполняет unmeasurable_axes, если не удалось оценить область влияния; CI-проверка должна завершаться ошибкой при значении null. Передайте серверу вывод вашей системы проверки типов (jcodemunch-mcp import-trace --diagnostics : mypy --output json, pyright --outputjson, tsc --pretty false, ruff --output-format json), и инструменты check_edit_safe, get_changed_symbols, get_pr_risk_profile и get_symbol_provenance укажут, какие символы уже отмечены системой проверки и на момент какого коммита. Проверка не запускается автоматически. Результат false называет конкретную причину, из-за которой ответ будет другим.

  • Доверяйте результатам. Оценки уверенности откалиброваны, актуальность индекса отмечается отдельно, для выводов об отсутствии предусмотрены гарантии полноты охвата, ссылки проверяются компилятором через импорт SCIP, а перед передачей LLM секреты автоматически маскируются.

  • Автоматически поддерживайте индекс в актуальном состоянии. Режимы наблюдения, хуки агента и расширение для VS Code сокращают задержку между изменением кода и обновлением индекса.

Это краткий обзор. Полное описание всех инструментов (более 90 инструментов за шестью основными), компактного формата MUNCH, подтверждений на основе доказательств, аннотаций для выноса работы и инструментов анализа эффективности сессий приведено в CAPABILITIES.md. О внутреннем устройстве читайте в UNDER_THE_HOOD.md.

Новое
  • v1.108.400 (2026-10-27) — текстовый поиск возвращает найденный код, а вместо устаревшего имени инструмента указывается его замена

  • v1.108.399 (2026-10-26) — описания четырёх основных инструментов начинаются с вопроса, на который отвечает каждый из них

  • v1.108.398 (2026-10-25) — семантический поиск и все дополнительные компоненты устанавливают зафиксированную версию filelock для любой версии Python

  • v1.108.397 (2026-10-24) — при обрезании результатов поиска указываются пропущенные файлы, а в file_pattern можно использовать фигурные скобки


Когда это помогает, а когда — нет?

СценарийСтандартный инструментjCodeMunchЭкономия
Изменить одну функцию в файле на 700 строкRead → 700 строкget_symbol_source → 30 строк~95%
Разобраться в структуре файлаRead → всё содержимоеget_file_outline → имена и сигнатуры~80%
Найти файл, который нужно изменитьGrep по множеству файловsearch_symbols → точное совпадениесопоставимая
Для изменения нужен контекст всего файлаRead → всё содержимоеget_file_content → всё содержимое~0%
«Что сломается, если изменить X?»Grep по имени, затем Read каждого совпаденияget_blast_radius → затронутые файлы и символыне измерялась

Наибольшую пользу jCodeMunch приносит при точечных изменениях — одной функции, метода или класса. Именно так устроена большая часть реальной работы с кодом. Если задача действительно требует видеть файл целиком (например, перестроить состояние на уровне файла или изменить порядок логики, распределённой по сотням строк), преимуществ нет. Лучше всего jCodeMunch подходит для больших репозиториев, незнакомых кодовых баз, исследования кода с помощью агентов, рефакторинга и анализа последствий изменений, а также для команд, которые хотят сократить расходы на токены AI, не снижая возможности агентов.

Языки: более 70 языков благодаря tree-sitter, включая Python, JavaScript/TypeScript, Go, Rust, Java, C/C++, C#, PHP, Ruby, Swift и Kotlin. Полный список: ПОДДЕРЖКА ЯЗЫКОВ. Монорепозитории: поддерживаются; предусмотрены инкрементальная индексация, обнаружение участников workspace и ограничение области поиска подкаталогом.


Отложенная загрузка схем инструментов (поиск инструментов Anthropic)

Если вы подключаете jCodeMunch через MCP connector к модели с поддержкой поиска инструментов, можно полностью исключить схемы сервера из префикса контекста и позволить Claude загружать только два-три инструмента, необходимых для запроса. Не нужно задавать defer_loading для каждого инструмента отдельно — настройте этот параметр один раз для всего сервера:

{
  "mcp_servers": [
    { "type": "url", "url": "https://your-host/mcp", "name": "jcodemunch" }
  ],
  "tools": [
    { "type": "tool_search_tool_bm25_20251119", "name": "tool_search_tool_bm25" },
    {
      "type": "mcp_toolset",
      "mcp_server_name": "jcodemunch",
      "default_config": { "defer_loading": true },
      "configs": {
        "resolve_repo":       { "defer_loading": false },
        "search_symbols":     { "defer_loading": false },
        "get_ranked_context": { "defer_loading": false }
      }
    }
  ]
}

Отправьте эту конфигурацию с beta-заголовком mcp-client-2025-11-20. Необходимы обе части: один только mcp_servers приведёт к ошибке проверки, как и mcp_toolset без соответствующего mcp_server_name.

⚠ MCP connector принимает URL, поэтому этот вариант применим к jCodeMunch, работающему через sse или streamable-http (jcodemunch-mcp serve --transport streamable-http), но не к стандартной локальной настройке stdio. При работе через stdio решение об отложенной загрузке схем принимает клиент; управлять им можно с помощью tool_surface: "counter" ниже.

Блок configs в примере следует рекомендациям Anthropic: оставьте 3–5 наиболее часто используемых инструментов доступными сразу, чтобы при типичных запросах не выполнять дополнительный поиск. Параметры в configs для отдельных инструментов переопределяют default_config.

Отложенный инструмент находится по имени и описанию, поэтому описания основных инструментов начинаются с вопроса, на который каждый из них отвечает, — в формулировках, привычных агенту: search_symbols — «найти, где определена функция, класс или метод», get_symbol_source — «прочитать или показать исходный код», get_call_hierarchy — «кто вызывает эту функцию или метод», check_references — «где используется функция, класс или другой идентификатор».

Определения отложенных инструментов исключаются из префикса системного запроса и добавляются в виде блоков tool_reference, когда Claude находит их. Благодаря этому кэширование запросов сохраняется: это не тот механизм динамического списка инструментов, который нарушает работу кэша. Хотя бы один инструмент в запросе должен оставаться доступным сразу, иначе API вернёт ошибку 400.

⚠ Это не тот же механизм, что и наш tool_surface: "counter"; использовать оба не обязательно. Поиск инструментов выполняется на стороне хоста и работает со всеми подключёнными MCP-серверами. Counter работает на стороне сервера, совместим с любым хостом, в том числе не поддерживающим поиск инструментов, и настраивается командой init при первой установке. Выберите вариант, который поддерживает ваш хост. О настройке Counter см. CONFIGURATION.md, а узнать, какие инструменты доступны в вашей установке, можно с помощью jcodemunch-mcp surface.


Политика конфиденциальности

jCodeMunch работает на вашем компьютере. Ваш код, пути к файлам и запросы остаются на нём: индекс хранится в ~/.code-index/, и его можно удалить, удалив эту папку.

По умолчанию сервер отправляет только анонимную статистику экономии: случайный ID, количество сэкономленных токенов с момента последней отправки и общий итог за всё время. Код, пути и запросы не отправляются. Отключить отправку можно параметром "share_savings": false в ~/.code-index/config.jsonc или переменной JCODEMUNCH_SHARE_SAVINGS=0. Плагин Claude Code отключает её автоматически.

Любые другие обращения к сети происходят только по вашему решению — при запуске соответствующих функций или их включении. Все они перечислены в разделе «Безопасность, конфиденциальность и фоновые процессы». Полный текст политики: https://jcodemunch.com/privacy.php

Безопасность, конфиденциальность и фоновые процессы

При установке через uvx или плагин, если команда init не запускалась, в первом ответе инструмента один раз на компьютере появляется строка license_notice. Она не выводится, если настроен лицензионный ключ, команда init уже вывела строку с лицензией, установка выполняется в CI или на удалённом runner (CI=true, CLAUDE_CODE_REMOTE=true) либо задано JCODEMUNCH_LICENSE_NOTICE=0.

Кратко основные сведения изложены в Политике конфиденциальности выше. Система изначально рассчитана на локальную работу: индексы хранятся в ~/.code-index/, а единственное сетевое действие базового пакета по умолчанию — отправка анонимной статистики экономии (случайный ID и суммарное количество токенов, без кода, путей и персональных данных; отключается параметром share_savings: false). Все действия сервера, кроме ответа на вызов инструмента (отслеживание файлов, дополнительная служба входа, проверка лицензии, загрузка моделей, отправка отчётов организации), либо требуют явного включения, либо могут быть отключены. Они видимы и обратимы. Полный перечень, а также меры защиты от обхода каталогов, работы с символическими ссылками и раскрытия секретов приведены в SECURITY.md. По умолчанию init не создаёт файл политики и не устанавливает hook, вывод которого читает модель. Для этого предусмотрены отдельные команды init --policy и init --guidance; удалить их из существующей установки можно командой init --remove-guidance.

Переопределение набора грамматик (#608). Зависимость tree-sitter-language-pack зафиксирована на версии \libs; команда jcodemunch-mcp install-status выводит путь на любой платформе. Загрузка выполняется при первом разборе языка, поэтому установка без доступа к сети не разбирает файлы. Грамматика nim изменилась в upstream, поэтому в файлах nim символы не обнаруживаются. В манифесте также отсутствуют autohotkey, ejs и verse, но это не создаёт проблем: эти три языка разбирают собственные экстракторы jCodeMunch, а не tree-sitter. При установке с набором грамматик версии 1.x об этом сообщается: каждый результат index_folder содержит блок grammar_pack и предупреждение с указанием версии, каталога кэша и каждого языка, грамматика которого не прошла проверку. Команда jcodemunch-mcp install-status выводит ту же информацию. Отказ от фиксации версии — отдельное решение, которое требует предварительно определить, как будет обеспечиваться работа без доступа к сети.


Настройки для отдельного проекта

Большинство параметров задаются в глобальном файле ~/.code-index/config.jsonc, однако для отдельного репозитория их можно переопределить, добавив файл .jcodemunch.jsonc в его корень. Этот файл работает как слой переопределения: указанные в нём параметры имеют приоритет, а отсутствующие берутся из глобальной конфигурации, затем — из встроенных значений по умолчанию. Поэтому в файле достаточно указать только отличающиеся настройки.

// <your-repo>/.jcodemunch.jsonc
{
  "max_file_size": 1048576,
  "languages": ["python", "typescript", "racket"]
}

Объявление определяющих форм Racket

В проектах Racket часто создают собственные определяющие формы с помощью define-syntax. Статический парсер не может знать, какие привязки они создают: (defstep (check-admin) ...) для него неотличима от вызова функции. Объявив такие формы, вы сделаете их привязки доступными для поиска:

{
  "racket_definition_forms": {
    "defstep":  "function",
    "defstudy": "constant",
    "defvar":   "constant",
    "define-schema": "class"
  }
}

Каждая запись связывает имя формы с типом создаваемой привязки: function, constant, class или type. Место, где указано имя, определяется по исходному коду, а не в объявлении: в (defstep (check-admin) ...) берётся первый элемент списка параметров, а в (defstudy consent ...) — отдельный символ. Поэтому форма работает в обоих вариантах.

⚠ Это утверждение, которое jCodeMunch не может проверить. Если объявление неверно, в индекс попадёт имя, которое Racket на самом деле не связывает. Кроме того, объявления проверяются только после всех встроенных форм. Поэтому объявление define или struct ничего не изменит: приоритет имеет встроенная обработка.

Объявление синтаксиса Racket #lang

Строка #lang указывает на reader, а парсер Racket в jCodeMunch обрабатывает S-выражения. Встроенные языки дистрибутива (racket/*, typed/racket*, s-exp, info, at-exp … и языки документов scribble/*, pollen, punct, markdown …) уже известны парсеру. Язык, созданный в проекте, ему неизвестен: по умолчанию он рассматривается как документ — символы не извлекаются, но текст доступен для поиска. Чтобы задать синтаксис такого языка, добавьте его в конфигурацию:

{
  "racket_langs": {
    "conscript": "at-exp",
    "mylang": "sexp"
  }
}

sexp — это обычные S-выражения; at-exp — текстовые блоки at-exp на основе Racket (разбираются с @ в качестве командного символа, точно так же, как в #lang at-exp, поэтому текст с символами ;, " # или | воспринимается как текст); text — язык документов, содержимое которых не разбирается. Запись также распространяется на подъязыки: conscript соответствует и conscript/with-require. Язык можно не только повысить до языка кода, но и понизить до языка документов. Если reader языка at-exp использует другой командный символ, задайте его объектом — "mylang": {"tier": "at-exp", "command_char": "◊"} — так же, как make-at-readtable в Racket принимает #:command-char.

Оба ключа меняют результат разбора неизменённых файлов. Поэтому изменение любого из них фиксируется в индексе и при следующем индексировании запускает полный повторный разбор (rebuild_reason: "racket_config_changed"). Изменять файлы или очищать индекс не нужно. Если индекс с файлами Racket был создан до появления этой отметки, он также будет повторно обработан один раз (rebuild_reason: "racket_index_predates_gate").


Документация

ДокументОписание
QUICKSTART.mdОт пустого проекта до индексированного — за три шага
CLIENTS.mdПроверенные настройки для каждого MCP-клиента
USER_GUIDE.mdПолный справочник по инструментам, рабочие процессы и рекомендации
CAPABILITIES.mdПолный справочник возможностей, выходящий за рамки краткого обзора
CONFIGURATION.mdСправочник по конфигурационному файлу, настройкам управления токенами, уровням инструментов и Counter
UNDER_THE_HOOD.mdТехническое руководство: вердикты, внутреннее устройство ранжирования, контракты происхождения данных
ARCHITECTURE.mdВнутреннее устройство, модель хранения и точки расширения
GROQ.mdGroq Remote MCP, CLI gcm, GitHub Action speedreview
HEADLESS.mdИспользование jCodeMunch с claude -p
AGENT_HOOKS.mdХуки агентов и политики промптов
LANGUAGE_SUPPORT.mdПоддерживаемые языки и особенности разбора
SECURITY.mdМеханизмы защиты, перемещение данных и фоновые процессы
TROUBLESHOOTING.mdРаспространённые проблемы и способы их решения
CHANGELOG.md · ROADMAP.mdИстория выпусков и планы развития

Лицензирование и коммерческое использование

jCodeMunch-MCP распространяется по лицензии jCodeMunch-MCP Dual-Use License (полный текст). Для некоммерческого использования лицензия бесплатна. Для коммерческого использования требуется платная лицензия — разовый платёж компании jMunch LLC через Stripe:

Только jCodeMunch: Builder, $79 (1 разработчик) · Studio, $349 (до 5 разработчиков) · Platform, $1,999 (внутреннее развёртывание во всей организации)

Полный комплект jMunch (код + документация + данные): Trio Builder, $99 · Trio Studio, $449 · Trio Platform, $2,499

Сомневаетесь, окупится ли покупка? Подставьте свои данные в калькулятор рентабельности или отправьте версию для финансовой команды тому, кто утверждает расходы. Гарантия простая: если jCodeMunch не окупится, платить за jCodeMunch не придётся.

Условия использования: сохраняйте уведомление об авторских правах, явно отмечайте внесённые изменения и оставляйте имя первоначального автора без изменений (он, мягко говоря, высокого мнения о себе), а при распространении исходного кода обязательно указывайте заметное уведомление об изменениях. Запрещено переименовывать Software, менять его бренд или публиковать его в общедоступном реестре пакетов. Software предоставляется «КАК ЕСТЬ», без каких-либо гарантий. Применяются условия LICENSE.

Активация лицензии

После покупки добавьте ключ в глобальный файл конфигурации ~/.code-index/config.jsonc (или в config.jsonc внутри CODE_INDEX_PATH, если эта переменная задана):

"license_key": "YOUR-KEY"

Этот файл считывается каждым клиентом, запускающим сервер, поэтому достаточно настроить его один раз. В CI или контейнере вместо этого задайте переменную окружения JCODEMUNCH_LICENSE_KEY; она имеет приоритет над значением в файле конфигурации.

Затем проверьте лицензию:

jcodemunch-mcp license

Если ключ действителен, команда выводит License: licensed и указывает уровень лицензии. Также команда сообщит, если ключ не задан, сервер лицензий не распознал его или сервер недоступен для проверки. Команда jcodemunch-mcp license --key YOUR-KEY проверяет ключ, не сохраняя его. Если сервер запускается через uvx, используйте команду uvx jcodemunch-mcp license.

Для администраторов

В Claude Code и GitHub Copilot (приложение Copilot, Copilot CLI, VS Code и IDE JetBrains) администратор может разрешить MCP-серверы с помощью allowedMcpServers в управляемых настройках. Локальный сервер соответствует записи serverCommand, только если команда и каждый аргумент полностью совпадают (Claude Code, Copilot). Поэтому добавьте в список все варианты запуска, которыми пользуются ваши команды:

{
  "allowedMcpServers": [
    { "serverCommand": ["uvx", "jcodemunch-mcp"] },
    { "serverCommand": ["jcodemunch-mcp"] }
  ]
}
  • ["uvx", "jcodemunch-mcp"] — такую запись jcodemunch-mcp init добавляет для Claude Code, Claude Desktop и других клиентов с настройкой в формате JSON. Её же регистрирует команда claude mcp add jcodemunch -- uvx jcodemunch-mcp.

  • ["jcodemunch-mcp"] подходит для установок через pip, pipx или uv tool install, когда сервер запускают по имени.

  • В плагине Claude Code закреплена версия, с которой он поставляется: ["uvx", "jcodemunch-mcp==X.Y.Z"]. Номер версии указан в plugin/jcodemunch/.claude-plugin/plugin.json, поэтому эту запись нужно обновлять при каждом обновлении плагина.

В Claude Code добавьте "allowManagedMcpServersOnly": true, чтобы разрешённые серверы определялись только управляемым списком (документация). Codex использует собственную конфигурацию, поэтому эти настройки на него не распространяются.

Для подключения через реестр GitHub используйте идентификатор сервера io.github.jgravelle/jcodemunch-mcp. Этот способ пока доступен в публичной предварительной версии. GitHub рекомендует использовать список разрешённых серверов в управляемых настройках: он безопаснее и общедоступен (документация).

Во всех конфигурациях указывайте серверу имя jcodemunch, чтобы jCodeMunch отображался под одним именем. API метрик использования Copilot учитывает попытки подключения и повторного подключения MCP-сервера для каждого пользователя, а не вызовы инструментов (документация).

Claude Code: установите плагин на каждый компьютер. Добавьте эту конфигурацию в управляемые настройки: в консоль администратора claude.ai, политику MDM или managed-settings.json. При следующем запуске сессии каждый компьютер зарегистрирует маркетплейс и установит плагин. Если пользователь отключит его на своём уровне, это не помешает загрузке плагина (документация):

{
  "extraKnownMarketplaces": {
    "jmunch": { "source": { "source": "github", "repo": "jgravelle/jcodemunch-mcp" } }
  },
  "enabledPlugins": { "jcodemunch@jmunch": true }
}

Если источники маркетплейсов ограничены с помощью strictKnownMarketplaces, добавьте туда { "source": "github", "repo": "jgravelle/jcodemunch-mcp" }. В противном случае маркетплейс будет отклонён (документация).

Команды Cursor. Администратор Cursor может установить jCodeMunch для всех участников команды через командный маркетплейс: откройте Dashboard, затем Plugins & MCPs и выберите Add Marketplace (документация). В репозитории маркетплейса создайте папку плагина jcodemunch/ с двумя файлами:

jcodemunch/.cursor-plugin/plugin.json

{
  "name": "jcodemunch",
  "displayName": "jCodeMunch",
  "description": "Local code index: the function an agent asks for, its callers and what a change would break."
}

jcodemunch/mcp.json

{
  "mcpServers": {
    "jcodemunch": { "command": "uvx", "args": ["jcodemunch-mcp"] }
  }
}

Затем добавьте запись для плагина в .cursor-plugin/marketplace.json репозитория, следуя шаблону, на который ссылается документация Cursor. Установите для параметра Plugin Installation значение Required, чтобы плагин установился для всех участников без возможности отказаться, или Default On, чтобы установить его, но оставить участникам возможность удалить. На плагины распространяется список разрешённых MCP-серверов Cursor (документация), поэтому разрешите там и uvx jcodemunch-mcp.

Команды JetBrains. Для планов Business и Enterprise администратору с разрешением Manage AI settings нужно открыть JetBrains Console, затем AI governance, MCP и Add MCP server, после чего добавить сервер типа Command: имя — jcodemunch, команда — uvx, аргументы — jcodemunch-mcp (документация). Затем добавьте сервер в политику AI: политика по умолчанию применяется ко всем пользователям с доступом к AI, а пользовательская — к выбранным пользователям и группам (документация). Сервер будет добавлен пользователям, но возможность добавлять другие серверы не ограничивается.

Названия инструментов остаются неизменными в ветке 1.x. Список разрешённых инструментов или файл политики, в котором указаны инструменты jCodeMunch, продолжит работать: после переименования или объединения инструмент будет доступен под прежним именем как минимум 30 дней. Такие имена приводятся в CHANGELOG. По истечении этого срока вызов инструмента под старым именем вернёт ошибку с указанием нового имени.


Часто задаваемые вопросы

Сколько токенов Claude / Opus можно сэкономить?

В сценариях с интенсивным поиском по коду количество токенов, затрачиваемых на чтение кода, обычно сокращается на 86–99%. Средний результат в тестах составил 96,2% (в 26,5 раза) по сравнению с агентом, который использует grep и читает найденные фрагменты. Тестирование охватывало 15 задач и 3 репозитория. Результаты отдельных запросов варьируются от 7,6 до 77,2 раза. Методика описана в TOKEN_SAVINGS.md и каталоге benchmarks/.

Чем jCodeMunch отличается от RAG и инструментов на основе grep?

jCodeMunch ищет на уровне символов с точностью до байта: находит функции, классы, импортирующие модули, радиус влияния изменений и иерархии. В отличие от него, RAG работает с приблизительно подобранными фрагментами, а grep — с совпадениями в строках кода, которые агенту всё равно нужно читать и анализировать.

Можно ли бесплатно пользоваться jCodeMunch в личных целях?

Да. Для коммерческого использования нужна лицензия; подробности приведены выше.

Где найти подробный разбор на X?

Возможности: CAPABILITIES.md. Настройка: CONFIGURATION.md. Клиенты: CLIENTS.md. Внутреннее устройство: UNDER_THE_HOOD.md. Или вся информация сразу: jcodemunch.com.


Дополнительные материалы: OSS code-health observatory (еженедельные снимки по шести показателям для Express, FastAPI, Gin, Django и других проектов) · Token Cost Radar (ежедневная аналитика расходов на токены AI) · jMunch Console (бесплатный графический интерфейс по лицензии MIT для обновления в один клик)