Вайб-кодинг в 1С, часть 2: как победить галлюцинации
Продолжение сериала. В первой части мы открыли ящик Пандоры, а именно прогнали базовый процесс вайб-кодинга в 1С и столкнулись с... некоторыми проблемами - галлюцинациями. Claude (и другие LLM) уверенно генерировал код с несуществующими методами, путал параметры и изобретал API на ходу.

Сегодня разберем, как эту проблему решить с помощью MCP-сервера.
Напоминание: в чём была проблема
В прошлый раз Cursor сгенерировал нам такой код:
FTPСоединение = Новый FTPСоединение(
ПараметрыFTP.АдресСервера,
ПараметрыFTP.Порт,
ПараметрыFTP.Пользователь,
ПараметрыFTP.Пароль
);
// Отправка файла
FTPСоединение.ЗаписатьФайл(ИмяВременногоФайла, ИмяФайлаНаСервере);
FTPСоединение.Закрыть();
Выглядит логично. Но есть нюанс: метода ЗаписатьФайл() у FTPСоединение не существует. Модель его выдумала, потому что "так должно быть по логике".
Это классическая галлюцинация — модель не знает точного API, но уверенно создает код, который похож на правильный.
Почему LLM галлюцинируют на 1С
Начнем с того, что LLM галлюцинируют.. всегда. Но если тема, на которую пишет LLM, очень часто встречалась в тренировочных данных, эта галлюцинация совпадает с правдой. К сожалению, 1С - не самая популярная тема в мире программирования. Поэтому именно 1С-ный код очень часто становится жертвой подхода "я художник, я так вижу".
Решение: MCP-сервер с документацией
Вообще, подход с MCP-сервером - это частный случай RAG (Retrieval-Augmented Generation). Идея в том, чтобы дать модели доступ к внешним данным, когда она не уверена в ответе. MCP-сервер в нашем случае как раз работает таким мостиком - от неуверенной LLM к правильным данным.
Я сделал MCP-сервер 1c-helper, который содержит полную документацию по объектной модели 1С:Предприятие 8.3 и выложил его в открытый доступ. Как делать MCP-серверы - отдельная большая тема, возможно, в будущем напишу статью на эту тему. В этом репо - пример реализации на Python.
Вы, кстати, тоже можете воспользоваться моим сервисом, как именно - распишу ниже.
Как это выглядит на практике
Помните, мы делали обработку по отправке остатков через FTP? Сделаем второй подход. Но для начала добавим MCP-сервер в Cursor.
Шаг 1:
В Cursor открываем настройки MCP (Ctrl+Shift+P => печатаем mcp => Open MCP settings => New MCP server) - откроется настроечный файл mcp.json и в него прописываем MCP-сервер 1c-helper, как показано ниже:
{
"mcpServers": {
"1c-helper": {
"type": "sse",
"url": "http://54.86.57.191:8002/sse",
"headers": {
"Authorization": "Bearer <your token>"
}
}
}
}
Перезапускаем Cursor.
Пасхалка: токен можно получить в моем телеграм-канале.
Шаг 2:
Проверим, что сервис подключен. Спросим у агента какую-нибудь дичь, которую не найти даже в интернете, например
Какие значения есть у ТипОтображенияСерииСлояГеографическойСхемы?
Агент должен ответить что-то вроде:

Обратите внимание: надпись типа Ran search ... query ТипОтображенияСерииСлояГеографическойСхемы говорит о том, что агент делал поиск именно через MCP-сервер.
Шаг 3:
Теперь вернемся к нашей обработке. Повторим промпт, как предыдущий раз.
@ВыгрузкаFTP/Forms/Форма/Ext/Form/Module.bsl Сделай код, который при нажатии на кнопку выгрузки выгрузит остатки склада во временный файл CSV и затем отправит его на указанный адрес через FTPСоединение
Агент отработал с поддержкой MCP-сервера 1c-helper.
Не ручаюсь, что все верно с методической точки зрения, но синтаксически код абсолютно корректен:

Ограничения подхода
Скажем прямо - один этот сервер - только первый шаг по обогащению своего вайб-код инструментария.
Что нужно еще
В следующих частях разберём:
- Как сделать MCP-сервер с метаданными вашей конфигурации
- Автоматическая проверка сгенерированного кода
- Как работать с формами, схемами СКД и прочим не-кодом
Итого
MCP-сервер не делает агента всезнающим, но решает конкретную проблему — галлюцинации в API встроенного языка. Модель получает доступ к точной документации и перестаёт выдумывать несуществующие методы.
Экономия времени на отладке "почему не работает" — существенная. Вместо того чтобы гуглить "1С ПостроительОтчетаАнализаДанных методы", вы получаете рабочий код сразу.