MCP-сервер для проверки ИИ-кода 1С на соответствие API платформы

26.05.26

Интеграция - Нейросети

bsl-context — MCP-сервер, который ловит галлюцинации ИИ в коде 1С (несуществующие перечисления, методы, аргументы), сверяя его с реальным API платформы из синтакс-помощника.

Проблема

LLM при генерации BSL уверенно выдумывает обращения к платформе: несуществующие значения перечислений (классика — ТипРазмещенияТекстаТабличногоДокумента.Перенос), методы, которых у типа нет, неверное число аргументов функций. BSL Language Server это не ловит — он про синтаксис, а не про реальный состав API платформы. Ошибка вылезает только при запуске в базе.

 

Решение

bsl-context — MCP-сервер, который сверяет код с фактическим API конкретной версии платформы. Данные берёт из синтакс-помощника shcntx_ru.hbk (парсит сам, запускать 1С не нужно). Подключается к Claude Code, Cursor и любому MCP-клиенту по HTTP.

Ключевой инструмент — validate_expression: разбирает фрагмент BSL и возвращает находки с уровнем уверенности. Две из них — high-confidence (false-positive ≈ 0), на них можно жёстко блокировать ИИ-выдачу:

  • unknown_enum_value — значения перечисления не существует;
  • wrong_argument_count — число аргументов вне перегрузок функции.

Плюс справочные инструменты (поиск типов, методов, конструкторов, значений перечислений) — всего 9.

 

Происхождение

Идея — превратить синтакс-помощник платформы в контекст для ИИ-ассистента — впервые реализована в mcp-bsl-platform-context от alkoleft. bsl-context — самостоятельная реализация этого подхода на Rust: собственный ридер shcntx_ru.hbk, индекс платформы и валидатор BSL-выражений.

 

Чем дополняет BSL LS

Это разные слои, работают вместе: BSL LS — синтаксис и антипаттерны БСП; bsl-context — ссылочная корректность к платформе. В пайплайне ИИ-генерации прогоняются оба.

 

Установка

Бинарники под Windows/Linux/macOS — в GitHub Releases (v0.4.0). Нужен shcntx_ru.hbk из вашей платформы (C:\Program Files\1cv8\<версия>\bin\) — в репозиторий не входит, путь к своей версии указываете в конфиге. Запуск — HTTP MCP на 127.0.0.1:8007.

В связке с code-index: code-index находит и навигирует по коду, bsl-context проверяет сгенерированный код против платформы.

Исходники: https://github.com/Regsorm/bsl-context (MIT).

Вступайте в нашу телеграмм-группу Инфостарт

MCP ИИ AI нейросеть LLM Claude Code Cursor BSL 1С:Предприятие валидация кода генерация кода синтакс-помощник контекст платформы статический анализ AI-ассистент вайб-кодинг MCP-сервер разработка 1С

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    64484    132    36    

140

Банковские операции Обмен с интернет-банком Мастера заполнения Нейросети Программист Бухгалтер Пользователь 1С:Предприятие 8 1C:ERP 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:ERP. Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)

Корректируйте банковские документы быстро и легко! Создайте правило обработки — и оно автоматически применится при загрузке выписки (отбор по любому реквизиту или регулярному выражению). Решение заполняет расшифровку платежа, комиссию эквайринга, подбирает ведомости на выплату зарплаты, помечает дубли из банка на удаление и многое другое. Доплачивать за алгоритмы не нужно — они включены в решение. Обработка работает при загрузке из файлов клиент-банка и через DirectBank. Новое — искусственный интеллект: модель приводит нестандартные назначения платежа к виду, понятному алгоритмам, а ИИ-ассистент прямо в 1С консультирует по решению и разбирает код правил и алгоритмов. Поддерживаются локальные и облачные OpenAI-совместимые модели — данные могут не покидать ваш контур.

15250 руб.

20.12.2024    16889    83    29    

75

Нейросети Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С:Документооборот 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Подключите Codex к открытой или серверной базе 1С и ставьте задачи обычным языком: получайте данные, находите ошибки и связанные документы, проверяйте права, работайте с вложениями и контролируемо вносите изменения.

12078 руб.

30.07.2026    332    1    2    

2

Нейросети Программист Бесплатно (free)

Эта статья не столько про новую программу, сколько про путь: от желания немного улучшить чужой open-source проект — до создания собственного инструмента, который закрывает весь цикл работы с речью. Транскрибация, генерация статей и описаний через LLM, синтез аудиокниг — всё локально, в одном приложении. Исходники открыты, лицензия MIT.

29.07.2026    1000    Ibrogim    22    

24

Нейросети Программист Бесплатно (free)

Новые результаты теста топовых ИИ в вайбкодинге на 1С. Это продолжение прошлой статьи, где нейросети написали внешнюю обработку за 19 минут. Теперь же с этой же задачей справляются за 3–4 минуты. Прошло всего несколько недель. Что будет дальше?

24.07.2026    10105    top_1c    100    

36

Нейросети Бесплатно (free)

OneBase продолжает развиваться благодаря обратной связи сообщества. В этом обновлении платформа получила ИИ-помощника, визуальный конструктор форм, СКД, push-уведомления и множество других улучшений. Рассказываю, что изменилось, какие решения были приняты и почему OneBase постепенно превращается из pet-проекта в полноценную open-source платформу для разработки бизнес-приложений.

21.07.2026    3064    Ibrogim    46    

20

Нейросети Программист Бесплатно (free)

Мы привыкли считать читаемый код, понятные имена и отсутствие дублирования законами хорошей разработки — но что, если это всего лишь правила нашей профессиональной Флатландии? В новой статье разбираю, каким станет программирование, когда ИИ перестанет писать код для людей и начнёт формировать его по собственным правилам.

21.07.2026    2025    IgorVasilyev    28    

9

Мастера заполнения Нейросети Пользователь 1С 8.3 Абонемент ($m)

Заполнение справочников и документов с предпросмотром, возвратом и локальной ИИ на вашем компьютере.

3 стартмани

14.07.2026    876    2    Rafael-87    14    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Sorm 120 11.07.26 00:00 Сейчас в теме
Доработал.

Что изменилось (v0.7.0).

Знание имён самой конфигурации. Раньше сервер видел только один модуль и вызов процедуры из соседнего файла принимал за опечатку. Теперь он может узнать, какие методы реально объявлены в конфигурации. На УТ это снизило ложные срабатывания с 1420 до 44 (из них 1 настоящее).
Белый список инструментов — в настройках можно оставить только нужные инструменты, лишние спрятать.
Инструмент rebuild_symbol_index — пересобирает собственный индекс имён.
Как теперь взаимодействует с code-index. Тремя способами на выбор (результат одинаковый), задаётся в настройке [symbol_source]:

code_index_mcp — по сети, к работающему code-index (адрес+порт+имя репозитория);
code_index_db — читает файл базы code-index напрямую (та же машина);
lite — свой индекс, code-index вообще не нужен.
Может ли работать автономно и сам индексировать выгрузку. Да. С настройкой kind = "lite" он строит собственный лёгкий индекс прямо из папки с выгрузкой конфигурации:

указываете путь к выгрузке и путь к файлу базы;
вызываете инструмент rebuild_symbol_index (или из командной строки bsl-lite-index build --root <выгрузка> --db <файл>) — после первого запуска и после каждого изменения конфигурации.
То есть code-index — необязательная зависимость: без него сервер полностью рабочий, просто индекс имён строит сам.
Kuznecov_a; +1 Ответить
2. Sorm 120 14.07.26 14:31 Сейчас в теме
Что нового в 0.9.0
1. Находка shadowed_context_name (уверенность high) в validate_module.

Ловит имя переменной, занятое свойством контекста «только чтение»: Параметры = Новый Структура; в модуле управляемой формы не создаёт переменную, а падает при исполнении — «Поле объекта недоступно для записи». Ни компилятор, ни BSL LS этого не видят. Проверяются присваивание (Имя = …) и объявление (Перем Имя;); чтение и вызов метода находкой не считаются.

Два правила: свойства глобального контекста (Справочники, Документы, Метаданные) — в любом модуле; свойства ФормаКлиентскогоПриложения (Параметры, Элементы, Команды, ЭтотОбъект) — в модуле управляемой формы, для чего нужен параметр module_path.

Не ругается там, где имя занимать законно (всё проверено на живом коде УТ): параметр процедуры, процедура «БезКонтекста», обычная неуправляемая форма, реквизит формы, свойство доступное для записи.

2. Новый инструмент reserved_names (без параметров) — отдаёт 150 занятых имён из справки той версии платформы, что настроена на сервере: 98 глобальных + 13 свойств формы (присваивание падает), 2 + 37 доступных для записи (переменная не создаётся, молча меняется сеанс или форма). Хардкода нет — поменяете версию платформы, список изменится сам.

3. Новый параметр form_attributes у validate_module — имена реквизитов формы. Реквизит перекрывает имя контекста, поэтому такие имена исключаются; передав их, вы включаете проверку глобальных имён и внутри модуля формы.

Ломающих изменений нет. Инструментов на сервере стало 11.
3. Sorm 120 20.07.26 15:05 Сейчас в теме
bsl-context 0.11.0: валидатор научился читать запросы
Вышло обновление bsl-context — MCP-сервера, который сверяет код 1С с реальным API платформы и составом конфигурации. Раньше текст запроса из анализа выпадал вместе со строковыми литералами. Теперь разбирается.

Зачем. Неоптимальный запрос синтаксически безупречен: работает, отдаёт правильный результат, просто кладёт сервер на боевой базе. Особенно актуально с генерацией кода моделями — тесты зелёные, ревьюер кивает, в проде таймаут.

Как. Готовой грамматики SDBL для Rust нет (у 1c-syntax она под ANTLR), поэтому написан свой разборщик — рекурсивный спуск, ноль зависимостей. На УТ разбирается 97,3% из 23260 запросов. Что не разобралось — не проверяется вовсе: находки по неполному разбору хуже, чем их отсутствие.

Шесть находок:

Находка Уверенность
temp_table_without_index — временная таблица в соединении без индекса high
or_in_join_condition — ИЛИ в условии соединения high
join_with_subquery — соединение с подзапросом low
physical_register_table — таблица движений вместо виртуальной low
virtual_table_without_filter — виртуальная таблица без отбора low
join_on_unindexed_field — соединение по неиндексированному полю low
Уверенность здесь — про цену исправления, а не про достоверность. Блокируют сборку только те две, что чинятся одной строкой.

Половина правил требует метаданных конфигурации, а не только текста запроса: чтобы сказать «поле не индексировано», надо знать свойство «Индексировать»; чтобы сказать «читаете физическую таблицу» — что регистр остатковый. Одного разбора SDBL для этого мало.

Прогон по УТ: 3160 находок в 948 модулях, из них 2155 — неиндексированные временные таблицы.

Что вскрыл корпус. Три правила пришлось переписать после реальной конфигурации при зелёных модульных тестах. Самое показательное: 16360 → 380 находок, когда выяснилось, что соединение ищет по индексу присоединяемой таблицы, и в ПО А.Номенклатура = С.Ссылка левое поле индексировать незачем. Пятнадцать тысяч ложных срабатываний из одного неверного допущения.
Для отправки сообщения требуется регистрация/авторизация