mcpField
C
code-index

code-index

ローカル
github.com/Regsorm開発ツール1581 日前に更新

code-index について

code-index は、AI コーディングエージェント向けにリポジトリを SQLite へ索引化する Rust 製 MCP サーバーです。1C:Enterprise のエクスポートを標準で扱い、コード検索、シンボルナビゲーション、呼び出しグラフ、Git 履歴、1C メタデータの照会を提供します。

主な機能

  1. 01SQLite ベースのリポジトリ索引
  2. 0214 言語の AST 解析
  3. 031C:Enterprise メタデータ用ツール
  4. 04シンボル検索と呼び出しグラフ
  5. 05コードとテキストの検索
  6. 06Git 履歴と差分ツール

活用シーン

  1. 01コードベース全体で呼び出し元や呼び出し先を検索
  2. 021C 構成オブジェクトと参照を調査
  3. 03索引済みソースやテキストファイルを検索
  4. 04リポジトリの履歴とファイル変更を確認

MCP 対応

HTTP または stdio で、リポジトリの索引作成・照会ツールを MCP クライアントに公開します。バックグラウンドデーモンが索引を構築し、サーバーはその索引を読み取って提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"regsorm-code-index": {
"command": "npx",
"args": [
"-y",
"@regsorm/code-index-mcp"
]
}
}
}
起動コマンドnpx -y @regsorm/code-index-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@regsorm/code-index-mcp1.15.6

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

Инфостарт

code-index-mcp

リリース npm ライセンス

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. Модель получает три строки вместо трёх файлов.

Цифры

В среднем в 2,04 раза дешевле по токенам, в 1,78 раза быстрее, 51 % экономии за сеанс
Кодовая базаФайловПолная индексацияЗапуск на готовом индексе
1С:Управление Торговлей57 0722 мин 41 с2,3 с
1С:Бухгалтерия предприятия88 2845 мин 51 с5,3 с
сайт на PHP157 77213 мин 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_path2つの関数間の最短呼び出し経路
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_profile1回の呼び出しでオブジェクトの概要を取得します。構造、フォーム、モジュール、関連情報が含まれます
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 など)を全文インデックス化します。

次のステップ

Участие

Ошибки и предложения — в issues, вопросы и обсуждения — в Discussions. Как прислать правку — CONTRIBUTING.md, об уязвимостях — SECURITY.md.

Лицензия

MIT, см. LICENSE.

Проект стоит на tree-sitter, грамматике BSL от сообщества 1c-syntax, rusqlite, rayon и Rust SDK для MCP.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。