Проблема
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).
Вступайте в нашу телеграмм-группу Инфостарт