Зачем это нужно: боль разработки 1С с нейросетями
AI-ассистенты вроде Claude, GPT-4o и DeepSeek уже неплохо помогают писать код. Но в мире 1С они регулярно спотыкаются:
- уверенно выдумывают несуществующие методы (например,
Массив.ДобавитьВКонец()илиТаблицаЗначений.Find()); - путают порядок и типы параметров;
- предлагают методы из 8.3.27 для конфигураций на режиме совместимости 8.3.14;
- пытаются вызвать клиентские методы (вроде
Предупреждение) в фоновом задании на сервере.
Причина проста: у LLM нет доступа к актуальному Синтакс-помощнику. Документация 1С живёт внутри Конфигуратора и 1C:EDT в закрытых форматах. Модель не может просто «погуглить» метод или скачать свежий справочник одним файлом.
Без точного контекста разница между ответом модели - это разница между «угадала» и «знает наверняка».
Почему не подошли существующие решения
- EDT-MCP (
get_platform_documentation):
Возвращает сжатую машинную выжимку на английском языке - заголовок, сигнатуру и одну строчку описания. В ней нет примеров кода, нет разделов «См. также», нет тонкостей применения. - mcp-bsl-platform-context (на базе bsl-context):
Использует статический сторонний слепок справки. Это рабочий вариант, но он оторван от вашей рабочей среды и конкретных версий платформы, установленных у вас.
Идея проекта: не нужно ничего собирать по крупицам из сторонних источников - актуальный, официальный и версионированный Синтакс-помощник уже есть внутри вашей 1C:EDT. Осталось только аккуратно достать его и отдать модели через протокол MCP.
Как это устроено
Архитектура состоит из трёх простых компонентов:

- Плагин для 1C:EDT (Java/Tycho): обращается к внутреннему сервису
PlatformDocProvider, обходит дерево справки для выбранных версий платформы и отправляет структурированные карточки по HTTP. - MCP-сервер (Python, FastAPI, FastMCP): сохраняет карточки в SQLite, индексирует их через полнотекстовый поиск FTS5 и векторный индекс
sqlite-vec. - Сервис эмбеддингов (OpenAI-compatible): строит векторные представления (Giga-Embeddings или BGE-M3).
Важно: GPU не обязателен!
Если у вас нет видеокарты или запущен только базовый контейнер, поиск автоматически работает в режиме FTS-only (полнотекстовый поиск). Он стартует за секунды, потребляет минимум памяти и отлично находит методы по точным и префиксным совпадениям на русском и английском языках.
Что внутри карточки: киллер-фичи для LLM
Плагин выгружает не просто «голый текст», а богатую структуру:
- Имена на двух языках:
Массив.НайтииArray.Find, раздельно объект и метод; - Варианты синтаксиса: до 8 вариантов вызова с описанием каждого параметра;
introduced_in(Версия появления): парсится из раздела «Доступен, начиная с версии...»;availability(Контекст исполнения): Сервер, Тонкий клиент, Толстый клиент, Мобильное приложение и т.д.;- Полное тело: Описание, Параметры, Возвращаемое значение, Примеры использования.
Слои версий (8.3.24, 8.3.25, 8.3.26, 8.3.27, 8.5.1)
Справка выгружается независимыми срезами:
base- срез 8.3.24 (покрывает запросы по 8.3.8–8.3.24);8.3.25,8.3.26,8.3.27,8.5.1- полные срезы соответствующих версий.
При поиске с параметром platform_version = "8.3.24" модель гарантированно не увидит методы и свойства, появившиеся только в 8.3.25+.
Два инструмента для нейросети
Сервер предоставляет два простых MCP-инструмента:
-
docinfo(name, platform_version)- мгновенное получение полной статьи по точному имени (Массив.Найти,HTTPЗапрос,WSСсылки):markdown
# Массив.Найти kind: method | layer: base | en: Array.Find syntax: Массив.Найти(<Значение>) introduced_in: 8.0 | availability: Тонкий клиент, Сервер, Мобильный клиент... [Полное описание, параметры, примеры кода] -
docsearch(query, platform_version)- умный гибридный поиск по смыслу и ключевым словам.
Объединяет результаты FTS5 (BM25) и векторного поиска через Reciprocal Rank Fusion (RRF).
Быстрый старт
Шаг 1. Запуск Docker-сервисов
Клонируем репозиторий и запускаем контейнеры:
bash
git clone https://github.com/malikov-pro/bsl-syntax-help-mcp.git
cd bsl-syntax-help-mcp
docker network create syntax-help
cp docker/mcp/.env.example docker/mcp/.env
# При необходимости настройте токены в docker/mcp/.env
# Запуск MCP-сервера (CPU)
docker compose -f docker/mcp/docker-compose.yml up -d --build
# Опционально: запуск GPU-эмбеддингов (Giga-Embeddings)
# docker compose -f docker/giga/docker-compose.yml up -d --build
Шаг 2. Установка плагина в 1C:EDT
Поддерживаются EDT 2025.2 и 2026.1.
- В EDT откройте:
Справка → Установить новое ПО... - Вставьте ссылку на Update Site:
text
(Либо скачайте zip-архив со страницы Releases).https://malikov-pro.github.io/bsl-syntax-help-mcp/
Совет: при установке из архива снимите флажок «Обращаться во время инсталляции ко всем сайтам обновления…». - В EDT перейдите:
Окно → Параметры → Синтакс-помощник MCP. - Укажите адрес сервера (
http://127.0.0.1:8004), токен выгрузки и выберите нужные версии платформы. - Нажмите «Выгрузить». Выгрузка идёт в фоне и не блокирует работу в EDT.

Шаг 3. Подключение к AI-ассистентам
В настройках MCP вашего клиента (Cursor, VS Code / Cline, Claude Code, Windsurf) добавьте сервер:
json
{
"mcpServers": {
"bsl-syntax-help": {
"url": "http://127.0.0.1:8004/mcp",
"headers": {
"Authorization": "Bearer ВАШ_MCP_TOKEN"
}
}
}
}
Пример работы в диалоге с LLM
Запрос к ассистенту:
«Напиши функцию для копирования файла на сервере с проверкой существования, версия платформы 8.3.20».Действие модели:
Модель вызываетdocsearch("КопироватьФайл", platform_version="8.3.20"), получает точный синтаксис и доступность, после чего выдаёт корректный код без галлюцинаций и с правильной обработкой исключений.
Переносимость: один раз выгрузил - раздал всей команде
После выгрузки вся база со всеми индексами сохраняется в одном файле help.sqlite. Вам не обязательно запускать выгрузку на каждой машине: достаточно передать готовый файл help.sqlite коллегам по команде, и их локальный MCP-сервер подхватит его мгновенно.
Планы по развитию проекта
- добавить аналог навигации по Синтакс-помощнику: вы открываете ветку типа (например «Массив») и видите список всех его методов и свойств.
Ссылки и участие в проекте
- Исходный код и документация: GitHub: malikov-pro/bsl-syntax-help-mcp (Лицензия AGPL-3.0)
- Если проект вам полезен - поддержите его звёздочкой на GitHub!
- Вопросы, баг-репорты и идеи приветствуются в Issues репозитория и в комментариях к этой статье.
Вступайте в нашу телеграмм-группу Инфостарт