
code-index
io.github.RegsormPublished by GitHub account Regsormv1.15.6Updated Oct 29, 2026
Rust code index MCP server, native 1C:Enterprise (BSL) support. 37 tools, AST for 14 languages.
Overview
Local code-index server that pre-indexes source trees into SQLite so an assistant can search symbols, trace call graphs and read code cheaply, with native…
- What you can do
- Search and navigate symbols: full-text search over functions and classes, exact-name lookup, symbol/import lookup, file summaries
- Trace call graphs: callers, callees, shortest call path between functions, call trees by depth
- Inspect file content: line-ranged reads, file listing and metadata, regex/substring grep over bodies and whole files, text search, index health
- Query Git history: commit log, changed files between snapshots, diffs, historical file content
- Explore 1C configurations (BSL build): object structure and profiles, form handlers, event subscriptions, data-link graph, reference/impact maps, register writers, role rights, read-only SQL over metadata tables
- When to use it
- Useful when an assistant works on a large codebase and repeatedly greps and reads files to answer questions like who calls a procedure, which is token-expensive. Especially aimed at 1C:Enterprise 8.3 configurations exported from the Configurator or 1C:EDT, and at multi-language repositories that benefit from a persistent index.
- Requirements
- Runs locally as a stdio process, typically via npx of the npm package, which downloads a prebuilt binary for the platform. A background indexer daemon must be running and CODE_INDEX_HOME must be set, otherwise tools answer daemon_offline. Building from source needs Rust 1.77+. The npm wrapper ships the build without 1C support; the 1C-enabled build comes from release archives.
Installation
In SourceWeft
- Open code-index in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
code-index-mcp
Поиск по коду для ИИ-агентов. Один бинарник, индекс в SQLite, ответ за миллисекунды. Разбирает выгрузки 1С:Предприятие 8.3 — и из Конфигуратора, и из 1С:EDT.
Полное руководство · English · Документация · Журнал изменений
Выгрузки с именами файлов Unicode в NFC и NFD поддерживаются; для восстановления данных старого индекса нужна пересборка (версия данных 6).
Установка
Windows — одной командой
Скачивает последний выпуск в C:\tools\code-index, запоминает папку в
переменной окружения, создаёт заготовку файла настроек и печатает готовый блок
для .mcp.json.
С параметрами — папка установки, папка с исходниками, автозапуск при входе в систему:
Автозапуск идёт через папку автозагрузки пользователя: прав администратора не
требует, окон не показывает. Остальные параметры — -Flavor core для сборки
без 1С, -Version 1.0.0 для конкретного выпуска, -Port и -DaemonPort, если
порты по умолчанию заняты. Полный список — Get-Help .\install.ps1 -Detailed.
Windows — вручную, готовый архив из выпуска
Скачивает последний выпуск, распаковывает в C:\tools\code-index и запоминает
эту папку в переменной окружения:
bsl-indexer — сборка с поддержкой 1С (42 инструмента). Нужна работа без 1С —
возьмите code-index-windows-x64.zip (25 инструментов). Для Linux и macOS в том
же выпуске лежат *-linux-x64.tar.gz и *-macos-arm64.tar.gz.
Дальше — файл настроек, запуск, подключение клиента и автозапуск. Всё это без скриптов, по шагам: установка вручную (English).
npm
Шаг postinstall скачивает готовый бинарник под вашу платформу — ничего не
компилируется. Пакет есть и в реестре MCP
под именем io.github.Regsorm/code-index. В обёртке только сборка без 1С.
Сервер serve только читает индекс, строит его фоновый индексатор. Поэтому
должны быть запущены npx @regsorm/code-index-mcp daemon run и задана
переменная CODE_INDEX_HOME — иначе инструменты отвечают daemon_offline.
Настройка — в полном руководстве.
Сборка из исходников
Нужен Rust 1.77+.
Подключение к клиенту
Общий процесс по HTTP — один индекс на все сессии и все проекты. HTTP-сервер
встроен в программу, отдельный веб-сервер не нужен; по умолчанию он слушает
только 127.0.0.1:
Слушает только 127.0.0.1 и принимает только loopback-значения заголовка Host.
Сервер в сети (--host 0.0.0.0 или [me].ip в serve.toml) перечисляет имена
клиентов в [me].allowed_hosts либо в CODE_INDEX_ALLOWED_HOSTS — иначе /mcp
отвечает 403 Host header is not allowed. Подробности —
полное руководство.
Отдельный процесс на сессию (stdio) — клиент сам запускает сервер при открытии
сессии, порт не нужен. Фоновый индексатор (daemon run) при этом тоже должен
работать: сервер только читает индекс, а строит его индексатор. Без него
инструменты отвечают daemon_offline:
Работает с Claude Code, Cursor, VS Code, LibreChat — с любым клиентом MCP. Настройка фонового демона, список репозиториев, тонкие параметры — полное руководство.
Гард: чтение через индекс (необязательно)
Правило «по индексированным каталогам читай через code-index» модель под
нагрузкой забывает и уходит в обычное чтение файлов, которое в 3–10 раз
дороже по токенам. code-index-guard — хук PreToolUse для Claude Code и
Codex CLI: отклоняет обычное чтение, поиск и обход каталога только там, где
индекс отдаёт тот же файл, и подсказывает нужный инструмент. Новый, ещё не
проиндексированный или исключённый из индекса файл читается как обычно.
Сборка и установка — crates/code-index-guard.
Копия проекта с готовым индексом
code-index-copy делает копию проекта (файлы под контролем git или git worktree
на новой ветке) и переносит в неё базу индекса, так что индекс копии не строится
заново: демон копии при запуске только сверяет файлы с базой. Файлы исходника вне
git из базы копии убираются, конфиги демона и сервера выдачи копии пишутся сразу.
Подробности — crates/code-index-copy.
Зачем это нужно
Языковая модель без индекса ищет по коду тем же способом, что и человек без среды разработки: перебором. Один вопрос «кто вызывает эту процедуру» превращается в десяток последовательных обходов файлов, каждый из которых читает тысячи файлов и возвращает в контекст модели куски текста — вместе с оплатой этих кусков.
code-index делает работу заранее: разбирает исходники в синтаксическое дерево,
складывает символы, тела, вызовы и метаданные в SQLite и отдаёт агенту готовый
ответ по протоколу MCP. Модель получает три строки вместо трёх файлов.
Цифры
[В среднем в 2,04 раза дешевле по токенам, в 1,78 раза быстрее, 51 % экономии за сеанс]Полная индексация — разбор всего с нуля, делается один раз. У Бухгалтерии эти 5 мин 51 с складываются так: 2 мин 38 с ядро (синтаксические деревья и запись), 1 мин 58 с надстройка 1С (метаданные, формы, права, граф вызовов), 56 с сброс базы на диск. Дальше правки подхватываются по одной, за миллисекунды.
Запуск на готовом индексе сверяет время правки и размер каждого файла — ни одного чтения содержимого, ни одного хеша.
Замеры сделаны на одной машине под Windows с обычным жёстким диском, август 2026.
Инструменты
Каждый вызов принимает алиас репозитория, так что один сервер обслуживает несколько кодовых баз сразу — в том числе с других машин.
Поиск и навигация
Граф вызовов
Содержимое файлов
Git (включается git = true у записи [[paths]]; git_path — если репозиторий лежит выше индекса)
Даты — YYYY-MM-DD, YYYY-MM-DD HH:MM, YYYY-MM-DDTHH:MM; зону можно задать параметром tz (+03:00 или UTC), иначе берётся локальная зона исполняющей машины (в контейнере ноды это UTC, timezone есть в каждом ответе). Пути — от корня индекса (для подкаталога изменения вне его не видны; для bare — от корня репозитория). Shallow-клон отвергается с подсказкой git fetch --unshallow, сеть инструменты не используют, а правка git/git_path применяется без перезапуска.
Для конфигураций 1С (сборка bsl-indexer, появляются сами при наличии
репозитория с выгрузкой)
Что даёт поддержка 1С
- Разбираются обе формы выгрузки: XML из Конфигуратора и
.mdoиз 1С:EDT. - Граф связей данных строится по ссылочным типам реквизитов, измерений и табличных частей: для Бухгалтерии предприятия это 65 421 ребро.
- Из модулей извлекаются директивы компиляции (
&НаСервере,&НаКлиенте) и аннотации расширений (&Вместо,&После,&Перед) вместе с именем переопределяемой процедуры. - Понимаются оба синтаксиса BSL — русский и английский.
- Регистр имени объекта не важен: кириллические имена приводятся к записи из конфигурации, в ответе имя показывается канонически.
Подробности — docs/bsl-indexer.md.
Языки
Полный разбор синтаксиса: Python, JavaScript, TypeScript, Java, Rust, Go, PHP, C,
C++, C#, Ruby, Swift, 1С (BSL), HTML. Метаданные 1С — XML Конфигуратора и .mdo
из EDT. Плюс полнотекстовая индексация 50+ текстовых форматов (.md, .json,
.yaml, .toml, .sql и других).
Дальше
- Полное руководство на русском — демон, конфигурация, CLI, архитектура
- docs/operations.md — эксплуатация: перезапуск, добавление репозиториев, диагностика
- docs/bsl-indexer.md — сборка для 1С
- CHANGELOG.md — журнал изменений
Участие
Ошибки и предложения — в issues, вопросы и обсуждения — в Discussions. Как прислать правку — CONTRIBUTING.md, об уязвимостях — SECURITY.md.
Лицензия
MIT, см. LICENSE.
Проект стоит на tree-sitter, грамматике BSL от сообщества 1c-syntax, rusqlite, rayon и Rust SDK для MCP.
Source: README.md at commit 773ac4c
Tools
0Version history
25- v1.15.6LatestOct 29, 2026
- v1.15.4Oct 25, 2026
- v1.15.2Oct 23, 2026
- v1.15.1Oct 23, 2026
- v1.15.0Oct 22, 2026
- v1.14.1Oct 20, 2026
- v1.14.0Oct 15, 2026
- v1.13.1Oct 15, 2026
- v1.12.0Oct 14, 2026
- v1.11.0Oct 13, 2026
- v1.9.0Oct 12, 2026
- v1.8.6Oct 8, 2026
- v1.8.5Sep 27, 2026
- v1.8.4Sep 27, 2026
- v1.8.2Sep 27, 2026
- v1.8.1Sep 27, 2026
- v1.6.0Sep 25, 2026
- v1.5.1Sep 23, 2026
- v1.5.0Sep 22, 2026
- v1.4.2Sep 20, 2026
- v1.4.1Sep 20, 2026
- v1.4.0Sep 20, 2026
- v1.2.4Sep 19, 2026
- v1.2.3Sep 17, 2026
- v1.2.2Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts