code-index

io.github.Regsorm由 GitHub 帳號 Regsorm 發布v1.16.0更新於 Nov 9, 2026

Rust code index MCP server, native 1C:Enterprise (BSL) support. 37 tools, AST for 14 languages.

已驗證STDIO僅桌面資料庫開發者工具

概覽

AI 產生的概覽

本機程式碼索引 MCP 伺服器:先把原始碼預先解析進 SQLite,讓助理以低成本搜尋符號、追蹤呼叫圖、讀取程式碼,並原生支援 1C:Enterprise(BSL)。

可以做什麼
  • 搜尋與導覽符號:函式與類別的全文搜尋、精確名稱查詢、任意符號與匯入查詢、檔案摘要
  • 追蹤呼叫圖:呼叫者與被呼叫者、兩個函式間的最短呼叫鏈、依深度的呼叫樹
  • 檢視檔案內容:依行範圍讀取、檔案清單與中繼資料、函式體與整份檔案的子字串或正規表達式檢索、文字搜尋、索引健康狀態
  • 查詢 Git 歷史:提交記錄、兩次快照間的變更檔案、差異、歷史版本檔案內容
  • 探索 1C 組態(BSL 建置):物件結構與概況、表單事件處理、事件訂閱、資料關聯圖、參照與影響分析、登錄器、角色權限、對中繼資料表的唯讀 SQL
適用情境
適合助理在大型程式碼庫上反覆用 grep 和讀檔回答「誰呼叫了這個程序」之類問題、token 成本很高的情境。特別針對從組態器或 1C:EDT 匯出的 1C:Enterprise 8.3 組態,以及受益於常駐索引的多語言儲存庫。
執行需求
以 stdio 本機程序執行,通常透過 npm 套件的 npx 啟動,安裝時下載對應平台的預先編譯二進位檔。必須執行背景索引守護程序並設定 CODE_INDEX_HOME,否則工具會回傳 daemon_offline。從原始碼建置需要 Rust 1.77+。npm 包裝只含不支援 1C 的建置,支援 1C 的建置來自發行壓縮檔。
安裝前請注意
伺服器本身只讀索引,由守護程序建置並寫入 SQLite 資料庫,請只指向你願意建立索引的儲存庫。選用的 guard 掛鉤會攔截 Claude Code 與 Codex CLI 中的一般檔案讀取與搜尋。文件中的一行安裝指令碼會從網際網路下載並執行發行包。HTTP 模式若綁定到回送位址之外需設定允許的主機名稱,除非確實需要網路暴露,否則維持 127.0.0.1。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 code-index,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Infostart]

code-index-mcp

[Релиз] [npm] [Лицензия]

Поиск по коду для ИИ-агентов. Один бинарник, индекс в SQLite, ответ за миллисекунды. Разбирает выгрузки 1С:Предприятие 8.3 — и из Конфигуратора, и из 1С:EDT.

Полное руководство · English · Документация · Журнал изменений

Выгрузки с именами файлов Unicode в NFC и NFD поддерживаются; для восстановления данных старого индекса нужна пересборка (версия данных 6).


Установка

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_urlInvoke-WebRequest $url -OutFile "$env:TEMP\code-index.zip"Expand-Archive "$env:TEMP\code-index.zip" -DestinationPath $dst -Forcesetx CODE_INDEX_HOME $dst

bsl-indexer — сборка с поддержкой 1С (42 инструмента). Нужна работа без 1С — возьмите code-index-windows-x64.zip (25 инструментов). Для Linux и macOS в том же выпуске лежат *-linux-x64.tar.gz и *-macos-arm64.tar.gz.

Дальше — файл настроек, запуск, подключение клиента и автозапуск. Всё это без скриптов, по шагам: установка вручную (English).

npm

bash
npm install -g @regsorm/code-index-mcpnpx @regsorm/code-index-mcp serve --path /путь/к/репозиторию

Шаг postinstall скачивает готовый бинарник под вашу платформу — ничего не компилируется. Пакет есть и в реестре MCP под именем io.github.Regsorm/code-index. В обёртке только сборка без 1С.

Сервер serve только читает индекс, строит его фоновый индексатор. Поэтому должны быть запущены npx @regsorm/code-index-mcp daemon run и задана переменная CODE_INDEX_HOME — иначе инструменты отвечают daemon_offline. Настройка — в полном руководстве.

Сборка из исходников

bash
git clone https://github.com/Regsorm/code-index-mcp.gitcd code-index-mcpcargo build --release -p code-index                          # без 1Сcargo build --release -p bsl-indexer --features enrichment   # с поддержкой 1С

Нужен Rust 1.77+.

Подключение к клиенту

Общий процесс по HTTP — один индекс на все сессии и все проекты. HTTP-сервер встроен в программу, отдельный веб-сервер не нужен; по умолчанию он слушает только 127.0.0.1:

json
{  "mcpServers": {    "code-index": {      "type": "http",      "url": "http://127.0.0.1:8011/mcp"    }  }}

Слушает только 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:

json
{  "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.

Инструменты

Каждый вызов принимает алиас репозитория, так что один сервер обслуживает несколько кодовых баз сразу — в том числе с других машин.

Поиск и навигация

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состояние индекса и сервера

Git (включается git = true у записи [[paths]]; git_path — если репозиторий лежит выше индекса)

git_logистория коммитов ревизии или локальной даты с фильтром по пути
git_changed_filesизменённые файлы между двумя снимками: статусы, переименования, бинарные
git_changes_by_objectте же изменения, сгруппированные по объектам метаданных 1С
git_diffunified diff одного файла с контекстом и пределом длины
git_show_fileисторическое содержимое файла с диапазоном строк

Даты — 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, появляются сами при наличии репозитория с выгрузкой)

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цепочка вызовов процедур по графу выгрузки
query_call_sitesвызовы с контекстом места: в цикле, в Попытке, с глубиной вложенности
get_node_structureскелет процедуры: циклы, Попытка и ветки с номерами строк
get_line_contextчто находится на строке: процедура, содержащие её блоки, признаки
search_termsсмысловой поиск процедур по именам, синонимам и комментариям
get_role_rightsправа ролей на объект и права одной роли
bsl_sqlпроизвольный запрос на чтение к таблицам метаданных и графов

Что даёт поддержка 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 и других).

Дальше

Участие

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

Лицензия

MIT, см. LICENSE.

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

來源:README.md,提交 773ac4c

工具

25

find_path

Цепочка вызовов между двумя функциями за ОДИН вызов. Бери его на вопросы вида «есть ли путь от A до B», «как из A попадают в B», «через что A вызывает B»: кратчайший путь по графу ищет сервер. НЕ восстанавливай цепочку вручную — обход через get_callers/get_callees по одному узлу и чтение тел стоит десятки вызовов и даёт тот же ответ. Параметры: from, to — имена функций; max_depth по умолчанию 5, [1..10]. Универсальный, любой язык. Возвращает {from,to,found,path:[{caller,callee,line}]}. Пути нет — ответ различает «дошли до потолка» и «подграф исчерпан». Для 1С есть отдельный find_path_bsl (учитывает вид вызова).

輸入參數to必填from必填repolanguagemax_depth

find_symbol

Навигация: ГДЕ определён символ по ТОЧНОМУ имени — локации функций/классов/переменных/импортов БЕЗ тел (как search_*). Тело конкретного — get_function/get_class. Возвращает {functions, classes, variables, imports} (облегчённые: имя/путь/строки/сигнатура). Голым именем зови ТОЛЬКО для уникального имени: если имя — стандартный обработчик объекта/набора записей или просто распространённое, вернутся сотни локаций (truncated) — для таких сразу задавай path_glob (фильтр по пути).

輸入參數name必填pathrepolanguagepath_glob

get_call_tree

Дерево вызовов на НЕСКОЛЬКО уровней за ОДИН вызов. Бери его на вопросы вида «кто вызывает того, кто вызывает X», «цепочка вызовов вверх/вниз», «дерево вызовов на N уровней»: обход по уровням делает сервер. НЕ собирай такое дерево вручную — перебор узлов через get_callers/get_callees/grep_code/find_symbol стоит десятки лишних вызовов и даёт тот же ответ. Параметры: root — имя функции; direction: callers/up (кто вызывает root — для вопросов «кто выше по цепочке») либо callees/down (что вызывает сам root, по умолчанию); max_depth (синоним depth) по умолчанию 3, [1..10]; max_nodes cap (default 200). Для 1С обход ВВЕРХ добавляет платформенные точки входа, которых нет в таблице calls: событие и команда формы, подписка на событие, перехват расширением, обработчик по соглашению об имени. Большой ответ сокращается по размеру: дальние рёбра отбрасываются, поля tree нет, в ответе truncated, edges_total, edges_shown и hint — как сузить запрос. Универсальный, любой язык. Возвращает {root,direction,edges:[{caller,callee,line,depth}],tree:{name,children}}.

輸入參數reporoot必填depthlanguagedirectionmax_depthmax_nodesmax_response_bytes

get_callees

Что вызывает данная функция (callees) — весь список за ОДИН вызов. В каждой записи уже есть caller, callee, line, path файла с вызовом, а для однозначных имён ещё и callee_path/callee_line — место, где вызываемая процедура ОПРЕДЕЛЕНА. Искать каждое вызываемое имя отдельным find_symbol/get_function НЕ нужно; если callee_path нет, значит имя носят несколько процедур — тогда спрашивай их одним grep_code с перечислением через | , а не по вызову на имя. limit — cap (default 200); при обрезке {truncated,total,limit}. Цепочка до конкретной функции — find_path, дерево на несколько уровней — get_call_tree. path_glob — фильтр по пути файла-источника вызова; если имя делят несколько функций, в ответе есть `ambiguous_name` с их определениями.

輸入參數repolimitlanguagepath_globfunction_name必填

get_callers

Найти вызывателей функции (callers) в указанном репо. limit — cap (default 200); на «горячих» функциях ответ обрезается с {truncated,total,limit}. Возвращает JSON-массив CallRecord. Для 1С к вызовам из кода добавляются декларативные привязки (поле kind): обработчик события формы, обработчик команды формы (binding=command), подписка на событие, перехват расширением, обработчик по соглашению об имени — вызова в коде у них нет, процедуру зовёт платформа. path_glob — фильтр по пути файла-ИСТОЧНИКА вызова: на одноимённых методах (`Dispose`, `RunAsync`) вызовы разных классов идут одним списком, и сузить его можно только файлом; тогда же в ответе появляется `ambiguous_name` с перечнем определений этого имени.

輸入參數repolimitlanguagepath_globfunction_name必填

get_class

Тело класса/структуры по ТОЧНОМУ имени (с исходником). НЕуникальное имя (совпадений > порога) → тела опускаются, локации + hint, уточните path_glob. Навигация без тел — find_symbol; поиск по словам — search_class. Возвращает JSON-массив ClassRecord (или локации при множестве).

輸入參數namepathrepolanguagepath_glob

get_file_summary

Карта/оглавление файла БЕЗ тел функций/классов (безопасно на больших модулях): имена, сигнатуры (args/return_type), диапазоны строк, обрезанные docstring, импорты, переменные + functions_total/classes_total. Тело конкретной функции — get_function(name) или read_file(line_start,line_end). Возвращает JSON-объект.

輸入參數path必填repo

get_function

Тело функции по ТОЧНОМУ имени (с исходником). Уникальное имя → одно тело. НЕуникальное (совпадений > порога) → тела опускаются, возвращаются локации + hint: уточните path_glob к нужному файлу. Навигация «где символ» без тел — find_symbol; поиск по словам — search_function. Возвращает JSON-массив FunctionRecord (или облегчённые локации при множестве).

輸入參數namepathrepolanguagepath_glob

get_imports

Импорты файла (file_id) или модуля (module) в указанном репо. limit — cap (default 200); при обрезке {truncated,total,limit}. Возвращает JSON-массив ImportRecord.

輸入參數repolimitmodulefile_idlanguage

get_stats

Статистика индекса. Если repo указан — для одного репо, иначе — массив по всем подключённым репо.

輸入參數repo

git_changed_files

Изменённые git-файлы между двумя снимками (from/to — ревизия или локальная дата; to по умолчанию HEAD, без from диапазон пуст; tz — смещение для дат, по умолчанию локальный пояс). path_glob — glob по индексному пути. limit — максимум файлов (default 200). Возвращает статусы (A/M/D/R/C, T считается M), insertions/deletions (бинарные — 0 и binary=true), old_path для переименований, files_changed и суммы после фильтра до обрезки, empty_range для совпавших хешей, truncated и hint при обрезке.

輸入參數totzfromrepolimitpath_glob

git_changes_by_object

Изменения git, сгруппированные по объектам метаданных 1С. from/to — ревизия или локальная дата (to по умолчанию HEAD), limit — максимум объектов (default 100), include_files — отдавать пути внутри объектов (default false). Объект берётся из metadata_modules (code_path от корня индекса, записи под REPO_DEFAULT), иначе разбирается раскладка base/<Категория>/<Имя>/…, extensions/<Имя>/… и External/<Имя>/…; неизвестные пути — ungrouped. meta_type выводится из известной категории (для metadata_modules — по первой части имени, у модулей форм это тип владельца). tz — смещение для дат, по умолчанию локальный пояс. totals и objects_total всегда полные; paths помечаются paths_truncated.

輸入參數totzfromrepolimitinclude_files

git_diff

Unified diff одного файла между двумя снимками. ОБЯЗАТЕЛЕН буквальный path от корня индекса (from/to — ревизия или локальная дата, to по умолчанию HEAD; tz — смещение для дат, по умолчанию локальный пояс). context_lines — контекст (default 3), max_chars — предел патча (default 20000). Возвращает status, insertions, deletions, patch; для переименования в патч входят обе стороны, бинарное содержимое не декодируется (binary=true, patch пуст). Отсутствующий в обоих снимках путь — ошибка, неизменённый — пустой patch и status=unchanged.

輸入參數totzfrompath必填repomax_charscontext_lines

git_log

История git-коммитов репозитория. ОБЯЗАТЕЛЕН repo (git-слой включается git = true в daemon.toml). rev — хеш/ветка/тег/локальная дата (YYYY-MM-DD, YYYY-MM-DD HH:MM, YYYY-MM-DDTHH:MM), по умолчанию HEAD; tz — смещение для дат (`+03:00` или `UTC`), по умолчанию локальный пояс. path — буквальный путь от корня индекса. limit — максимум коммитов (default 20), total считается по всей подходящей истории. Возвращает {rev: {input,resolved_hash,hash,date,subject,resolved_as,timezone,resolved_at}, commits:[{hash,short,date,author,subject}], shown,total,limit,truncated,hint?}.

輸入參數tzrevpathrepolimit

git_show_file

Историческое содержимое файла из git (show <rev>:<path>). ОБЯЗАТЕЛЕН буквальный path от корня индекса; rev — хеш/ветка/тег/локальная дата (по умолчанию HEAD); tz — смещение для дат, по умолчанию локальный пояс. Диапазон строк line_start/line_end — 1-based inclusive; lines_total считается по файлу до диапазона и обрезки. max_chars — предел содержимого (default 20000). Каталог, отсутствующий путь и бинарное/недекодируемое содержимое — структурированная ошибка; при обрезке truncated=true и hint.

輸入參數tzrevpath必填repoline_endmax_charsline_start

grep_body

Поиск ТОЛЬКО в телах функций и классов (module-level код — объявления Перем, таблицы инициализации/маршрутизации, константы и строковые литералы ВНЕ процедур — НЕ виден; для поиска по всему файлу бери grep_code). Плюс grep_body в том, что показывает, в какой ИМЕННО функции/классе найден паттерн. pattern — буквальная подстрока без учёта регистра (кириллица тоже; `%` и `_` — обычные символы), regex — регулярное выражение; query — алиас regex. path_glob (синоним glob=) — фильтр по пути (SQL pushdown; альтернативы `{a,b}` поддерживаются). context_lines — N строк до/после совпадения. limit — число находок (default 30); при обрезке truncated=true. Возвращает {files: {"<path>": ["<name> (<kind>) L<start>-<end>: <строки>(+N)", …]}, shown, limit, truncated} — по одной строке-локатору на функцию/класс; контекст (context_lines>0) дописан строками "N: текст".

輸入參數globrepolimitqueryregexpatternlanguagepath_globcontext_lines

grep_code

Regex-поиск по ПОЛНОМУ тексту code-файлов (Phase 2, v0.8.0; параметр regex=, синоним query=; pattern= — буквальная подстрока без учёта регистра, как в grep_body): ищет по ВСЕМУ файлу — и module-level (объявления Перем, таблицы маршрутизации/инициализации, константы, строковые литералы, комментарии, импорты), И внутри тел функций/классов. Это НАДмножество grep_body по покрытию текста. Для поиска ВСЕХ вхождений имени/строки где угодно в файле (например имя веб-сервиса в таблице маршрутизации + его же использование в теле) — бери grep_code, НЕ grep_body (тот видит только тела и пропустит module-level). grep_body — когда нужно узнать, в какой ИМЕННО функции/процедуре встречается паттерн. Источник — таблица file_contents (zstd). path_glob (синоним glob=) ИЛИ language обязательно желателен (full-scan дорогой из-за zstd-decode каждого файла); альтернативы `{a,b}` в path_glob поддерживаются. Файлы oversize=true пропускаются. limit — число совпадений (default 30); при обрезке truncated=true (дошлите больший limit). Возвращает {files: {"<path>": ["N: content", …]}, shown, limit, truncated} — строки "номер: содержимое"; контекст (context_lines>0) влит в тот же массив, отсортирован по номеру строки.

輸入參數globrepolimitqueryregexpatternlanguagepath_globcontext_lines

grep_text

Regex-поиск по содержимому text-файлов (параметр regex=, синоним query=; pattern= — буквальная подстрока без учёта регистра, как в grep_body). path_glob (синоним glob=) ИЛИ language обязательно желателен (full-scan по всем text-файлам — дорого); альтернативы `{a,b}` в path_glob поддерживаются. context_lines — N строк до/после. limit — число находок (default 30 при full-scan); при обрезке truncated=true. Возвращает {files: {"<path>": ["N: content", …]}, shown, limit, truncated} — строки "номер: содержимое"; контекст (context_lines>0) влит в тот же массив, отсортирован по номеру строки.

輸入參數globrepolimitqueryregexpatternlanguagepath_globcontext_lines

health

Проверка живости MCP-сервера и демона индексации по всем подключённым репо. Возвращает JSON.

無需輸入參數。

list_files

Список файлов в индексе с фильтрами. pattern — glob по пути (`**/*.py`; альтернативы `{a,b}`: `**/*.{rs,toml}`), path_prefix — префикс (`src/auth/`), language — язык. Возвращает JSON-массив строк "<path> | <lang> | <N> lines | <size>" (mtime — в _meta.file_mtimes). limit — максимум файлов в ответе (default 500); если подходящих файлов больше, ответ несёт {truncated, total, shown, limit}, где total — сколько их всего.

輸入參數repolimitpatternlanguagepath_prefix

read_file

Прочитать содержимое файла из индекса. ОБЯЗАТЕЛЬНЫ оба параметра: repo (алиас репозитория, список — get_stats) и path. Отдаёт реальный content и для text-файлов (yaml/md/json/toml/xml/sh и др.), и для code-файлов (zstd-decode из file_contents, Phase 2 v0.8.0+); поле category в ответе — "text" или "code". Oversize code-файлы (> max_code_file_size_bytes) возвращают oversize=true и пустой content (их читать через get_function/grep_body/grep_code). line_start/line_end (синонимы start_line/end_line) — 1-based, inclusive. Soft-cap 5000 строк / 500 КБ (truncated=true при обрезке), hard-cap 2 МБ.

輸入參數path必填repoend_lineline_endline_startstart_line

search_class

Нечёткий FTS-поиск классов/структур по СЛОВАМ (bm25): имя важнее docstring. Выдача БЕЗ тел — только локации (имя/путь/строки/bases). Тело конкретного класса — get_class; локации по ТОЧНОМУ имени — find_symbol. path_glob — фильтр по пути. При 0 совпадений — hint.

輸入參數repolimitquery必填languagepath_glob

search_function

Нечёткий FTS-поиск функций по СЛОВАМ (bm25, OR между словами, префиксные термы): имя важнее qualified_name/docstring. Принимает и точное имя, и описание из слов ('расчёт цены продажи реализация'). Выдача БЕЗ тел — только локации (имя/путь/строки/сигнатура/обрезанный docstring). Тело конкретной функции — get_function; локации по ТОЧНОМУ имени — find_symbol; regex по коду — grep_code. path_glob — фильтр по пути. При 0 совпадений — hint; на BSL-репо он подсказывает search_terms (поиск процедур по смысловым термам).

輸入參數repolimitquery必填languagepath_glob

search_text

FTS поиск по текстовым файлам (md, txt, yaml, toml) в указанном репо. path_glob — опциональный фильтр по пути. Возвращает JSON-массив [{path, snippet}].

輸入參數repolimitquery必填languagepath_glob

stat_file

Метаданные файла из индекса: existence, размер, mtime, lines_total, language, category. Чистая выборка из таблицы files (быстро). ОБЯЗАТЕЛЬНЫ оба параметра: repo (алиас репозитория, список — get_stats) и path.

輸入參數path必填repo

版本歷史

25
  1. v1.15.6Oct 29, 2026
  2. v1.15.4Oct 25, 2026
  3. v1.15.2Oct 23, 2026
  4. v1.15.1Oct 23, 2026
  5. v1.15.0Oct 22, 2026
  6. v1.14.1Oct 20, 2026
  7. v1.14.0Oct 15, 2026
  8. v1.13.1Oct 15, 2026
  9. v1.12.0Oct 14, 2026
  10. v1.11.0Oct 13, 2026
  11. v1.9.0Oct 12, 2026
  12. v1.8.6Oct 8, 2026
  13. v1.8.5Sep 27, 2026
  14. v1.8.4Sep 27, 2026
  15. v1.8.2Sep 27, 2026
  16. v1.8.1Sep 27, 2026
  17. v1.6.0Sep 25, 2026
  18. v1.5.1Sep 23, 2026
  19. v1.5.0Sep 22, 2026
  20. v1.4.2Sep 20, 2026
  21. v1.4.1Sep 20, 2026
  22. v1.4.0Sep 20, 2026
  23. v1.2.4Sep 19, 2026
  24. v1.2.3Sep 17, 2026
  25. v1.2.2Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分