Представляем развитие проекта |
![]() |
В новой версии ряд важных изменений
Выдача результатов поиска теперь максимально компактная
- • только идентификаторы и наименования объектов метаданных (внутреннее наименование и синоним).
- • Результаты возвращаются в двух форматах: и в структурированном json'е и плоским текстом.
- • Первый хорошо понимают современные клиенты типа cursor'а, а обычный текст пока оставлен для обратной совместимости с mcp-клиентами, которые не поддерживают структурированный ответ.
- • На моем опыте - современные llm'ки отлично сами понимают какой из результатов поиска наиболее релевантный, без необходимости подключать реранкер. Такой подход дает лучшую предсказуемость и, самое главное, - не засоряет контекстное окно лишними данными.
Переработан гибридный поиск
- • Теперь семантический поиск по обычным векторам можно смешивать с поиском по разреженным или sparse-векторам, в которые по алгоритму bm25 кодируются ключевые слова всего тела описания объекта метаданных.
- • Для каких-то конфигураций 1С с использованием какой-то особой терминологии в названиях реквизитов - подключение поиска по разреженным векторам даст заметный прирост качества поиска.
- • Для типовых же конфигураций особого улучшения поиска не будет, потому что "специфичные" ключевые слова и так обычно фигурирую в наименовании объекта. Например, если нужно найти документ или справочник связанный с работой с ЕГАИС, то слово ЕГАИС и так присутствует в названии.
Бонусом добавил mcp для проверки синтаксиса и поиска по справке синтакс-помощника
- • Бонусом, потому что эти mcp основаны на чужих решениях (в частности справка по синтаксису от Алексея Корякина), я же оборачиваю это в удобный запуск в docker-контейнерах.
- • Для проверки синтаксиса сделал так, чтобы BSL Language Server запускался в websocket-режиме, чтобы каждое обращение mcp на проверку синтаксиса не переподнимало каждый раз java-приложение (это не мгновенно).
Если детализировать схему до конкретных контейнеров, то получается такая схема:

Именно mcp тут три контейнера, остальные вспомогательные.
Вопрос, который может возникнуть: зачем такая фрагментация?
Ответ на него: Потому что микросервисную архитектуру проще разрабатывать, тестировать и, самое главное, эти сервисы можно переиспользовать.
Достоинства и преимущества решения
Компактный вывод результатов
Минимизирует нагрузку на контекстное окно LLM, ускоряя обработку запросов и снижая затраты на API.
Гибридный поиск
Семантический + BM25 повышает точность для нестандартных конфигураций 1С, где ключевые слова в описаниях не совпадают с названиями.
Выбор моделей векторизации
Включая легковесные, обеспечивая быстрый отклик — идеально для локального развертывания без облачных затрат.
Поддержка нескольких конфигураций 1С
В одной БД позволяет работать с разными проектами одновременно, без переключений.
Микросервисная архитектура
Упрощает масштабирование и интеграцию: каждый компонент можно использовать отдельно в других проектах.
Переработанный с нуля MCP для проверки синтаксиса
LLM-агенты IDE общаются с MCP только текстом. Из-за этого наивный подход к проверке синтаксиса работает плохо, потому что LLM'ке нужно сформировать для MCP запрос с текстом модуля, а модули в 1С бывают гигантские. Да, LLM-агенты умеют сами понять, что можно проверять только одну процедуру/функцию, но это все равно дорогие выходные (output) токены.
Намного экономнее, быстрее и правильнее передавать для проверки в MCP имя файла. Это потребует сделать для MCP-сервера "видимой" папку с исходниками 1С, но при работе с docker это не проблема. При таком подходе практически не тратятся output токены.
Дополнительные преимущества
Интеграция и производительность
Для bsl language server можно указать configurationRoot и инициализировать рабочее пространство. Да, первый запуск будет долгим, но последующие проверки быстрыми с более глубокими с анализом (с учетом общих модулей).
Для больших кодовых баз, типа ERP можно опционально указать параметры памяти Java (Xms/Xmx) для bsl language server.
Оптимизация вывода и контекста
Включена по умолчанию опция выводить результаты проверки только с ошибками, скрывая предупреждения и рекомендации. Это сильно уменьшает засорение контекста (услышал недавно красивый термин "context poisoning" или отравление контекста).
Сокращен формат ответа, сохраняя структурность. Опять же - ради экономии окна контекста.
Гибкость и совместимость
Разные LLM-агенты по разному передают имя файла, некоторые полный путь, некоторые относительный. MCP автоматически понимает оба варианта.
MCP можно запустить с выбором транспортного протокола: Streamable HTTP или SSE. Ранее казалось, что уже все поддерживают Streamable HTTP, но нет, тот же Gemini CLI работает только по SSE, хотя бы ради него добавлена совместимость с SSE.
Открытый вопрос: Остался для меня открытым вопрос, а кто экранирует текст модулей для JSON-RPC вызова? Не смог найти убедительной информации о логике работы агентов типа Cline, RooCode или Copilot, скорее всего экранирование делает фреймворк агента (не тратя токены).
Примеры использования
Информация по обновлениям
# удаление старых контейнеров (векторная БД и модель векторизации сохранятся)
docker compose down
# копируете новый docker-compose.yml
# корректируете настройки под себя:
# sse или http транспорт
# для контейнера проверки синтаксиса свою папку проекта
# запускаете новые контейнеры
docker compose up -d
- MCP по Метаданным: переименованы инструменты и параметры, улучшены описания.
- MCP по справке Синтакс-помощника: переведён на RAG с гибридным поиском.
- Все MCP теперь поддерживают оба транспорта: SSE и HTTP.
- Обновлён загрузчик векторной БД для данных Синтакс-помощника.
1) MCP по метаданным
Пересмотрены названия инструментов и параметры: убрали неоднозначности, улучшили описания для LLM-агентов.
Пример: search → search_metadata, get_details... → metadata_details_by_id.
В исследовании Microsoft Research описана «интерференция инструментов»: при подключении нескольких MCP часто совпадают имена (особенно search). Claude Code частично решает это префиксами, но у многих агентов этого нет. Новые имена и аннотации уменьшают коллизии и повышают точность выбора инструмента.
2) MCP по Синтакс-помощнику
Перевели поиск на RAG с гибридным ранжированием: BM25 + векторное сопоставление.
Индексируем название, краткое описание и ключевые слова по документу.
Возвращаем LLM-агенту краткий список кандидатов, а он дозапрашивает детали по выбранному объекту.
Гранулярность ответов
- Для глобальных свойств и методов: текст обычно небольшой — отдаём целиком.
- Для встроенных типов (где описания большие): отдаём гранулярно — по конкретному свойству/методу.
Результат
Быстрее находим релевант и меньше «засоряем» контекст.
3) Транспортные протоколы (SSE и HTTP)
Оба MCP поддерживают SSE и HTTP. У ряда агентов SSE всё ещё основной — поэтому оставили поддержку.
Примеры
Новый загрузчик в векторную БД:

Новые имена инструментов и подробные аннотации:



Названия и аннотации инструментов и параметров
-
Один из поинтов статьи про проблемы с неймспейсами и неоднозначность названий инструментов. -
-
-
Комплект поставки и запуск решения
Комплект поставки
Решение поставляется в виде нескольких файлов:
- • Docker-compose файл описывающего запуск всех контейнеров
- - Большинство настроек задаются в нем же. Пояснения к настройкам будут в текстовой версии публикации.
- - В отдельный файлик вынесены настройки сервера, чтобы можно было выключать/выключать опции проверок, например оставить только критичные тем самым сэкономив еще немного контекста.
- • Обработка выгрузки описания метаданных
- • Примеров файлов конфигурации mcp для cursor и vs code (для других IDE конфигурации аналогичны)
Процесс запуска решения
Копируете файлы поставки в любую удобную папку, например: C:\mcp\
В консоли выполняете:
cd C:\mcp
docker compose up -d
Дольше всего будет запускаться контейнер embedding-service
, он объемные (4+Гб) и при первом запуске будет скачивать модель векторизации.
Проверить запуск можно в логах контейнера:
docker compose logs embedding-service -f
После запуска можно переходить к выгрузке / загрузке метаданных:
- • Внешней обработкой выгружаем описания из 1С.
- • Открываем веб-страничку сервиса загрузки описаний в векторную БД http://localhost:8501. При загрузке указываем название коллекции в БД. Это позволяет одним mcp одновременно работать с описаниями метаданных нескольких разных конфигураций 1С.
Все. Можем открывать IDE и прописывать параметры подключения mcp.
Пример для Cursor:
"mcpServers": {
"1c-metadata": {
"timeout": 60,
"headers": {
"x-collection-name": "1c_ut"
},
"url": "http://172.25.48.1:9001/mcp",
"disabled": false
},
"1c-check": {
"timeout": 60,
"url": "http://172.25.48.1:9002/mcp",
"disabled": false
},
"bsl-context": {
"command": "docker",
"args": [
"exec",
"-i",
"mcp-bsl-context-stdio",
"java",
"-jar",
"/app/mcp-bsl-context.jar",
"--mode",
"stdio",
"--platform-path",
"/app/1c-platform"
]
}
}
x-collection-name
меняете на название коллекции, которое указали при первичной загрузки в векторную БД.
Доступные настройки
Через переменные окружения можно указать модель и размерность ее векторов:
MODEL_NAME=sergeyzh/BERTA
- модель по умолчаниюVEC_DIM=768
- размерность векторов
По умолчанию указана sergeyzh/BERTA - она маленькая, быстрая и при этом дает хорошие результаты. Контейнер с ней утилизирует буквально 400Мб RAM.
Можно пробовать и другие модели:
intfloat/multilingual-e5-base
| 768intfloat/multilingual-e5-small
| 384Alibaba-NLP/gte-multilingual-base
| 768Qwen/Qwen3-Embedding-0.6B
| 1024ai-forever/FRIDA
| 1536
Qwen/Qwen3-Embedding-0.6B - дает отличные результаты, но это уже 1,5-2Гб RAM и в несколько раз медленнее.
Доступные настройки:
ROW_BATCH_SIZE
- количество объектов метаданных обрабатывать за итерациюEMBEDDING_BATCH_SIZE
- размер батча векторизации, сколько одним запросом получать векторов от сервиса векторизации
Доступные настройки:
TOPK_LITE_SEARCH_LIMIT
- количество объектов в результатах поискаUSE_HYBRID_SEARCH
- использовать ли гибридный поиск (добавлять ли поиск по ключевым словам)
В блоке подключения томов volumes
нужно указать путь к папке с платформой 1С, например:
C:/Program Files/1cv8/8.3.27.1644/bin
Остались вопросы?
Для получения дополнительной информации и помощи в настройке модуля под нужды вашего бизнеса — оставьте заявку
