CodeMetadataSearchServer
Поиск по метаданным, справке, коду, формам и зависимостям конфигурации 1С. Генерация и валидация XML.
Назначение
CodeMetadataSearchServer — комплексный MCP-сервер для глубокой работы с конфигурацией 1С. Индексирует метаданные, код модулей, формы, HTML-справку и XML-определения. Предоставляет ИИ 28 инструментов для:
Семантического и структурного поиска по метаданным конфигурации
Полнотекстового и векторного поиска по коду модулей
Анализа структуры BSL-модулей, иерархии вызовов и зависимостей
Поиска и анализа форм объектов конфигурации
Поиска по HTML-справке конфигурации
Генерации XSD-схем и валидации XML
Чтения и обратной сборки двоичных обычных форм (
Form.bin)
Доступные инструменты MCP (28)
Инструменты сгруппированы по функциональным областям.
Метаданные
metadatasearch
Поиск объектов конфигурации по имени или описанию
get_metadata_details
Детальная структура объекта: реквизиты, типы, табличные части, синонимы
Код
codesearch
Поиск по коду модулей объектов, форм и общих модулей
search_function
Поиск процедуры или функции BSL по имени
get_module_structure
Полная структура BSL-модуля: процедуры, функции, области, статистика
get_method_call_hierarchy
Иерархия вызовов метода: кто вызывает и что вызывается
search_forms
Поиск форм объектов конфигурации
inspect_form_layout
Детальная структура формы: элементы, реквизиты, команды, обработчики
graph_dependencies
Граф зависимостей объекта конфигурации
bsl_scope_members
Доступные методы, свойства и события для BSL-контекста
Компактный API
compact_search
Ограниченный бюджетом поиск по символам и метаданным с курсорной пагинацией
compact_symbol
Получение BSL-символов и их точных позиций, опционально — тел процедур и функций
compact_call
Ограниченный обход связей вызовов для BSL-символа
compact_metadata
Постраничное получение объектов метаданных с ограниченными списками реквизитов
Справка
helpsearch
Поиск по HTML-справке конфигурации
XSD-схемы
get_xsd_schema
Получение XSD-схемы для типа объекта метаданных
verify_xml
Валидация XML-содержимого по XSD-схеме
Артефакты конфигурации
get_form_artifact
Чтение артефакта формы: дерево элементов, реквизиты, команды, provenance
get_role_artifact
Объявленные права роли или роли, дающие права на объект
get_report_artifact
Структура отчёта: формы, макеты, схема компоновки данных
list_artifact_links
Ссылки артефакта на внешние результаты прогонов и тестов
register_external_result_link
Регистрация ссылки на неизменяемый внешний результат
Обычные формы
unpack_ordinary_form
Распаковка двоичного Form.bin обычной формы в редактируемый рабочий каталог
build_ordinary_form
Обратная сборка рабочего каталога в Form.bin с проверкой логической полезной нагрузки
Служебные (всегда доступны)
reindex
Запуск переиндексации в фоновом режиме
stats
Статистика индексов, модель эмбеддингов, аптайм
plugin_state
Состояние плагинов: файлы, хуки, таблицы, ошибки, эпоха, вклад в fingerprint поколения
plugin_reload
Атомарно перечитать каталог плагинов без перезапуска сервера
Описание инструментов
metadatasearch
Поиск объектов метаданных, реквизитов и типов в конфигурации 1С. Для поиска по имени используйте формат вида Справочники.ИмяСправочника.Реквизиты. Для поиска по описанию — текст на русском языке. Используйте точное имя конфигурации, если оно известно.
query
string
—
Имя или описание объекта метаданных
limit
int
5
Количество результатов
object_type
string
""
Фильтр по типу метаданных 1С (Справочник, Документ, РегистрСведений и т.д.)
names_only
bool
false
Компактный список имён объектов (full_path, object_type, synonym) вместо текстовых чанков. Используйте names_only=true для определения релевантных объектов конфигурации, затем получайте детали через get_metadata_details
origin
string
""
Фильтр по происхождению определения: base, extension, имя конкретного расширения или all
Общие параметры бюджета ответа
Инструменты metadatasearch, codesearch, search_function, get_module_structure, get_method_call_hierarchy, graph_dependencies, get_metadata_details, search_forms и inspect_form_layout дополнительно принимают:
max_chars
int
0
Максимальный размер сериализованного ответа в символах; 0 использует прежнее поведение
max_items
int
0
Максимум элементов на странице; 0 использует серверный предел
detail_level
string
""
outline для сокращённого ответа или full для полного
cursor
string
""
Непрозрачный next_cursor из предыдущего усечённого ответа
Ответ содержит items_total, items_returned, truncated и next_cursor; элементы получают стабильный item_id, точную location и evidence_path. Инструменты search_function, get_metadata_details и inspect_form_layout также принимают item_id и index_identity для прямого получения одного элемента без повторного поиска. Если индекс изменился, сервер возвращает типизированную ошибку item_id_stale.
Провенанс расширений
Инструменты metadatasearch, codesearch, search_function, get_metadata_details, search_forms и inspect_form_layout дополнительно принимают:
origin
string
""
Область поиска по происхождению определения: base — только основная конфигурация, extension — любое расширение конфигурации, имя конкретного расширения — только оно, all (значение по умолчанию) — всё
Применённый фильтр возвращается в поле origin_filter, а каждый результат несёт блок origin с именем конфигурации, из которой он получен, и — для расширяющего определения — с режимом расширения и ссылкой на базовое определение.
Инструмент search_function дополнительно принимает:
explain_effective
bool
true
Добавляет в ответ effective_definition: какое определение метода действует, конкурирующие определения с их происхождением и режимами, а также правило, по которому выбрано действующее
Правила разрешения: Вместо замещает базовое определение, Перед и После оставляют базовое действующим и отмечаются как перехватывающие, ИзменениеИКонтроль перенимает определение без замещения. Если один и тот же метод изменяют два и более расширения, ответ возвращает collision со списком всех участников и не выбирает победителя: порядок загрузки расширений — свойство информационной базы, которого нет в файловой выгрузке.
get_metadata_details
Возвращает детальную структуру объекта метаданных: реквизиты с типами, табличные части, синонимы и свойства.
object_name
string
—
Имя или полный путь объекта (Номенклатура, Справочники.Номенклатура, Документ.РеализацияТоваровУслуг)
codesearch
Поиск по коду модулей объектов, форм и общих модулей. Принимает фрагменты кода, имена функций или комментарии.
query
string
—
Код, имя функции, комментарий или описание искомого кода
limit
int
5
Количество результатов
search_function
Поиск процедуры или функции BSL по имени. Поддерживает точный поиск с автоматическим переключением на нечёткий, а также префиксный поиск.
name
string
—
Имя процедуры/функции (ОбработкаПроведения, ПриСозданииНаСервере)
exact
bool
true
Точное совпадение (с автоматическим fallback на нечёткий поиск). false — префиксный/нечёткий поиск
limit
int
10
Количество результатов
include_body
bool
true
Возвращать тело процедуры или функции; при false возвращается только сигнатура
max_body_chars
int
0
Ограничить длину тела; 0 не ограничивает
module_path
string
""
Фильтр по пути модуля до применения лимита
get_module_structure
Возвращает полную структуру BSL-модуля: все процедуры, функции, области и статистику. Концом процедуры или функции считается и КонецПроцедуры с начала строки, и хвост той же строки — Вызов(...);КонецПроцедуры; так записаны однострочные обработчики в выгруженных модулях форм. Литерал "КонецПроцедуры" внутри строки концом не является.
module_path
string
—
Путь к BSL-модулю (полный или частичный)
get_method_call_hierarchy
Возвращает иерархию вызовов для BSL-метода: кто вызывает этот метод (callers), что вызывает этот метод (callees), или оба направления.
method_name
string
—
Имя процедуры/функции для трассировки
direction
string
"both"
Направление: callers, callees или both
depth
int
3
Максимальная глубина обхода
max_nodes
int
2000
Максимум раскрываемых узлов
max_edges
int
20000
Максимум обрабатываемых связей
timeout_ms
int
5000
Временной бюджет обхода; 0 отключает таймаут
module_path
string
""
Фильтр начального метода и обхода по пути модуля
object_name
string
""
Фильтр по объекту конфигурации
search_forms
Поиск форм объектов конфигурации (справочников, документов, регистров и т.д.) по имени объекта, имени формы или заголовку.
query
string
—
Имя объекта, имя формы или заголовок (Номенклатура, ФормаЭлемента, Реализация)
limit
int
10
Количество результатов
inspect_form_layout
Возвращает полную структуру формы объекта конфигурации: иерархию элементов с типами и привязками данных, реквизиты формы, команды и обработчики событий.
object_name
string
—
Имя объекта (Справочник.Номенклатура, Документ.РеализацияТоваровУслуг или краткое Номенклатура)
form_name
string
""
Имя конкретной формы. Пустое значение — форма по умолчанию
graph_dependencies
Запрос графа зависимостей объекта конфигурации: какие объекты использует данный объект и кто ссылается на него.
object_name
string
—
Имя объекта (Номенклатура или Справочники.Номенклатура)
direction
string
"both"
Направление: forward (что использует), reverse (кто использует) или both
limit
int
50
Максимальное количество связей на направление
bsl_scope_members
Возвращает доступные методы, свойства и события для заданного BSL-контекста.
context
string
—
BSL-контекст (Справочник.Номенклатура, Документ.РеализацияТоваровУслуг, Глобальный)
member_type
string
"all"
Фильтр: all, methods, properties или events
helpsearch
Поиск по HTML-справке конфигурации. Полезен, когда точное имя объекта метаданных неизвестно.
query
string
—
Описание объекта метаданных или функциональности
limit
int
5
Количество результатов
get_xsd_schema
Получение XSD-схемы для типа объекта метаданных или подтипа. Схема генерируется из реальных XML-файлов выгрузки конфигурации. Используйте перед генерацией XML, чтобы знать ожидаемую структуру.
object_type
string
—
Тип метаданных (Справочник, Документ, РегистрСведений, РегистрНакопления, Роль) или подтип (Форма, СКД, Макет). Принимаются также английские алиасы: Catalog, Document, InformationRegister, AccumulationRegister, Role, Form, DataCompositionSchema, Template
verify_xml
Валидация XML-содержимого по XSD-схеме для типа метаданных 1С. Возвращает статус валидации и список ошибок.
xml_content
string
—
XML-строка для валидации
object_type
string
—
Тип метаданных (Справочник, Документ, РегистрСведений, РегистрНакопления, Роль) или подтип (Форма, СКД, Макет). Принимаются английские алиасы
compact_search
Поиск по символам и метаданным с единым ограниченным ответом. Идентификаторы из результата можно передать в compact_symbol или compact_metadata.
query
string
—
Поисковый запрос
kinds
string
""
symbol, metadata или оба вида при пустом значении
cursor
string
""
Непрозрачный токен следующей страницы
max_items
int
0
Максимум элементов; 0 использует серверный предел
max_bytes
int
0
Максимальный размер ответа в байтах; 0 использует серверный предел
max_candidates
int
0
Максимум кандидатов для объединения поисковых каналов
compact_symbol
name
string
""
Имя процедуры или функции
module_path
string
""
Фильтр по каноническому пути модуля
item_id
string
""
Стабильный идентификатор из компактного ответа
include_body
bool
false
Включить тело BSL-символа
cursor
string
""
Токен следующей страницы
max_items
int
0
Максимум элементов
max_bytes
int
0
Максимальный размер ответа в байтах
compact_call
symbol
string
""
Имя начального BSL-символа
item_id
string
""
Стабильный идентификатор символа
direction
string
"callees"
callees, callers или both
depth
int
1
Глубина обхода
module_path
string
""
Фильтр по пути модуля
cursor
string
""
Токен следующей страницы
max_items / max_bytes
int
0
Бюджет размера ответа
max_nodes / max_edges
int
0
Бюджет узлов и связей; 0 использует серверный предел
timeout_ms
int
0
Временной бюджет; 0 использует серверный предел
compact_metadata
query
string
""
Поиск объекта метаданных
object_type
string
""
Фильтр по типу метаданных
item_id
string
""
Стабильный идентификатор объекта
cursor
string
""
Токен следующей страницы
max_items / max_bytes
int
0
Бюджет размера ответа
max_members
int
0
Максимум реквизитов и других членов на объект
Все компактные инструменты возвращают общий конверт с items, items_total, items_returned, truncated, next_cursor и provenance. Курсор привязан к состоянию индекса: после переиндексации возвращается cursor_stale, а для повреждённого токена — cursor_invalid.
get_form_artifact
Читает один артефакт формы конфигурации или один его элемент. Возвращает стабильный идентификатор формы, владельца в канонической форме, имя и вид формы, дерево элементов с именами, типами и вложенностью, объявленные реквизиты и команды, состояние жизненного цикла и запись provenance — откуда и каким маршрутом получен ответ.
object_name
string
""
Объект-владелец; принимаются обе формы записи (Документ.ЗаявкаНаРемонт и Документы.ЗаявкаНаРемонт), в идентификаторе всегда возвращается каноническая множественная форма
form_name
string
""
Имя формы
artifact_id
string
""
Идентификатор из любого инструмента артефактов, в том числе идентификатор элемента (<project>:form:<object>.<form>:Элементы.<element>) — тогда возвращается только этот элемент
include_ranges
bool
true
Возвращать диапазоны позиций
operation
string
"read"
Зарезервировано; принимается только read
get_role_artifact
Возвращает объявленные в конфигурации права роли — либо, в обратном направлении, роли, которые объявляют права на указанный объект.
role_name
string
""
Имя роли
artifact_id
string
""
Идентификатор артефакта роли
object_name
string
""
Только этот параметр — обратное направление: роли, объявляющие права на объект
operation
string
"read"
Зарезервировано; принимается только read
С role_name или artifact_id возвращаются идентификатор, имя, синоним и объявленные права — каждое с объектом метаданных в канонической форме, самим правом и признаком выдачи, с provenance на Roles/<Name>/Ext/Rights.xml.
Это объявленные права конфигурации, а не эффективные права пользователя, сеанса или профиля: для их вычисления нужна работающая информационная база, которой у сервера нет.
get_report_artifact
Возвращает структуру отчёта: стабильный идентификатор и канонический путь, имя и синоним, формы и макеты как ссылки, объявленные реквизиты и табличные части, а при наличии схемы компоновки данных — её расположение вместе с именами наборов данных и полей.
report_name
string
""
Имя отчёта
artifact_id
string
""
Идентификатор артефакта отчёта
operation
string
"read"
Зарезервировано; принимается только read
Ничего не выполняется и результат не компонуется. Если схема есть в выгрузке, но не разобрана этой сборкой, ответ говорит об этом явно, а не опускает поле.
list_artifact_links
Разрешает ссылки артефакта на внешние результаты прогонов и тестов. Обход в обе стороны: по artifact_id — результаты, связанные с артефактом; по result_uri — артефакты, связанные с результатом. Оба направления обслуживаются одной и той же сохранённой записью.
artifact_id
string
""
Артефакт, чьи ссылки нужны
result_uri
string
""
Результат, чьи артефакты нужны
expected_digest
string
""
Ожидаемый content digest; расхождение даёт статус stale
operation
string
"read"
Зарезервировано; принимается только read
Каждая ссылка возвращается с вычисленным статусом: resolved, dangling (артефакт-конец больше не существует), stale (expected_digest не совпадает с записанным) или out_of_scope (конец принадлежит другому проекту). Ссылка, которая больше не разрешается, возвращается со своим статусом, а не опускается. Указанный URI никогда не запрашивается, не открывается и не выполняется.
register_external_result_link
Записывает ссылку на неизменяемый результат, произведённый снаружи — соседним MCP, CI-задачей или другим элементом конвейера. Сервер хранит только ссылку: стабильный URI, content digest, производящую систему и время записи. Он никогда не производит, не запускает, не перезапускает, не загружает, не изменяет и не удаляет результат.
artifact_id
string
—
Артефакт, к которому привязывается результат
result_uri
string
—
Стабильный URI результата
result_digest
string
—
Content digest результата; без него ссылка отклоняется с кодом link_invalid
producer
string
—
Производящая система
operation
string
"read"
Зарезервировано; принимается только read
Ссылка на артефакт другого проекта отклоняется с кодом out_of_scope. Это единственная запись на поверхности артефактов, и она пишет одну строку в собственное хранилище метаданных сервера — никогда в выгрузку конфигурации и никогда в сам результат.
unpack_ordinary_form
Обычная форма в выгрузке Конфигуратора — это Forms/<Имя>/Ext/Form.bin, двоичный контейнер, а не XML. Индекс форм и артефактные модели читают Ext/Form.xml, которого у обычной формы нет; эта пара инструментов — единственный путь сервера к ней.
Правьте не Form.bin, а распакованный рабочий каталог: payload/ — записи контейнера как есть (только их читает обратная сборка), decoded/ — производные представления для чтения (form.json — раскладка как JSON-совместимые данные, module.bsl — модуль формы). Правка производного представления отклоняется сборкой, а не теряется молча.
Дерево раскладки позиционное: оно структурно разбирается, но не именует элементы. Именованные деревья элементов (*.elem.json) появляются только при высокоуровневом разборе целого CF/CFE/EPF, где имена даёт окружающая метаданная.
form_path
string
—
Абсолютный путь к читаемому Form.bin; кириллица допустима
workspace_path
string
—
Куда развернуть рабочий каталог. Каталог должен быть новым, пустым или ранее записанным этим же инструментом (тогда нужен overwrite). Непустой чужой каталог отклоняется всегда
overwrite
bool
false
Заменить существующий рабочий каталог этого контракта
include
string
summary
Какую ограниченную выдержку вернуть: summary (только пути), structure, module или all
max_chars
int
4000
Предел размера каждой выдержки; ограничивается потолком сервера
Возврат: полезная нагрузка контракта ordinary-form/1 — status, entries (имя, вид, размер, sha256, кодировка, пути записи и производного представления), source, manifest_path и запрошенные выдержки. Отказ приходит как status="error" с error_code и подсказкой. Полные производные представления всегда лежат на диске, независимо от того, что попало в ответ.
build_ordinary_form
Записывает рабочий каталог обратно в Form.bin и проверяет результат.
Проверка перечитывает записанное тем же кодом, что читает оригинал, и сравнивает логическую полезную нагрузку — имена записей, размеры и SHA-256 их байтов. Итоговые двоичные файлы намеренно не сравниваются: записи контейнера несут отметки времени записи, поэтому пересобранный Form.bin отличается от исходного побайтно даже когда ничего не менялось. Этот факт сообщает binary_identical, а выжила ли форма — говорит verification.status.
workspace_path
string
—
Рабочий каталог, записанный unpack_ordinary_form
output_path
string
—
Куда записать Form.bin. Никогда не заменяется молча
overwrite
bool
false
Заменить существующий файл по output_path
verify
bool
true
Перечитать результат и сравнить полезную нагрузку. Оставьте включённым
Возврат: output (путь, размер, sha256), source (оригинал, записанный при распаковке), binary_identical, verified, verification (match / mismatch / skipped с хешами по записям) и changed_entries — записи полезной нагрузки, изменённые после распаковки. Неудавшаяся сборка оставляет прежний файл на месте.
reindex
Запуск переиндексации всех настроенных источников данных. Выполняется в фоновом потоке, возвращает статус немедленно.
force
bool
false
Если false — обновляются только изменённые файлы. Если true и есть дорожка с несовместимым FTS (rebuild_required), пересобираются только повреждённые дорожки, здоровые переносятся. Если повреждённых нет — полная переиндексация с нуля
stats
Состояние сервера одним вызовом. Параметров не принимает. Разделы ответа:
collections
Количество документов по коллекциям (metadata, code, help, forms)
embedding_provider
Типизированное состояние провайдера эмбеддингов: provider (remote/local), status (ok, unreachable, unauthorized, model_not_found, budget_exceeded, not_configured, unknown), причина выбора, модель, хост эндпоинта; для локального — бюджет и оценка памяти. Ключ API не содержится ни в каком виде
generation
Жизненный цикл поколений индекса: опубликованное поколение и время публикации, состояние каждой дорожки и счётчики new/changed/deleted/unchanged, строящееся поколение (in_flight), last_failed с типизированной причиной, сохранённые для отката (retained), удерживаемые читателями (pinned), аренда писателя и статус манифеста
indexing
Ход индексации, время последней, статус следующей плановой. last_outcome бывает completed, failed, cancelled или degraded: degraded значит, что прогон завершился, но векторная дорожка не принимает запись (обычно fts_index_incompatible). Поиск по опубликованному поколению продолжает отвечать; в indexing.error названы дорожки, лечение — reindex(force=true)
vector_store_health
Состояние оптимизации и целостности хранилища по дорожкам, счётчики ошибок записи, признак карантина
release
Идентичность сборки: версия, digest, диапазон поддерживаемых раскладок индекса
sessions
Границы и счётчики транспортных сессий
Раздел generation читается без аренды писателя: чтение статистики не блокирует сборку индекса и не блокируется ею.
Поколения индекса
Индекс неизменяем по поколениям: сборка пишет новое поколение рядом с обслуживающим и становится опубликованной только целиком и только после проверки.
Неудавшаяся сборка никогда не публикуется. Если во время сборки пропал провайдер эмбеддингов, поколение завершается состоянием
failedс причинойprovider_failure, указатель публикации продолжает называть прежнее поколение, а инструменты поиска продолжают отвечать из него. Причина видна вstats().generation.last_failed— пустой индекс и «успех» в такой ситуации невозможны.Удалённые объекты действительно исчезают. Объект, пропавший из выгрузки, снимается с обслуживания и при инкрементальном обновлении, и при полной пересборке (
reindex(force=true)): он не появляется в списках и результатах поиска, а запрос по его идентификатору возвращает типизированный результатremovedс последней индексной идентичностью, в которой он существовал, — а не «артефакт не найден».Откат возможен. Прошлые поколения хранятся в количестве
GENERATION_RETENTION_COUNTи доступны для отката; поколение, которое ещё удерживает читатель, не удаляется.
Возможности
ИИ получает инструменты для:
Метаданные — поиск объектов конфигурации, получение детальной структуры реквизитов и типов
Код — семантический поиск по коду, точный поиск функций/процедур, анализ структуры модулей, иерархия вызовов
Формы — поиск форм объектов, получение полной структуры формы (элементы, реквизиты, команды, обработчики)
Зависимости — граф зависимостей между объектами конфигурации
BSL-контекст — доступные методы, свойства и события для контекстов 1С
Справка — поиск по HTML-справке конфигурации
XSD и валидация — генерация XSD-схем из конфигурации и валидация XML
Примеры использования
"Какие реквизиты есть у документа РеализацияТоваров?" →
metadatasearch+get_metadata_details"Найди все обработки, связанные с печатью" →
metadatasearch"Где в конфигурации используется регистр ОстаткиТоваров?" →
graph_dependencies"Покажи структуру справочника Номенклатура" →
get_metadata_details"Найди функцию ОбработкаПроведения" →
search_function"Покажи иерархию вызовов метода РассчитатьСумму" →
get_method_call_hierarchy"Какие формы есть у документа Реализация?" →
search_forms"Покажи структуру формы элемента Номенклатуры" →
inspect_form_layout"Какие методы доступны у объекта Справочник.Номенклатура?" →
bsl_scope_members"Получи XSD-схему для справочника" →
get_xsd_schema"Проверь этот XML на соответствие схеме документа" →
verify_xml
Требования
Docker Engine или Docker Desktop с поддержкой Linux-контейнеров
Лицензионный ключ
Embedding модель (LM Studio или CPU)
Выгрузка конфигурации из Конфигуратора
Порт
8000
MCP endpoint: /mcp. По умолчанию используется streamable-http; для SSE установите USESSE=true. /live проверяет процесс и транспорт, /ready — готовность обязательных индексов и embedding-провайдера. /health временно сохранён как устаревший алиас /live.
Образ Docker
Варианты образа
latest
amd64
~2.9 GB
Полная версия с PyTorch (локальные embedding + API)
light
amd64
~290 MB
Без PyTorch (embedding только через API — LM Studio, OpenRouter и т.д.)
arm64
arm64
~500 MB
Для Apple Silicon / ARM серверов
Описанные ниже METADATA_SOURCE=xml и форматы Designer XML/1C:EDT опубликованы в beta, поэтому быстрый старт использует latest-beta. Stable-теги пока сохраняют прежний контракт с обязательным текстовым отчётом конфигуратора.
Подготовка данных
Требуется один основной источник:
Designer XML-выгрузка в файлы из Конфигуратора (рекомендуется), либо проект 1C:EDT.
Текстовый отчёт по метаданным нужен только для совместимого режима
METADATA_SOURCE=report.
Подробнее: Подготовка данных
Быстрый старт
Конфигурация Cursor
Дополнительно: rlm-tools-bsl (RLM-подход)
CodeMetadataSearchServer использует RAG-подход — предварительно индексирует код и метаданные для семантического поиска. Для дополнительного анализа без предварительной индексации можно использовать rlm-tools-bsl — MCP-сервер для токен-эффективного анализа кодовых баз 1С (BSL).
Подход
Предварительная индексация, семантический поиск
Анализ файлов на лету, без индексации
Время старта
Часы на индексацию
0 секунд
Качество поиска
Высокое (эмбеддинги + BM25 + реранкер)
Высокое (для точечных запросов)
Экономия контекста
Чанки релевантного кода
До 95% за счёт серверных хелперов
Инфраструктура
Docker + embedding модель
pip install (Python 3.10+)
Лучший результат достигается при совместном использовании обоих подходов: CodeMetadataSearchServer для семантического поиска и навигации по архитектуре, rlm-tools-bsl для быстрого точечного анализа кода и экономии контекста.
Структура раздела
Установка — команды запуска
Подготовка данных — выгрузка из Конфигуратора
Конфигурация — все параметры
Доработка
Сервер поддерживает систему плагинов: каталог /app/plugins (PLUGIN_DIR) читается при каждом старте, отдельного флага включения нет. Доступны хуки on_startup, on_request, on_search_candidates, on_result (call-scoped), on_source_file, on_chunk, on_metadata_object (derived-state) и таблицы QUERY_ALIASES, TOOL_PRESETS. Текущее состояние показывает plugin_state, перечитывает каталог plugin_reload.
Полный справочник контракта лежит в образе: /app/src/plugin_api.py, короткая версия — /app/plugins/AGENTS.md, закомментированный пример со всеми хуками — /app/plugins/example.py. Проверить плагин без сборки индекса и запуска сервера: python src/plugin_dry_run.py plugins/10_my_plugin.py.
Без плагинов сервер настраивается составом индексируемых данных и параметрами поиска — см. Конфигурация.
Last updated