For the complete documentation index, see llms.txt. This page is also available as Markdown.

Graph Metadata Search

Графовый поиск по метаданным конфигурации 1С через Neo4j.

Назначение

Graph Metadata Search строит граф связей метаданных вашей конфигурации 1С. ИИ начинает понимать, как объекты связаны между собой, а не просто видит их названия. Сервер поддерживает анализ BSL-кода, структуры форм, расширений, подписок на события, прав ролей и предопределённых элементов.

Возможности

ИИ получает инструменты для:

  • Анализа связей документов, регистров, справочников

  • Нахождения зависимостей и анализа влияния изменений (trace_impact)

  • Навигации по графу вызовов BSL-процедур (trace_call_chain)

  • Получения полного досье объекта за один вызов (get_object_dossier)

  • Поиска по описаниям, синонимам и справке объектов (search_metadata_by_description)

  • Семантического и полнотекстового поиска по BSL-коду на уровне процедур

  • Сравнения базовой конфигурации и расширения (compare_base_and_extension)

  • Работы со структурой управляемых форм (элементы, события, привязки)

  • Шаблонных запросов без LLM — мгновенные детерминированные ответы

Примеры использования

  • "Какие регистры использует документ Реализация?"

  • "Покажи все объекты, связанные со справочником Контрагенты"

  • "Какая структура модуля документа Заказ?"

  • "Какие формы есть у справочника Номенклатура?"

  • "Покажи полное досье справочника Контрагенты"

  • "Кто вызывает процедуру ПроверитьЗаполнение?"

  • "Какое влияние окажет изменение справочника Номенклатура?"

  • "Что изменило расширение МоёРасширение в справочнике Контрагенты?"

  • "Найди все неиспользуемые процедуры в документе Реализация"

  • "Какие роли имеют доступ к справочнику Контрагенты?"

Особенности

  • Использует Neo4j для хранения графа

  • Понимает связи между объектами (USED_IN, DO_MOVEMENTS_IN, CALLS, EXTENDS, OVERRIDES)

  • Особенно полезен для больших/чужих конфигураций

  • Требует docker-compose для запуска

  • Поддерживает шаблонный режим — работа без LLM через JSON-запросы

  • Поддерживает расширения конфигурации и сравнение с базой

  • Фоновая индексация — сервер доступен сразу, обогащение данных выполняется в фоне

  • Веб-интерфейс Neo4j Browser для визуализации графа: http://localhost:7474

  • Веб-интерфейс поиска: http://localhost:8006/search

  • OpenAPI документация: http://localhost:8006/docs

Доступные инструменты MCP

ИИ получает следующие инструменты:

Инструмент
Описание

search_metadata

Структурный поиск объектов метаданных через Cypher или JSON-шаблоны

search_metadata_by_description

Поиск объектов метаданных по описанию, синониму, справке (полнотекстовый + семантический)

get_metadata_prompt

Получение схемы БД Neo4j, примеров Cypher и списка шаблонных операций

execute_metadata_cypher

Прямое выполнение Cypher-запросов к Neo4j

find_objects_using_object

Объекты, использующие данный как тип (через USED_IN)

find_usages_of_object

Конкретные реквизиты/измерения/ресурсы, ссылающиеся на объект

find_register_movement_docs

Документы, делающие движения в указанный регистр

search_code

Поиск по BSL-коду процедур/функций (полнотекстовый, семантический, гибридный) с уровнями детализации

business_search

Семантический поиск по бизнес-описаниям с обогащением граф-контекстом

answer_metadata_question

RAG-ответы на аналитические вопросы о метаданных (требует LLM)

get_object_dossier

Полное досье объекта: структура, формы, подписки, роли, зависимости, код

trace_impact

Анализ влияния — рекурсивный обход зависимостей объекта

trace_call_chain

Анализ цепочки вызовов BSL-процедур в обоих направлениях

find_by_guid

Поиск узла метаданных по GUID-идентификатору

resolve_qualified_name

Резолв квалифицированного имени (например, Справочник.Контрагенты.Реквизит.ИНН)

get_indexing_status

Статус фоновой индексации и последняя ошибка, если она была

compare_base_and_extension

Сравнение объекта базовой конфигурации и расширения

search_metadata

Структурный поиск объектов метаданных 1С по точным или частичным именам, категориям, связям и свойствам. Использует Cypher-запросы к графовой базе Neo4j.

Поддерживает два формата запросов:

  1. JSON-шаблон (предпочтительный — мгновенный, детерминированный, без LLM): {"operation": "list_attributes", "object_name": "Контрагенты"}

  2. Структурный текст — LLM генерирует Cypher-запрос (требует OpenAI API).

Параметр
Тип
По умолчанию
Описание

query

string

JSON-шаблон или структурный запрос на естественном языке

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

Возврат: Результаты Cypher-запроса или шаблонной операции в текстовом формате.

Этот инструмент предназначен для СТРУКТУРНЫХ запросов — когда известны имена объектов, категории или типы связей. Для поиска по смыслу используйте business_search или search_metadata_by_description.

search_metadata_by_description

Поиск объектов метаданных 1С по описательным полям: имя, Синоним, Комментарий, Описание, справка (help_text). Поддерживает полнотекстовый и гибридный (fulltext + vector) режимы.

Параметр
Тип
По умолчанию
Описание

query

string

Описание искомых объектов на естественном языке. Поддерживается синтаксис Lucene: AND, OR, "точная фраза", подстановка*

top_k

int

10

Максимальное количество результатов

filter_type

string

Фильтр по категории метаданных (например, Справочники, Документы)

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

use_fuzzy

bool

false

Нечёткий поиск — полезен при возможных опечатках или неточном написании

alpha

float

0.5

Баланс fulltext / vector при гибридном режиме (1.0 = только fulltext, 0.0 = только vector)

Возврат: Ранжированные результаты с именем, категорией, score и отрывком из описания.

При ENABLE_METADATA_DESCRIPTION_EMBEDDING=true автоматически включается гибридный режим (fulltext + vector) для более точного ранжирования.

get_metadata_prompt

Возвращает описание схемы базы данных Neo4j и примеры Cypher-запросов. При включённом шаблонном режиме (TEMPLATE_MODE_ENABLED=true) также возвращает список всех доступных шаблонных операций с параметрами и примерами JSON.

Параметры отсутствуют.

Возврат: Строка со схемой БД, примерами запросов и (опционально) описанием шаблонных операций.

execute_metadata_cypher

Прямое выполнение Cypher-запроса к базе метаданных Neo4j. Используйте схему из get_metadata_prompt для построения запросов.

Параметр
Тип
По умолчанию
Описание

query

string

Cypher-запрос для выполнения

Возврат: Результаты запроса в JSON-формате.

find_objects_using_object

Поиск всех объектов метаданных, в которых указанный объект используется как ссылочный тип (через связь USED_IN). Отвечает на вопрос «Где используется справочник Контрагенты?».

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта без префикса категории (Контрагенты, а не Справочник.Контрагенты)

project_name

string

Фильтр по имени конфигурации

Возврат: Список объектов, ссылающихся на указанный.

find_usages_of_object

Поиск конкретных реквизитов, измерений и ресурсов, в которых указанный объект используется как тип. Более детальная версия find_objects_using_object — показывает каждый отдельный реквизит с владельцем и типом.

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта без префикса категории

project_name

string

Фильтр по имени конфигурации

Возврат: Список реквизитов/измерений/ресурсов с указанием объекта-владельца и типа.

find_register_movement_docs

Поиск всех документов, делающих движения (проводки) в указанный регистр. Отвечает на вопрос «Какие документы делают движения по регистру Продажи?».

Параметр
Тип
По умолчанию
Описание

register_name

string

Имя регистра без префикса категории (Продажи, а не РегистрНакопления.Продажи)

project_name

string

Фильтр по имени конфигурации

Возврат: Список документов с указанием категории.

search_code

Поиск по BSL-коду процедур и функций. Работает на уровне отдельных Routine-нод (при загруженном BSL-графе) или на уровне MetadataObject.program_code (fallback). В гибридном режиме используется Reciprocal Rank Fusion (RRF, k=60) для объединения результатов.

Параметр
Тип
По умолчанию
Описание

query

string

Имя функции, ключевое слово или описание на естественном языке

search_type

string

hybrid

Тип поиска: fulltext, semantic, hybrid

top_k

int

3

Максимальное количество результатов на каждый тип поиска

filter_type

string

Фильтр по категории метаданных

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

detail_level

string

L1

Уровень детализации результатов: L0, L1, L2, L3

Уровни детализации:

Уровень
Содержимое

L0

Полный код процедуры без обрезки

L1

Сигнатура + описание + первые 5 вызовов (по умолчанию)

L2

Краткая карточка: имя, владелец, тип модуля, export-флаг, директива

L3

Только имя и score (минимальный расход токенов)

Примеры:

  • search_code("ПроверитьЗаполнение") — поиск по имени функции

  • search_code("расчет скидки", search_type="semantic") — поиск по назначению

  • search_code("Процедура AND Скидк*", search_type="fulltext") — синтаксис Lucene

  • search_code("расчет", detail_level="L3", top_k=20) — максимум результатов, минимум токенов

Семантический поиск объектов метаданных по описанию бизнес-функциональности. Результаты автоматически обогащаются граф-контекстом: реквизиты, табличные части, формы, связи.

Параметр
Тип
По умолчанию
Описание

query

string

Описание искомой функциональности на естественном языке

top_k

int

10

Максимальное количество результатов

filter_type

string

Фильтр по категории метаданных

include_structure

bool

true

Обогащать результаты граф-контекстом (реквизиты, ТЧ, формы, USED_IN)

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

Возврат: Ранжированные результаты с оценками релевантности, бизнес-контекстом и структурой объекта.

Требует включения ENABLE_BUSINESS_SEARCH в конфигурации. При include_structure=false возвращается плоский результат без граф-контекста. При недоступности векторного индекса автоматически переключается на полнотекстовый поиск.

answer_metadata_question

Ответы на сложные аналитические вопросы о метаданных 1С с использованием RAG (Retrieval-Augmented Generation). Собирает контекст из графа Neo4j и кода, затем генерирует ответ через LLM.

Используйте этот инструмент, когда вопрос требует РАССУЖДЕНИЯ или АНАЛИЗА нескольких объектов, а не простого поиска. Для простых запросов используйте специализированные инструменты: get_object_dossier, search_metadata, business_search, search_code, trace_impact.

Параметр
Тип
По умолчанию
Описание

question

string

Аналитический вопрос о метаданных на русском языке. Чем конкретнее — тем лучше

max_tokens

int

4000

Максимальное количество токенов для ответа LLM

include_code

bool

true

Включать фрагменты кода в контекст

project_name

string

Фильтр по имени конфигурации

Возврат: Структурированный ответ с источниками, количеством использованных токенов и оценкой уверенности.

Примеры:

  • answer_metadata_question(question="Как реализован механизм скидок?")

  • answer_metadata_question(question="Какие объекты участвуют в процессе закупки и как они связаны?")

Требует настроенного LLM (OPENAI_API_KEY).

get_object_dossier

Полное досье объекта метаданных — структурированный паспорт со всеми фактическими данными из графа за один вызов, без LLM.

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта метаданных

sections

list

все

Список секций: structure, forms, subscriptions, roles, dependencies, code, business_info

Секции досье:

Секция
Содержимое

structure

Реквизиты, табличные части, измерения, ресурсы, команды, макеты

forms

Список форм с указанием форм по умолчанию

subscriptions

Подписки на события, источником которых является объект

roles

Роли с правами доступа к объекту

dependencies

Зависимости USED_IN (upstream/downstream) и движения регистров

code

Перечень модулей и процедур (имена и сигнатуры, без тел)

business_info

AI-описание бизнес-функциональности (если доступно)

Возврат: Структурированный текст с заголовками секций и фактами из графа.

trace_impact

Анализ влияния — рекурсивный обход зависимостей объекта по связям USED_IN, DO_MOVEMENTS_IN и CALLS.

Параметр
Тип
По умолчанию
Описание

object_name

string

Имя объекта метаданных

depth

int

3

Глубина обхода (максимум 5)

direction

string

downstream

Направление: downstream (кто зависит), upstream (от чего зависит), both

relationship_types

list

все

Фильтр типов связей: USED_IN, DO_MOVEMENTS_IN, CALLS

project_name

string

Фильтр по имени конфигурации. Нужен только при нескольких конфигурациях в одной базе

Возврат: Список зависимых объектов с указанием глубины, типа связи, категории и промежуточного объекта. Результат усекается до 500 записей.

Примеры:

  • trace_impact(object_name="Контрагенты") — все downstream-зависимости на глубину 3

  • trace_impact(object_name="Продажи", direction="upstream") — от чего зависит регистр

  • trace_impact(object_name="Контрагенты", relationship_types=["USED_IN"]) — только ссылочные зависимости

trace_call_chain

Анализ цепочки вызовов BSL-процедур — рекурсивный обход графа вызовов в обоих направлениях.

Параметр
Тип
По умолчанию
Описание

routine_name

string

Имя процедуры/функции

object_name

string

Имя объекта-владельца (для устранения неоднозначности)

direction

string

callees

Направление: callees (кого вызывает), callers (кто вызывает)

depth

int

3

Глубина обхода (максимум 10)

Возврат: Дерево вызовов с обогащёнными данными: имя процедуры, объект-владелец, тип модуля, директива, сигнатура, export-флаг, глубина. Результат усекается до 200 записей.

Требует загруженного BSL-графа (LOAD_BSL_SIGNATURES=true и CODE_EXPORT_PATH).

find_by_guid

Поиск любого узла метаданных по его GUID-идентификатору. Возвращает тип узла, имя и свойства.

Параметр
Тип
По умолчанию
Описание

guid

string

GUID для поиска (например, 8f1c2d34-5678-4abc-9def-0123456789ab)

Возврат: Информация о найденном узле или сообщение об ошибке.

resolve_qualified_name

Резолв полного квалифицированного имени 1С-метаданных в соответствующий узел графа. Поддерживает паттерны: Справочник.Контрагенты, Справочник.Контрагенты.Реквизит.ОсновнойМенеджер, Документ.РеализацияТоваровУслуг.ТабличнаяЧасть.Товары.

Параметр
Тип
По умолчанию
Описание

qualified_name

string

Точечное квалифицированное имя (например, Справочник.Контрагенты.Реквизит.ИНН)

Возврат: Информация о резолвленном узле.

get_indexing_status

Возвращает состояние фоновой индексации и обогащения данных. Используйте после запуска сервера и после изменения выгрузки, чтобы проверить, завершились ли этапы загрузки метаданных, BSL-кода, форм, прав и embedding-индексов.

Параметры отсутствуют.

Возврат: Строка со статусом индексации, прогрессом этапов и диагностикой последней ошибки, если она возникла.

compare_base_and_extension

Структурное сравнение объекта базовой конфигурации и его расширения: что добавлено, что переопределено, что осталось из базы.

Параметр
Тип
Описание

object_name

string

Имя объекта метаданных

extension_name

string

Имя расширения

Возврат: Детальное сравнение по секциям — реквизиты, формы, процедуры — с указанием статуса каждого элемента (из базы / переопределён / добавлен расширением).

Требует предварительной загрузки и базовой конфигурации, и расширения (через EXTENSION_NAME и EXTENSION_BASE_PROJECT).

Шаблонные операции (Template Mode)

При включённом шаблонном режиме (TEMPLATE_MODE_ENABLED=true) инструмент search_metadata принимает JSON-запросы вида {"operation": "...", ...} и возвращает мгновенные детерминированные ответы без LLM.

Режимы работы

Режим
Переменные
Поведение

Template Only

TEMPLATE_MODE_ENABLED=true, TEMPLATE_MODE_ONLY=true

Только JSON-запросы, LLM не используется

Combined

TEMPLATE_MODE_ENABLED=true, TEMPLATE_MODE_ONLY=false

JSON → шаблон, текст → LLM, fallback LLM при пустом результате

LLM Only

TEMPLATE_MODE_ENABLED=false

Только LLM (поведение по умолчанию)

Доступные операции

Структура объектов

Операция
Параметры
Описание

list_attributes

object_name

Реквизиты объекта с типами

list_tabular_parts

object_name

Табличные части с их реквизитами

object_structure

object_name

Полная структура: реквизиты, ТЧ, формы, измерения, ресурсы, значения перечислений

list_forms

object_name

Формы объекта

list_enum_values

object_name

Значения перечисления

list_resources

object_name

Ресурсы регистра

list_dimensions

object_name

Измерения регистра

list_commands

object_name

Команды объекта

list_layouts

object_name

Макеты объекта

Операция
Параметры
Описание

list_objects_by_category

category_name

Все объекты указанной категории

list_objects_by_name

name_pattern

Поиск объектов по подстроке имени

find_by_guid

guid

Поиск узла по GUID

resolve_qn

qualified_name

Резолв квалифицированного имени (например, Справочник.Контрагенты.Реквизит.ИНН)

Типы данных

Операция
Параметры
Описание

get_attribute_type

object_name, attribute_name

Тип указанного реквизита

list_attributes_with_type

type_pattern

Все реквизиты с указанным типом

Связи и зависимости

Операция
Параметры
Описание

find_objects_using_object

object_name

Объекты, использующие данный как тип

find_usages_of_object

object_name

Конкретные реквизиты/ресурсы/измерения, ссылающиеся на объект

find_documents_making_movements_into_register

register_name

Документы, делающие движения в регистр

trace_impact

object_name, depth, direction

Рекурсивный анализ зависимостей

trace_call_chain

routine_name, object_name, direction, depth

Цепочка вызовов BSL-процедур

HTTP-сервисы

Операция
Параметры
Описание

list_http_services

Все HTTP-сервисы конфигурации

list_url_templates_of_service

service_name

Шаблоны URL указанного HTTP-сервиса

list_url_methods_of_template

service_name, template_name

Методы (GET, POST, ...) указанного шаблона

Подписки на события

Операция
Параметры
Описание

list_event_subscriptions

Все подписки на события в конфигурации

list_event_subscriptions_of_object

object_name

Подписки, в которых объект является источником

Предопределённые элементы

Операция
Параметры
Описание

list_predefined_of_object

object_name

Предопределённые элементы объекта с иерархией

find_predefined_by_flag

object_name, flag_name, flag_value

Поиск предопределённых по значению свойства

Права доступа

Операция
Параметры
Описание

list_roles_with_access_to_target

target_name

Роли с доступом к объекту

list_access_targets_of_role

role_name

Объекты, к которым имеет доступ роль

get_access_of_role_to_target

role_name, target_name

Детальные права роли к объекту

Структура форм (XML)

Операция
Параметры
Описание

list_form_controls

object_name, form_name

Элементы управления формы с иерархией

list_form_events

object_name, form_name

События формы и её элементов

list_form_commands

object_name, form_name

Команды формы

list_form_bindings

object_name, form_name

Привязки элементов к данным и командам

list_form_event_handlers

object_name, form_name

Пары (событие → обработчик Routine)

get_default_forms

object_name

Формы по умолчанию (элемента, списка, выбора)

BSL-код

Операция
Параметры
Описание

get_routine_body

routine_name, owner_name

Полное тело процедуры с сигнатурой и описанием

list_callers_of_routine

routine_name, owner_name

Кто вызывает указанную процедуру

list_callees_of_routine

routine_name, owner_name

Кого вызывает указанная процедура

call_graph_subtree

routine_name, owner_name, depth, direction

Поддерево вызовов на указанную глубину

find_unused_routines

owner_name

Неиспользуемые процедуры объекта

list_exported_routines

owner_name

Экспортные методы объекта

Расширения

Операция
Параметры
Описание

find_base_object

object_name, extension_name

Базовый объект, на который указывает EXTENDS

list_overrides_of_object

object_name, extension_name

Список переопределённых элементов (формы, модули, процедуры)

list_extension_objects

extension_name, extends_type

Все объекты расширения с типом (added/modified)

Досье

Операция
Параметры
Описание

get_object_dossier

object_name, sections

Полное досье объекта (аналогично MCP-инструменту)

Пример JSON-запроса

Веб-интерфейсы

Neo4j Browser

Логин: neo4j Пароль: указанный в NEO4J_PASSWORD (по умолчанию password123)

В Neo4j Browser можно:

  • Визуализировать граф метаданных

  • Выполнять Cypher-запросы

  • Исследовать связи между объектами

Интерфейс поиска

Простой веб-интерфейс для поиска по метаданным без использования Cursor.

OpenAPI документация

Автогенерируемая документация FastAPI с описанием HTTP-эндпоинтов.

Требования

  • Docker Desktop с WSL2

  • Лицензионный ключ

  • Embedding модель (LM Studio или CPU)

  • Выгрузка конфигурации из Конфигуратора (отчёт + опционально файлы)

  • ~2 ГБ RAM для Neo4j

Для расширенных функций:

  • XML-выгрузка конфигурации в файлы — для BSL-графа, форм, подписок, ролей, предопределённых

  • OpenAI-совместимый LLM — для режима Combined (LLM fallback) и генерации бизнес-описаний

Порт

8006 (MCP сервер) 7474 (Neo4j Browser) 7687 (Neo4j Bolt)

Образ Docker

Архитектура

Быстрый старт

Используйте docker-compose для запуска обоих сервисов.

Подробнее: Установка

Конфигурация Cursor

Структура раздела

Last updated