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 分