code-index
Rust code index MCP server, native 1C:Enterprise (BSL) support. 32 tools, AST for 14 languages.
Open source Open in the app JSON README (API)
About
Rust code index MCP server, native 1C:Enterprise (BSL) support. 32 tools, AST for 14 languages.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- regsorm
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.0.2
- Stars
- 106
- Forks
- 14
- Open pull requests
- 1
- Last push
- 2026-08-28T07:30:28Z
- Repository state
- ativo
- Language
- Rust
- License
- MIT
- Added
- 2026-08-29 03:02:11
- Updated
- 2026-09-05 11:00:26
- Origin id
io.github.Regsorm/code-index
README
<a href="https://infostart.ru/1c/tools/2677918/" title="Публикация на Инфостарте">
<img src="https://infostart.ru/bitrix/templates/sandbox_empty/assets/tpl/abo/img/logo.svg" alt="Infostart" height="32">
</a>
---
# code-index-mcp
[](https://github.com/Regsorm/code-index-mcp/releases/latest)
[](https://www.npmjs.com/package/@regsorm/code-index-mcp)
[](LICENSE)
**Поиск по коду для ИИ-агентов. Один бинарник, индекс в SQLite, ответ за миллисекунды.
Разбирает выгрузки 1С:Предприятие 8.3 — и из Конфигуратора, и из 1С:EDT.**
[Полное руководство](README_RU.md) · [English](README_EN.md) · [Документация](docs/) · [Журнал изменений](CHANGELOG.md)
---
## Установка
### Windows — одной командой
```powershell
irm https://raw.githubusercontent.com/Regsorm/code-index-mcp/main/install.ps1 | iex
```
Скачивает последний выпуск в `C:\tools\code-index`, запоминает папку в
переменной окружения, создаёт заготовку файла настроек и печатает готовый блок
для `.mcp.json`.
С параметрами — папка установки, папка с исходниками, автозапуск при входе в
систему:
```powershell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Regsorm/code-index-mcp/main/install.ps1))) `
-InstallDir 'D:\code-index' -Repo 'main=D:\Repo1C' -RegisterAutostart
```
Автозапуск идёт через папку автозагрузки пользователя: прав администратора не
требует, окон не показывает. Остальные параметры — `-Flavor core` для сборки
без 1С, `-Version 1.0.0` для конкретного выпуска, `-Port` и `-DaemonPort`, если
порты по умолчанию заняты. Полный список — `Get-Help .\install.ps1 -Detailed`.
### Windows — вручную, готовый архив из выпуска
Скачивает последний выпуск, распаковывает в `C:\tools\code-index` и запоминает
эту папку в переменной окружения:
```powershell
$dst = 'C:\tools\code-index'
New-Item -ItemType Directory -Force $dst | Out-Null
$url = (Invoke-RestMethod https://api.github.com/repos/Regsorm/code-index-mcp/releases/latest).assets |
Where-Object name -eq 'bsl-indexer-windows-x64.zip' |
Select-Object -ExpandProperty browser_download_url
Invoke-WebRequest $url -OutFile "$env:TEMP\code-index.zip"
Expand-Archive "$env:TEMP\code-index.zip" -DestinationPath $dst -Force
setx CODE_INDEX_HOME $dst
```
`bsl-indexer` — сборка с поддержкой 1С (32 инструмента). Нужна работа без 1С —
возьмите `code-index-windows-x64.zip` (20 инструментов). Для Linux и macOS в том
же выпуске лежат `*-linux-x64.tar.gz` и `*-macos-arm64.tar.gz`.
### npm
```bash
npm install -g @regsorm/code-index-mcp
npx @regsorm/code-index-mcp serve --path /путь/к/репозиторию
```
Шаг `postinstall` скачивает готовый бинарник под вашу платформу — ничего не
компилируется. Пакет есть и в [реестре MCP](https://registry.modelcontextprotocol.io/)
под именем `io.github.Regsorm/code-index`. В обёртке только сборка без 1С.
### Сборка из исходников
```bash
git clone https://github.com/Regsorm/code-index-mcp.git
cd code-index-mcp
cargo build --release -p code-index # без 1С
cargo build --release -p bsl-indexer --features enrichment # с поддержкой 1С
```
Нужен Rust 1.77+.
## Подключение к клиенту
Общий процесс по HTTP — один индекс на все сессии и все проекты:
```json
{
"mcpServers": {
"code-index": {
"type": "http",
"url": "http://127.0.0.1:8011/mcp"
}
}
}
```
Отдельный процесс на сессию (`stdio`), без фонового демона:
```json
{
"mcpServers": {
"code-index": {
"command": "npx",
"args": ["-y", "@regsorm/code-index-mcp", "serve", "--path", "."]
}
}
}
```
Работает с Claude Code, Cursor, VS Code, LibreChat — с любым клиентом MCP.
Настройка фонового демона, список репозиториев, тонкие параметры —
[полное руководство](README_RU.md#настройка-фонового-демона-v05).
## Зачем это нужно
Языковая модель без индекса ищет по коду тем же способом, что и человек без среды
разработки: перебором. Один вопрос «кто вызывает эту процедуру» превращается в
десяток последовательных обходов файлов, каждый из которых читает тысячи файлов и
возвращает в контекст модели куски текста — вместе с оплатой этих кусков.
`code-index` делает работу заранее: разбирает исходники в синтаксическое дерево,
складывает символы, тела, вызовы и метаданные в SQLite и отдаёт агенту готовый
ответ по протоколу MCP. Модель получает три строки вместо трёх файлов.
## Цифры
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/bench-summary-dark.svg">
<img alt="В среднем в 2,04 раза дешевле по токенам, в 1,78 раза быстрее, 51 % экономии за сеанс"
src="docs/bench-summary-light.svg" width="880">
</picture>
| Кодовая база | Файлов | Полная индексация | Запуск на готовом индексе |
|---|---:|---:|---:|
| 1С:Управление Торговлей | 57 072 | 2 мин 41 с | **2,3 с** |
| 1С:Бухгалтерия предприятия | 88 284 | 5 мин 51 с | **5,3 с** |
| сайт на PHP | 157 772 | 13 мин 1 с | **8,0 с** |
**Полная индексация** — разбор всего с нуля, делается один раз. У Бухгалтерии эти
5 мин 51 с складываются так: 2 мин 38 с ядро (синтаксические деревья и запись),
1 мин 58 с надстройка 1С (метаданные, формы, права, граф вызовов), 56 с сброс
базы на диск. Дальше правки подхватываются по одной, за миллисекунды.
**Запуск на готовом индексе** сверяет время правки и размер каждого файла — ни
одного чтения содержимого, ни одного хеша.
| | |
|---|---|
| Ответ на запрос | около 10 мс по HTTP, повторный из кэша — доли миллисекунды |
| Размер бинарника | 39 МБ без 1С, 41 МБ с 1С |
| Функций в индексе Управления Торговлей | 261 548 |
| Вызовов в графе там же | 1 962 941 |
Замеры сделаны на одной машине под Windows с обычным жёстким диском, август 2026.
## Инструменты
Каждый вызов принимает алиас репозитория, так что один сервер обслуживает
несколько кодовых баз сразу — в том числе с других машин.
**Поиск и навигация**
| | |
|---|---|
| `search_function` `search_class` | полнотекстовый поиск по функциям и классам |
| `get_function` `get_class` | точное имя → готовое тело; при промахе подсказывает похожие имена |
| `find_symbol` | символ любого рода: функция, класс, переменная, импорт |
| `get_imports` | импорты модуля или файла |
| `get_file_summary` | карта файла без чтения исходника |
**Граф вызовов**
| | |
|---|---|
| `get_callers` `get_callees` | кто вызывает процедуру и кого вызывает она |
| `find_path` | кратчайшая цепочка вызовов между двумя функциями |
| `get_call_tree` | дерево вызовов вниз или вверх на заданную глубину |
**Содержимое файлов**
| | |
|---|---|
| `read_file` | чтение с диапазоном строк; содержимое кода лежит в индексе, сжатое zstd |
| `list_files` `stat_file` | список файлов по маске и метаданные одного файла |
| `grep_body` | подстрока или регулярное выражение в телах функций и классов |
| `grep_code` `grep_text` | то же по всему тексту файлов кода и текстовых файлов |
| `search_text` | полнотекстовый поиск по текстовым форматам |
| `get_stats` `health` | состояние индекса и сервера |
**Для конфигураций 1С** (сборка `bsl-indexer`, появляются сами при наличии
репозитория с выгрузкой)
| | |
|---|---|
| `get_object_structure` | реквизиты с типами и синонимами, табличные части, измерения и ресурсы, предопределённые элементы, свойства проведения |
| `get_object_profile` | паспорт объекта одним вызовом: структура, формы, модули, связи |
| `get_form_handlers` | обработчики событий управляемой формы, с привязкой к элементу |
| `get_event_subscriptions` | подписки на события с фильтрами по источнику и событию |
| `get_data_links` `find_data_path` | граф связей данных: кто на кого ссылается и цепочка между двумя объектами |
| `find_references` | карта влияния: ссылки из метаданных, обращения в коде, права ролей |
| `get_register_writers` | регистраторы регистра и движения документа |
| `find_path_bsl` | цепочка вызовов процедур по графу выгрузки |
| `search_terms` | смысловой поиск процедур по именам, синонимам и комментариям |
| `get_role_rights` | права ролей на объект и права одной роли |
| `bsl_sql` | произвольный запрос на чтение к таблицам метаданных и графов |
## Что даёт поддержка 1С
- Разбираются обе формы выгрузки: XML из Конфигуратора и `.mdo` из 1С:EDT.
- Граф связей данных строится по ссылочным типам реквизитов, измерений и
табличных частей: для Бухгалтерии предприятия это 65 421 ребро.
- Из модулей извлекаются директивы компиляции (`&НаСервере`, `&НаКлиенте`) и
аннотации расширений (`&Вместо`, `&После`, `&Перед`) вместе с именем
переопределяемой процедуры.
- Понимаются оба синтаксиса BSL — русский и английский.
- Регистр имени объекта не важен: кириллические имена приводятся к записи из
конфигурации, в ответе имя показывается канонически.
Подробности — [docs/bsl-indexer.md](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` и других).
## Дальше
- [Полное руководство на русском](README_RU.md) — демон, конфигурация, CLI, архитектура
- [docs/operations.md](docs/operations.md) — эксплуатация: перезапуск, добавление репозиториев, диагностика
- [docs/bsl-indexer.md](docs/bsl-indexer.md) — сборка для 1С
- [CHANGELOG.md](CHANGELOG.md) — журнал изменений
## Участие
Ошибки и предложения — в [issues](https://github.com/Regsorm/code-index-mcp/issues),
вопросы и обсуждения — в [Discussions](https://github.com/Regsorm/code-index-mcp/discussions).
Как прислать правку — [CONTRIBUTING.md](CONTRIBUTING.md), об уязвимостях —
[SECURITY.md](SECURITY.md).
## Лицензия
MIT, см. [LICENSE](LICENSE).
Проект стоит на [tree-sitter](https://tree-sitter.github.io/),
[грамматике BSL от сообщества 1c-syntax](https://github.com/1c-syntax/tree-sitter-bsl),
[rusqlite](https://github.com/rusqlite/rusqlite), [rayon](https://github.com/rayon-rs/rayon)
и [Rust SDK для MCP](https://github.com/modelcontextprotocol/rust-sdk).