code-index について
code-index は、AI コーディングエージェント向けにリポジトリを SQLite へ索引化する Rust 製 MCP サーバーです。1C:Enterprise のエクスポートを標準で扱い、コード検索、シンボルナビゲーション、呼び出しグラフ、Git 履歴、1C メタデータの照会を提供します。
主な機能
- 01SQLite ベースのリポジトリ索引
- 0214 言語の AST 解析
- 031C:Enterprise メタデータ用ツール
- 04シンボル検索と呼び出しグラフ
- 05コードとテキストの検索
- 06Git 履歴と差分ツール
活用シーン
- 01コードベース全体で呼び出し元や呼び出し先を検索
- 021C 構成オブジェクトと参照を調査
- 03索引済みソースやテキストファイルを検索
- 04リポジトリの履歴とファイル変更を確認
MCP 対応
HTTP または stdio で、リポジトリの索引作成・照会ツールを MCP クライアントに公開します。バックグラウンドデーモンが索引を構築し、サーバーはその索引を読み取って提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
code-index-mcp
AI エージェント向けのコード検索ツールです。単一のバイナリ、SQLite インデックスにより、ミリ秒単位で応答します。 1C:Enterprise 8.3 のエクスポートを、コンフィギュレーターと 1C:EDT の両方から解析します。
完全ガイド · English · ドキュメント · 変更履歴
インストール
Windows — 1つのコマンドでインストール
irm https://raw.githubusercontent.com/Regsorm/code-index-mcp/main/install.ps1 | iex
最新リリースを C:\tools\code-index にダウンロードし、フォルダーを環境変数に登録して、設定ファイルのテンプレートを作成し、.mcp.json に貼り付けるブロックを表示します。
パラメーターでインストール先フォルダー、ソースフォルダー、システムへのログイン時の自動起動を指定できます。
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/Regsorm/code-index-mcp/main/install.ps1))) `
-InstallDir 'D:\code-index' -Repo 'main=D:\Repo1C' -RegisterAutostart
自動起動にはユーザーのスタートアップフォルダーを使用します。管理者権限は不要で、ウィンドウも表示されません。その他のパラメーターは、1C なしのビルドには -Flavor core、特定のリリースには -Version 1.0.0、デフォルトのポートが使用中の場合は -Port と -DaemonPort です。パラメーターの全一覧は Get-Help .\install.ps1 -Detailed をご覧ください。
Windows — 手動、リリースのアーカイブを使用
最新リリースをダウンロードし、C:\tools\code-index に展開して、このフォルダーを環境変数に登録します。
$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 は 1C 対応ビルド(37 個のツール)です。1C なしで使う場合は、code-index-windows-x64.zip(20 個のツール)をダウンロードしてください。同じリリースには、Linux 用の *-linux-x64.tar.gz と macOS 用の *-macos-arm64.tar.gz もあります。
次に、設定ファイルの作成、起動、クライアントの接続、自動起動を行います。 スクリプトを使わず、手順に沿って設定できます:手動インストール (English)。
npm
npm install -g @regsorm/code-index-mcp
npx @regsorm/code-index-mcp serve --path /путь/к/репозиторию
postinstall ステップで、お使いのプラットフォーム向けのビルド済みバイナリがダウンロードされます。コンパイルは行われません。パッケージは MCP レジストリにも io.github.Regsorm/code-index という名前で登録されています。ラッパーに含まれるのは 1C なしのビルドのみです。
serve サーバーはインデックスを読み取るだけで、バックグラウンドのインデクサーがインデックスを構築します。そのため、npx @regsorm/code-index-mcp daemon run を起動し、CODE_INDEX_HOME 変数を設定する必要があります。そうしないと、ツールは daemon_offline を返します。設定については完全ガイドをご覧ください。
ソースからビルド
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 を使用する共有プロセスでは、すべてのセッションとプロジェクトで 1 つのインデックスを使用します。HTTP サーバーはプログラムに組み込まれているため、別途 Web サーバーを用意する必要はありません。デフォルトでは 127.0.0.1 だけをリッスンします。
{
"mcpServers": {
"code-index": {
"type": "http",
"url": "http://127.0.0.1:8011/mcp"
}
}
}
127.0.0.1 だけをリッスンし、Host ヘッダーに loopback 値が指定されている場合のみ受け付けます。ネットワーク上でサーバーを公開する場合(--host 0.0.0.0 または serve.toml の [me].ip)、クライアント名を [me].allowed_hosts または CODE_INDEX_ALLOWED_HOSTS に列挙してください。指定しない場合、/mcp は 403 Host header is not allowed を返します。詳しくは完全ガイドをご覧ください。
セッションごとに個別のプロセスを起動する方式(stdio)では、セッションを開くときにクライアントがサーバーを起動するため、ポートは不要です。この場合も、バックグラウンドのインデクサー(daemon run)を実行しておく必要があります。サーバーはインデックスを読み取るだけで、インデックスはインデクサーが構築します。インデクサーが動作していない場合、ツールは daemon_offline を返します。
{
"mcpServers": {
"code-index": {
"command": "npx",
"args": ["-y", "@regsorm/code-index-mcp", "serve", "--path", "."]
}
}
}
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. Модель получает три строки вместо трёх файлов.
Цифры
| Кодовая база | Файлов | Полная индексация | Запуск на готовом индексе |
|---|---|---|---|
| 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.
ツール
各呼び出しではリポジトリのエイリアスを指定するため、1つのサーバーで複数のコードベースを同時に扱えます。別のマシンにあるコードベースも対象です。
検索とナビゲーション
search_function search_class | 関数とクラスの全文検索 |
get_function get_class | 正確な名前を指定して本文を取得します。一致しない場合は類似した名前を提案します |
find_symbol | 関数、クラス、変数、インポートなど、あらゆる種類のシンボルを検索します |
get_imports | モジュールまたはファイルのインポート |
get_file_summary | ソースを読み込まずにファイルの概要を表示します |
呼び出しグラフ
get_callers get_callees | プロシージャを呼び出す側と、そのプロシージャが呼び出す側 |
find_path | 2つの関数間の最短呼び出し経路 |
get_call_tree | 指定した深さまでの呼び出しツリーを下方向または上方向に表示します |
ファイルの内容
read_file | 行範囲を指定して読み取ります。コードの内容はインデックスに保存され、zstd で圧縮されています |
list_files stat_file | パターンに一致するファイルの一覧と、1つのファイルのメタデータ |
grep_body | 関数とクラスの本文から部分文字列または正規表現を検索します |
grep_code grep_text | コードファイルとテキストファイルの全文から検索します |
search_text | テキスト形式の全文検索 |
get_stats health | インデックスとサーバーの状態 |
1С 構成向け(bsl-indexer ビルドで対応。エクスポートされたリポジトリがある場合に自動的に利用可能になります)
get_object_structure | 属性の型と別名、テーブル部分、ディメンションとリソース、定義済み要素、転記プロパティ |
get_object_profile | 1回の呼び出しでオブジェクトの概要を取得します。構造、フォーム、モジュール、関連情報が含まれます |
get_form_handlers | 管理フォームのイベントハンドラーと、関連するフォーム要素 |
get_event_subscriptions | ソースとイベントで絞り込めるイベントサブスクリプション |
get_data_links find_data_path | データ関連のグラフ。相互参照の関係と、2つのオブジェクト間の経路 |
find_references | 影響範囲のマップ。メタデータからの参照、コード内の参照、ロールの権限 |
get_register_writers | レジスターの登録元とドキュメントの移動 |
find_path_bsl | エクスポートのグラフに基づくプロシージャの呼び出し経路 |
query_call_sites | 呼び出し箇所のコンテキスト。ループ内か、Попытке 内か、ネストの深さ |
get_node_structure | プロシージャの骨格。ループ、Попытка、行番号付きの分岐 |
get_line_context | 指定行にある内容。プロシージャ、それを含むブロック、属性 |
search_terms | 名前、別名、コメントに基づくプロシージャの意味検索 |
get_role_rights | オブジェクトに対するロールの権限と、1つのロールの権限 |
bsl_sql | メタデータとグラフのテーブルに対する任意の読み取りクエリ |
1С のサポート内容
- エクスポート形式はどちらも解析できます。コンフィギュレーターからの XML と、1С:EDT の
.mdoです。 - データ関連のグラフは、属性、ディメンション、テーブル部分の参照型に基づいて構築されます。たとえば「企業会計」では 65 421 本のエッジがあります。
- モジュールからコンパイルディレクティブ(
&НаСервере、&НаКлиенте)と拡張アノテーション(&Вместо、&После、&Перед)を、置き換え対象のプロシージャ名とともに抽出します。 - BSL のロシア語構文と英語構文の両方に対応しています。
- オブジェクト名の大文字・小文字は区別されません。キリル文字の名前は構成内の表記に変換され、応答では正規の表記で表示されます。
詳しくは、docs/bsl-indexer.mdをご覧ください。
言語
構文を完全に解析できる言語:Python、JavaScript、TypeScript、Java、Rust、Go、PHP、C、C++、C#、Ruby、Swift、1С(BSL)、HTML。1С のメタデータは、コンフィギュレーターの XML と EDT の .mdo に対応しています。さらに、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.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。