> For the complete documentation index, see [llms.txt](https://docs.onerpa.ru/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.onerpa.ru/mcp-servery-1c/servery/code-metadata-search.md).

# CodeMetadataSearchServer

Поиск по метаданным, справке, коду, формам и зависимостям конфигурации 1С. Генерация и валидация XML.

## Назначение

CodeMetadataSearchServer — комплексный MCP-сервер для глубокой работы с конфигурацией 1С. Индексирует метаданные, код модулей, формы, HTML-справку и XML-определения. Предоставляет ИИ **15 инструментов** для:

* Семантического и структурного поиска по метаданным конфигурации
* Полнотекстового и векторного поиска по коду модулей
* Анализа структуры BSL-модулей, иерархии вызовов и зависимостей
* Поиска и анализа форм объектов конфигурации
* Поиска по HTML-справке конфигурации
* Генерации XSD-схем и валидации XML

## Доступные инструменты MCP (15)

Инструменты сгруппированы по функциональным областям.

### Метаданные

| Инструмент             | Описание                                                                |
| ---------------------- | ----------------------------------------------------------------------- |
| `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-контекста               |

### Справка

| Инструмент   | Описание                           |
| ------------ | ---------------------------------- |
| `helpsearch` | Поиск по HTML-справке конфигурации |

### XSD-схемы

| Инструмент       | Описание                                        |
| ---------------- | ----------------------------------------------- |
| `get_xsd_schema` | Получение XSD-схемы для типа объекта метаданных |
| `verify_xml`     | Валидация XML-содержимого по XSD-схеме          |

### Служебные (всегда доступны)

| Инструмент | Описание                                        |
| ---------- | ----------------------------------------------- |
| `reindex`  | Запуск переиндексации в фоновом режиме          |
| `stats`    | Статистика индексов, модель эмбеддингов, аптайм |

***

## Описание инструментов

### 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` |

### 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           | Количество результатов                                                                               |

### 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            | Максимальная глубина обхода                  |

### 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 | —            | Тип метаданных (`Справочник`, `Документ`, `РегистрСведений`, `РегистрНакопления`, `Роль`) или подтип (`Форма`, `СКД`, `Макет`). Принимаются английские алиасы |

### reindex

Запуск переиндексации всех настроенных источников данных. Выполняется в фоновом потоке, возвращает статус немедленно.

| Параметр | Тип  | По умолчанию | Описание                                                                         |
| -------- | ---- | ------------ | -------------------------------------------------------------------------------- |
| `force`  | bool | `false`      | Полная переиндексация с нуля. Если `false` — обновляются только изменённые файлы |

### stats

Статистика индексов: количество документов по коллекциям, провайдер и модель эмбеддингов, время последней индексации, аптайм, статус следующей плановой переиндексации. Параметров не принимает.

***

## Возможности

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

* **Метаданные** — поиск объектов конфигурации, получение детальной структуры реквизитов и типов
* **Код** — семантический поиск по коду, точный поиск функций/процедур, анализ структуры модулей, иерархия вызовов
* **Формы** — поиск форм объектов, получение полной структуры формы (элементы, реквизиты, команды, обработчики)
* **Зависимости** — граф зависимостей между объектами конфигурации
* **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 Desktop с WSL2
* Лицензионный ключ
* Embedding модель (LM Studio или CPU)
* **Выгрузка конфигурации** из Конфигуратора

## Порт

**8000**

MCP endpoint: `/mcp`. По умолчанию используется `streamable-http`; для SSE установите `USESSE=true`. Healthcheck доступен на `/health`.

## Образ Docker

```
comol/1c_code_metadata_mcp:latest
```

### Варианты образа

| Тег      | Архитектура | Размер   | Описание                                                                |
| -------- | ----------- | -------- | ----------------------------------------------------------------------- |
| `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 серверов                                        |

{% hint style="info" %}
Используйте `light`, если embedding модель работает через внешний API (LM Studio, OpenRouter). Образ в 10 раз легче.
{% endhint %}

## Подготовка данных

Требуется выгрузить из Конфигуратора:

1. **Отчет из конфигурации** (текстовый отчет по метаданным)
2. **Выгрузка в файлы** (файлы модулей)

Подробнее: [Подготовка данных](/mcp-servery-1c/servery/code-metadata-search/podgotovka-dannyh.md)

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

```powershell
docker run -d -p 8000:8000 `
  --name 1c_code_metadata_mcp `
  -e LICENSE_KEY=YOUR_LICENSE_KEY `
  -e METADATA_PATH="/app/metadata" `
  -e CODE_PATH="/app/code" `
  -v "E:/1C_Export/Report:/app/metadata" `
  -v "E:/1C_Export/Files:/app/code" `
  -v "E:/bases/mcp_codemetadata:/app/chroma_db" `
  comol/1c_code_metadata_mcp:latest
```

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

```json
{
  "mcpServers": {
    "1c-code-metadata-mcp": {
      "url": "http://localhost:8000/mcp",
      "connection_id": "1c_metadata_service_001"
    }
  }
}
```

## Дополнительно: rlm-tools-bsl (RLM-подход)

CodeMetadataSearchServer использует RAG-подход — предварительно индексирует код и метаданные для семантического поиска. Для дополнительного анализа без предварительной индексации можно использовать [rlm-tools-bsl](https://github.com/Dach-Coin/rlm-tools-bsl) — MCP-сервер для токен-эффективного анализа кодовых баз 1С (BSL).

|                        | CodeMetadataSearchServer (RAG)                  | rlm-tools-bsl (RLM)                   |
| ---------------------- | ----------------------------------------------- | ------------------------------------- |
| **Подход**             | Предварительная индексация, семантический поиск | Анализ файлов на лету, без индексации |
| **Время старта**       | Часы на индексацию                              | 0 секунд                              |
| **Качество поиска**    | Высокое (эмбеддинги + BM25 + реранкер)          | Высокое (для точечных запросов)       |
| **Экономия контекста** | Чанки релевантного кода                         | До 95% за счёт серверных хелперов     |
| **Инфраструктура**     | Docker + embedding модель                       | pip install (Python 3.10+)            |

{% hint style="success" %}
Лучший результат достигается при совместном использовании обоих подходов: CodeMetadataSearchServer для семантического поиска и навигации по архитектуре, rlm-tools-bsl для быстрого точечного анализа кода и экономии контекста.
{% endhint %}

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

* [Установка](/mcp-servery-1c/servery/code-metadata-search/ustanovka.md) — команды запуска
* [Подготовка данных](/mcp-servery-1c/servery/code-metadata-search/podgotovka-dannyh.md) — выгрузка из Конфигуратора
* [Конфигурация](/mcp-servery-1c/servery/code-metadata-search/konfiguraciya.md) — все параметры
