Хочу поделиться опытом решения задачи вайб-кодинга в чат-боте Ollama на примере "Infostart MCP серверов", и это должно работать с любыми MCP серверами. В пользу чат-бота ориентирует преимущество концентрации на промпт-инжениринге.
Данное рещение Infostart MCP серверы - не первое, которое я вижу, и нужно отметить, что удобство эксплуатации является его большим достоинством.
📦 Что потребуется
Системные требования
-
Windows 10/11 (или другая ОС с поддержкой Docker)
-
8+ ГБ RAM (рекомендуется 16 ГБ)
-
Ollama (установленная и настроенная)
-
Современные бесплатные новаторские модели ИИ MiniMax M2.5, GLM-5. Неважно, локальные или облачные - их можно использовать без ВПН, в том числе на сайте Оллама доступен клиент облачного ДипСик.
-
MCPHost (бинарник для Windows)
Компоненты для 1С
-
Приобретенное решение "MCP-сервера для программирования на 1С с LLM" с сайта Infostart
-
Docker-образы из поставки решения
-
Внешняя обработка
ВыгрузитьОписаниеСтруктурыКонфигурации.epf -
MCP-сервер для доступа к текстам модулей 1С: простая реализация на Node.js
🎨 Архитектура решения
Как это работает: краткое описание
-
1С Конфигуратор выгружает метаданные и модули в файлы
-
Docker-контейнеры обрабатывают эти данные:
-
Загрузчик (
loader) помещает метаданные в векторную БД Qdrant -
Серверы (
metadata,syntax-help,syntax-check) предоставляют API для доступа к данным
-
-
Qdrant хранит векторные представления метаданных для семантического поиска
-
Сервер модулей (Node.js) работает с файлами выгрузки, предоставляя доступ к коду
-
MCPHost координирует работу:
-
Получает запрос пользователя
-
Выбирает нужный инструмент
-
Вызывает соответствующий MCP-сервер
-
При необходимости обращается к Ollama для обработки естественного языка
-
-
Ollama с моделью
minimax-m2.5:cloudобеспечивает понимание запросов и поддержку function calling
| Компонент | Роль | Взаимодействие |
|---|---|---|
| MCPHost | Оркестратор | Получает запросы, вызывает инструменты |
| metadata-1c | Поиск по метаданным | Читает из Qdrant коллекцию 1c_rag |
| syntax-help-1c | Справка синтакс-помощника | Работает с собственной БД справки |
| syntax-check-1c | Проверка синтаксиса | Использует BSL Language Server |
| 1c-modules | Доступ к коду | Читает файлы из I:\ssl_cf |
| Qdrant | Векторная БД | Хранит эмбеддинги метаданных |
| Ollama | LLM | Понимает запросы, помогает выбирать инструменты |
🚀 Пошаговая инструкция
Теперь подробнее о настройке част-бота Ollama
🔹 ФАЗА 1: Инфраструктура (Docker + контейнеры)
🔹 ФАЗА 2: Модели (Ollama + minimax/glm)
🔹 ФАЗА 3: Данные (загрузка метаданных и модулей)
🔹 ФАЗА 4: Оркестрация (настройка MCPHost)
🔹 ФАЗА 5: Работа (запросы и диагностика)
Шаг 1: Установка Docker Desktop
-
Скачайте Docker Desktop с официального сайта
-
Установите, следуя инструкциям
-
Запустите Docker Desktop и дождитесь появления значка в трее (зеленый кит)
-
Проверьте работу в PowerShell:
powershell
docker --version docker-compose --version
Шаг 2: Подготовка файлов решения
Распакуйте приобретенное решение в удобную папку, например I:\mcp_v1.6.1\. Убедитесь, что там есть:
-
docker-compose.yml -
Папка
bsl-ls -
Папка
Примеры настроек -
Обработка
ВыгрузитьОписаниеСтруктурыКонфигурации.epf
Шаг 3: Запуск Docker-контейнеров
-
Откройте PowerShell в папке с
docker-compose.yml:powershell
cd I:\mcp_v1.6.1
-
Запустите контейнеры:
powershell
docker-compose up -d
-
Проверьте, что все контейнеры запустились:
powershell
docker ps
Вы должны увидеть примерно такой список:
metadata, bsl-checker, help, loader, metadata-loader, qdrant, embedding-service
Шаг 4: Установка Ollama
-
Скачайте Ollama с официального сайта
-
Установите и запустите
-
Убедитесь, что сервер работает:
powershell
ollama serve
(Оставьте это окно открытым)
-
Войдите в аккаунт для доступа к облачным моделям:
powershell
ollama signin
-
Проверьте доступные модели:
powershell
ollama list
Одно из ключевых преимуществ данной архитектуры — возможность использовать любую модель Ollama. Вы можете экспериментировать с разными моделями, переключаясь между ними.
Шаг 5: Установка MCPHost
-
Скачайте последнюю версию
mcphost_Windows_x86_64.zipсо страницы релизов -
Распакуйте в удобную папку, например
I:\mcphost\ -
Проверьте, что файл
mcphost.exeна месте
Бинарники и настройки находятся в одной папке. Это позволяет подбирать оптимальную модель под конкретную задачу: быстрый поиск по коду, глубокий анализ архитектуры или работу в офлайн-режиме. Конфигурационный файл хранится рядом с исполняемым файлом MCPHost, что делает всю систему переносимой — достаточно скопировать папку на другой компьютер, и все настройки сохранятся.
Шаг 6: Создание конфигурационного файла
В папке I:\mcphost\ создайте файл .mcphost.yml со следующим содержимым:
yaml
mcpServers:
# Сервер метаданных 1С
metadata-1c:
type: "remote"
url: "http://localhost:9001/mcp"
# Сервер справки
syntax-help-1c:
type: "remote"
url: "http://localhost:9002/mcp"
# Сервер проверки синтаксиса
syntax-check-1c:
type: "remote"
url: "http://localhost:9004/bsl/mcp"
model: "ollama:minimax-m2.5:cloud"
Примечание: Чтобы выбрать модель Ollama, нужно изменить одну строчку в конфигурационном файле .mcphost.yml, который находится в той же папке, что и программа MCPHost (в нашем примере I:\mcphost\). Порты могут отличаться в зависимости от вашей версии. Проверить реальные порты можно командой docker ps.
Шаг 7: Системный промпт. Как задействовать системные инструкции в MCPHost
MCPHost поддерживает системные промпты через специальный флаг --system-prompt . Это позволяет задать модели общий контекст, роль и правила поведения, которые будут действовать на протяжении всей сессии.
📝 Два способа передачи системных инструкций
Способ 1: Через JSON-файл (рекомендуется)
Создайте файл, например I:\mcphost\1c-system-prompt.json, со следующим содержимым, адаптированным из вашего agents.md:
json
{
"systemPrompt": "Ты — опытный разработчик 1С (уровень синьор, >10 лет практики). Отвечай кратко и по делу, давай готовый для вставки код и чёткие шаги. Предпочитай стандартные методы платформы вместо самописных решений. Всегда сверяйся с актуальными справочными данными и/или диагностикой через MCPR09;сервисы.\n\nТехнический контекст: Платформа 1С:Предприятие 8.3.21, язык BSL. Код должен быть совместим с указанной версией платформы.\n\nПравила работы с MCP-сервисами:\n1. При работе с метаданными всегда используй двухшаговый подход: сначала search_metadata, затем metadata_details_by_id для выбранного объекта.\n2. При необходимости подтвердить сигнатуру метода обращайся к help_search.\n3. После написания или исправления кода обязательно прогоняй диагностику через check_bsl_file и учитывай замечания линтера.\n\nСтандарты кода BSL:\n- Предпочитай стандартные методы платформы.\n- Не используй Попытка...Исключение для выборок из БД и записи данных.\n- Не используй ЗаписьЖурналаРегистрации() без явного указания в задаче.\n- Не используй Сообщить() для логирования без прямого запроса.\n- Ограничивай строки 130 символами.\n- Внутри блоков Если/Пока/Для/Процедура/Функция добавляй пустые строки до и после содержимого для читаемости.\n- Код в ответе должен быть готовым для вставки, без псевдокода."
}
Затем запустите MCPHost с этим файлом:
powershell
.\mcphost.exe --config .mcphost.yml -m ollama:minimax-m2.5:cloud --system-prompt I:\mcphost\1c-system-prompt.json
Способ 2: Прямая передача текста (для коротких инструкций)
powershell
.\mcphost.exe --config .mcphost.yml -m ollama:minimax-m2.5:cloud --system-prompt "Ты — опытный разработчик 1С. Отвечай кратко, давай готовый код."
🎨 Что это даёт
После установки системного промпта модель будет:
-
Придерживаться роли — отвечать как опытный разработчик 1С
-
Следовать правилам — не использовать неподходящие конструкции
-
Использовать MCP-инструменты в правильном порядке — сначала метаданные, потом детали
-
Проверять код — автоматически прогонять диагностику
-
Форматировать ответы — согласно стандартам
💡 Ещё более мощный вариант: Script Mode
MCPHost также поддерживает Script Mode , где можно создавать исполняемые YAML-скрипты с встроенными системными инструкциями. Это удобно для разных типов задач:
yaml
#!/usr/bin/env -S mcphost script
---
# Скрипт для работы с документами
mcpServers:
metadata-1c:
type: "remote"
url: "http://localhost:9001/mcp"
syntax-help-1c:
type: "remote"
url: "http://localhost:9002/mcp"
system_prompt: |
Ты — эксперт по документам 1С.
При анализе документа всегда сначала смотри его структуру через metadata_details_by_id,
потом проверяй код модуля через read_module_text, и только затем предлагай изменения.
model: "ollama:minimax-m2.5:cloud"
---
Проанализируй документ "РеализацияТоваров" и предложи оптимизацию его проведения.
Важное замечание
Не все модели одинаково хорошо следуют системным инструкциям. Из вашего опыта:
-
MiniMax M2.5 и GLM-5 хорошо поддерживают system prompts
-
При возникновении зацикливаний можно попробовать с ним бороться как я покажу сейчас, сменить модель или упростить инструкции
Проблема зацикливания (Loop) и методы борьбы с ней
В процессе эксплуатации системы я столкнулся с неприятным явлением: модели ИИ иногда зацикливаются, начиная бесконечно повторять один и тот же блок текста. Это проявляется по-разному:
text
В конфигурации найдено 10 документов: В конфигурации найдено 10 документов: В конфигурации найдено 10 документов: ...
Или с накоплением:
text
1. Поступление товаров 1. Поступление товаров 2. Реализация товаров 1. Поступление товаров 2. Реализация товаров 3. Перемещение товаров ...
🤔 Почему это происходит
Зацикливание (loop) возникает по нескольким причинам:
| Причина | Описание |
|---|---|
| Переполнение контекста | Модель "забывает", что уже выдала результат, и начинает повторяться |
| Слишком большой объём данных | При обработке 300+ результатов модель теряет фокус |
| Особенности архитектуры | Некоторые модели (MiniMax, GLM) более склонны к зацикливанию |
| Нечёткие инструкции | Модель не понимает, когда нужно остановиться |
🎯 Сравнение моделей по склонности к зацикливанию
| Модель | Склонность к зацикливанию | Примечание |
|---|---|---|
| MiniMax M2.5 | Высокая | Часто зацикливается при больших объёмах |
| GLM-5 | Средняя | Заметно лучше, но требует настройки |
💡 Антициклические промпты (Anti-Loop Prompts)
Главное открытие: зацикливание можно контролировать через системный промпт. Специальные инструкции заставляют модель остановиться после вывода результата.
Антициклический промпт
Создайте файл glm-anti-loop-prompt.json:
json
{
"systemPrompt": "Ты — разработчик 1С. Отвечай максимально кратко и строго по делу.\n\nЖЁСТКИЕ ПРАВИЛА:\n1. НИКАКИХ ПОВТОРОВ — каждый факт упоминается только один раз.\n2. НИКАКИХ ТАБЛИЦ — используй простые списки (1. 2. 3.).\n3. МАКСИМУМ 3 ПРЕДЛОЖЕНИЯ после вывода данных.\n4. Если данные уже были показаны — не дублируй их.\n5. Завершай ответ чётким итогом и предложением уточнить.\n\nПример правильного ответа:\nНайдено 10 документов:\n1. Поступление товаров\n2. Реализация товаров\n3. Перемещение товаров\n...\n\nЭто демо-конфигурация. Уточните, по какому документу нужны детали."
}
🚀 Как использовать антициклические промпты
Запуск MCPHost с антициклическим промптом:
Запуск в терминале
.\mcphost.exe --config .mcphost.yml -m ollama:glm-5:cloud --system-prompt I:\mcphost\glm-anti-loop-prompt.json
📊 Результаты применения
| До антициклического промпта | После антициклического промпта |
|---|---|
| Таблица с документами повторяется 10+ раз | Чистый список один раз |
| Модель "увязает" в повторениях | Ответ компактный и по делу |
| Приходится прерывать Ctrl+C | Работает без вмешательства |
🎯 Тактики предотвращения зацикливания
Помимо системных промптов, помогают следующие приёмы:
1. Ограничение объёма ответа
Плохо: "Найди все упоминания слова 'Версия'" Хорошо: "Найди 10 самых важных упоминаний слова 'Версия'"
2. Явное указание формата
перечисли документы простым списком, без повторений и без таблиц
3. Разбивка сложных запросов
Вместо одного запроса на всё, делайте несколько последовательных:
-
Сначала найдите объекты
-
Потом детали по конкретному объекту
4. Если зацикливание началось — Ctrl+C
Не надо ждать, пока модель остановится сама. Прерывайте (Ctrl+C) и формулируйте запрос точнее.
Антициклические промпты — это простой и эффективный способ сделать работу с моделями комфортной. Для GLM-5 они работают особенно хорошо, практически полностью устраняя проблему повторений.
Рекомендуемая связка для повседневной работы:
-
Модель: GLM-5
-
Промпт: антициклический
-
Тактика: конкретные запросы + Ctrl+C при необходимости
Теперь вы знаете, как бороться с зацикливанием и можете работать продуктивно!.
В процессе экспериментов я также тестировал облачную модель DeepSeek-V3.2 (deepseek-v3.2:cloud). Это мощная модель с отличными показателями в бенчмарках, однако при работе с MCPHost возникла неожиданная трудность.
Проблема: несовместимость форматов вызова инструментов
DeepSeek, как и многие современные модели, имеет собственный механизм function calling, который не совпадает со стандартом, ожидаемым MCPHost. MCPHost разработан для работы с универсальным JSON-RPC форматом, а DeepSeek при попытке вызвать инструмент отправляет свой специфический XML-подобный формат.
Вот как это выглядит на практике:
| Компонент | Ожидаемый формат | Что отправляет DeepSeek |
|---|---|---|
| MCPHost | JSON-RPC с tools | — |
| DeepSeek | <function_calls> |
<function_calls> Документ </function_calls> |
При попытке выполнить запрос перечисли какие документы есть в конфигурации я получил:
text
<function_calls> Document </function_calls>
Это означает, что DeepSeek пытается вызвать инструмент, но делает это в формате, который MCPHost не может интерпретировать. В результате инструмент не вызывается, и система не возвращает данные.
Почему это происходит
DeepSeek использует собственный протокол для вызова инструментов, который отличается от стандарта MCP. Хотя модель понимает, что нужно обратиться к инструменту, она "упаковывает" этот вызов в свой родной формат, а не в JSON-RPC, который ожидает MCPHost.
Решения и альтернативы
Несмотря на эту проблему, существуют способы использовать DeepSeek с MCP-серверами:
| Вариант | Требования | |
|---|---|---|
| Open WebUI как прокси | Open WebUI умеет конвертировать форматы вызовов между разными моделями и MCP-серверами | |
| Официальный API DeepSeek | Требуется API-ключ и оплата, но поддерживает OpenAI-совместимый формат | |
| Локальная модифицированная версия | MFDoom/deepseek-r1-tool-calling:8b — работает локально |
|
Вывод по DeepSeek
На данный момент использовать DeepSeek-V3.2 через Ollama с MCPHost напрямую не получится — модели не хватает совместимости по формату вызова инструментов. Однако это не повод отчаиваться:
-
Если вы хотите использовать именно DeepSeek, рассмотрите вариант с Open WebUI или официальным API.
-
Для локальной работы с MCPHost отлично подходят GLM-5 и MiniMax M2.5, которые показали стабильную совместимость.
-
Существует модифицированная локальная версия DeepSeek с поддержкой инструментов —
MFDoom/deepseek-r1-tool-calling:8b, которую можно попробовать.
Данная публикация не посвязена выбору модели. Много интересного на тему выбора модели ИИ сообщил ondysss в статье Выбор модели для разработки в 1С: сравниваем топов и open source
//infostart.ru/1c/articles/2613515/
Шаг 8: Загрузка метаданных 1С в векторную базу
Перед началом работы необходимо загрузить структуру вашей конфигурации:
-
В конфигураторе 1С откройте внешнюю обработку
ВыгрузитьОписаниеСтруктурыКонфигурации.epf -
Запустите обработку (F5). Она создаст ZIP-архив с описанием метаданных
-
Откройте браузер и перейдите на
http://localhost:8501(интерфейс загрузчика) -
Нажмите "Обзор", выберите созданный ZIP-файл и нажмите "Начать обработку"
-
Дождитесь завершения загрузки (может занять несколько минут)
Не стоит индексировать сразу очень большие конфигурации, начните, например, с Библиотеки стандартных подсистем.
В процессе настройки я столкнулся с проблемой, которая может возникнуть у многих. Описываю её решение подробно.
Проблема: коллекции не совпадают
После успешного запуска всех контейнеров и загрузки метаданных через интерфейс http://localhost:8501 поиск по метаданным не работал. Система выдавала ошибку:
Коллекция '1c_rag' не существует в Qdrant.
При этом в логах загрузчика было видно, что создалась коллекция 1c_metadata_rag:
Удаление существующей коллекции 1c_metadata_rag с 45 записями... Создание новой коллекции 1c_metadata_rag...
Причина: несоответствие имени коллекции
Оказалось, что:
-
Сервер метаданных (контейнер
metadataилиmcp-metadata) ожидает коллекцию с именем1c_rag -
Загрузчик (веб-интерфейс на порту 8501) по умолчанию создаёт коллекцию
1c_metadata_rag
Решение: явно указать правильное имя коллекции
При загрузке метаданных через веб-интерфейс http://localhost:8501 нужно вручную ввести правильное имя коллекции в соответствующее поле:
Имя коллекции Qdrant (метаданные): 1c_rag
После этого загрузка прошла успешно:
Создание новой коллекции 1c_rag с поддержкой dense и sparse векторов... Коллекция создана. Загружен CSV файл с 74 строками Обработка завершена! Всего загружено 74 записей в коллекцию 1c_rag
Результат
После исправления имени коллекции поиск по метаданным заработал идеально:
Запрос: Найди документы и покажи их реквизиты Результат: - Документ: _ДемоПоступлениеТоваров (Демо: Поступление товаров) - Документ: _ДемоПеремещениеТоваров (Демо: Перемещение товаров) - Документ: _ДемоРеализацияТоваров (Демо: Реализация товаров) - ... и другие Детали по документу _ДемоПеремещениеТоваров: - Реквизиты шапки: Организация, МестоХраненияИсточник, МестоХраненияПриемник, Ответственный, Комментарий
При загрузке метаданных всегда проверяйте имя коллекции — оно должно точно соответствовать тому, что ожидает сервер метаданных (обычно 1c_rag).
Шаг 9: Запуск MCPHost в Windows Terminal
Нажмите Win + R и выполните команду "wt"
В Windows Terminal (не PowerShell и не CMD ) выполните:
cd I:\mcphost .\mcphost.exe --config .mcphost.yml -m ollama:minimax-m2.5:cloud
Вы должны увидеть:
-
Загрузку модели
-
Сообщение
Loaded 7 tools from MCP servers -
Приглашение к вводу
Данный фронтэнд использует псевдографику, что делает очень неудобным его использование в других средах, кроме терминала.
В Windows 11 программа «Терминал» установлена по умолчанию, для Windows 10 её нужно скачать из Microsoft Store.
🐞 Диагностика при первом запуске
При первом запуске настоятельно рекомендуется использовать флаг --debug. Это позволит увидеть детальную информацию о подключении к серверам и диагностировать возможные проблемы на раннем этапе:
.\mcphost.exe --config .mcphost.yml -m ollama:minimax-m2.5:cloud --debug
Пример отладочного вывода:
[DEBUG] Loading MCP server configuration [DEBUG] Connecting to MCP server: metadata-1c [DEBUG] Transport type: streamable [DEBUG] URL: http://localhost:9001/mcp [POOL] Creating new connection for metadata-1c [POOL] Initialized MCP client [POOL] Created connection for metadata-1c [DEBUG] Connecting to MCP server: syntax-help-1c [DEBUG] Transport type: streamable [DEBUG] URL: http://localhost:9002/mcp [POOL] Created connection for syntax-help-1c [DEBUG] Connecting to MCP server: syntax-check-1c [DEBUG] Transport type: streamable [DEBUG] URL: http://localhost:9004/bsl/mcp [POOL] Created connection for syntax-check-1c Loaded 7 tools from MCP servers
Если какой-то сервер не подключается, в отладочном выводе будет видна причина — например, connection refused или 404 Not Found. Это значительно ускоряет поиск и устранение неполадок.
После успешной диагностики и убеждения, что все инструменты загружаются корректно, флаг --debug можно убрать для повседневной работы, чтобы интерфейс оставался чистым.
Шаг 10: Проверка работы
В открывшемся интерфейсе введите команду /tools — должны отобразиться 7 инструментов:
-
metadata-1c__search_metadata -
metadata-1c__metadata_details_by_id -
syntax-help-1c__help_search -
syntax-help-1c__help_details_by_id -
syntax-help-1c__property_details -
syntax-check-1c__check_bsl_file -
syntax-check-1c__check_bsl_code
Теперь можно задавать вопросы, например:
Найди в метаданных документ "РеализацияТоваров" и покажи его реквизиты
Расширение возможностей: доступ к текстам модулей 1С с помощью MCP-сервер для доступа к текстам модулей 1С: простая реализация на Node.js
Базовая конфигурация с тремя MCP-серверами (метаданные, справка, проверка синтаксиса) даёт хорошие возможности, но для полноценной разработки часто требуется доступ к реальному коду — текстам общих модулей, модулей объектов, форм и т.д.
Спасибо xamass за его рабочее решение MCP-сервер для доступа к текстам модулей 1С: простая реализация на Node.js
//infostart.ru/1c/tools/2458900/ - подключаем его тоже успешно!
MCP-сервер для доступа к текстам модулей 1С на Node.js позволяет AI "видеть" и анализировать код вашей конфигурации.
Что даёт сервер модулей
| Инструмент | Описание |
|---|---|
list_module_files |
Список файлов модулей по glob-шаблону |
read_module_text |
Чтение текста конкретного модуля |
grep_modules |
Поиск по содержимому модулей (с поддержкой regex) |
Установка сервера модулей
Шаг 11: Установка Node.js
Скачайте и установите Node.js версии 18 или выше с официального сайта.
Шаг 12: Создание папки для сервера и установка
powershell
mkdir I:\mcpcode cd I:\mcpcode
Распакуйте в эту папку содержимое архива разработки xamass
//infostart.ru/1c/tools/2458900/
Шаг 13: Создание файла сервера
Создайте файл server-esm.js со следующим содержимым:
Шаг 14: Установка зависимостей
powershell
npm install @modelcontextprotocol/sdk globby zod
Шаг 15: Выгрузка конфигурации 1С в файлы (Конфигурация - Выгрузить конфигурацию в файлы - Выбрать формат XML)
Для работы сервера необходима выгрузка конфигурации в файлы. Это можно сделать из конфигуратора:
cmd
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "C:\путь\к\вашей\базе" /DumpConfigToFiles "I:\ssl_cf" /Out "I:\dump_log.txt"
Шаг 16:Добавление сервера в конфиг MCPHost
Отредактируйте файл I:\mcphost\.mcphost.yml, добавив новый сервер:
yaml
mcpServers:
metadata-1c:
type: "remote"
url: "http://localhost:9001/mcp"
syntax-help-1c:
type: "remote"
url: "http://localhost:9002/mcp"
syntax-check-1c:
type: "remote"
url: "http://localhost:9004/bsl/mcp"
# НОВЫЙ сервер для работы с кодом модулей
1c-modules:
type: "local"
command: ["C:/Program Files/nodejs/node.exe", "I:/mcpcode/server-esm.js"]
environment:
MODULES_DIR: "I:/ssl_cf"
model: "ollama:minimax-m2.5:cloud"
Переменная окружения MODULES_DIR
При работе с сервером модулей важно правильно настроить переменную окружения, указывающую на каталог с выгруженными файлами конфигурации.
Настройка переменной окружения MODULES_DIR
В конфиге MCPHost (рекомендуемый способ)
В файле .mcphost.yml мы уже указали переменную в секции environment:
yaml
1c-modules:
type: "local"
command: ["C:/Program Files/nodejs/node.exe", "I:/mcpcode/server-esm.js"]
environment:
MODULES_DIR: "I:/ssl_cf" # Здесь указывается путь к выгруженной конфигурации
MCPHost автоматически передаст эту переменную в процесс сервера модулей.
Шаг 17. Проверка работы
После запуска MCPHost команда /tools покажет 10 инструментов (добавились 3 новых):
-
1c-modules__list_module_files -
1c-modules__read_module_text -
1c-modules__grep_modules
Примеры запросов с использованием кода модулей
Поиск по коду:
найди "ВерсияКонфигурации" в модулях обновления
Результат поиска:
Найдено 41 упоминание в 10 модулях: - ОбновлениеИнформационнойБазыСлужебный (12 упоминаний) - ОбновлениеИнформационнойБазыБСП (5 упоминаний) - ОбновлениеИнформационнойБазыБИП (5 упоминаний) - ОбновлениеИнформационнойБазыБСД (5 упоминаний) - ОбновлениеИнформационнойБазыБТС (5 упоминаний) - ОбновлениеКонфигурации (4 упоминания)
Чтение конкретного модуля:
покажи полный код модуля ОбновлениеИнформационнойБазыСлужебный
Поиск с уточнением:
найди все вызовы функции ВерсияКонфигурацииБезНомераСборки в модулях обновления
Важные замечания
-
Возможно зацикливание! Если результат поиска окажется слишком велик (например 300 результатов) то программа зацикливается, выдает одно и то же слишком много раз.
-
Обновление выгрузки: После изменений в конфигурации необходимо повторно выгружать файлы, чтобы сервер видел актуальный код.
-
Производительность: Поиск по большому количеству файлов может занимать время. Рекомендуется уточнять область поиска через параметр
glob. -
Безопасность: Сервер проверяет, что запрашиваемые файлы находятся внутри директории
MODULES_DIR, что предотвращает выход за пределы разрешённой области. -
Кодировка: Убедитесь, что выгруженные файлы имеют кодировку UTF-8 (современные версии 1С выгружают в UTF-8 по умолчанию).
Расширение функциональности
При желании сервер можно доработать, добавив:
-
Поиск с учётом регистра
-
Ограничение количества результатов
-
Фильтрацию по типу модулей
-
Контекстный вывод (несколько строк до и после найденного)
🔧 Возможные проблемы и их решение
1. При подключении MCP-сервера для доступа к текстам модулей 1С: простая реализация на Node.js у меня возникла ошибка:
Warning: Failed to load MCP server '1c-modules': conv mcp tool input schema fail...
Это связано с особенностями валидации в Zod. В приведённом выше коде проблема уже устранена — параметр maxBytes объявлен как z.number().int().optional() без использования positive(), что исключает конфликт.
2. Контейнеры не запускаются
Решение: Проверьте, запущен ли Docker Desktop. Выполните docker ps — если ошибка, перезапустите Docker.
3. MCPHost не видит серверы (Loaded 0 tools)
Решение:
-
Проверьте порты в конфиге (должны совпадать с
docker ps) -
Попробуйте добавить в конфиг
transport: "sse"илиtransport: "streamable" -
Запустите с флагом
--debugдля диагностики
4. Ошибка "коллекция '1c_rag' не существует"
Решение: Не загружены метаданные. Выполните шаг 7.
5. ANSI-символы вместо красивого интерфейса
Решение: Используйте Windows Terminal вместо классической cmd или PowerShell.
6. Ошибка "missing required environment variables for anthropic"
Решение: В конфиге явно укажите model: "ollama:minimax-m2.5:cloud" (как в примере).
🎯 Таким образом
Теперь у вас работает полностью локальная система для AI-разработки на 1С:
Вы (в терминале) ↔ MCPHost ↔ MCP-серверы 1С (Docker) ↔ Ollama (облачная модель)
Все компоненты работают без доступа к зарубежным API и не требуют иностранных карт или SMS.
🎯 Как теперь работает полностью настроенная система
После решения всех проблем финальная архитектура выглядит так:
Компоненты и их состояние
| Компонент | Что делает | Статус |
|---|---|---|
| Docker-контейнеры | Запущены и работают | ОК |
- metadata (порт 9001) |
Сервер метаданных 1С | ОК |
- syntax-help (порт 9002) |
Сервер справки | ОК |
- syntax-check (порт 9004) |
Сервер проверки синтаксиса | ОК |
- loader (порт 8501) |
Веб-интерфейс загрузчика | ОК |
- qdrant (порт 6333) |
Векторная база данных | ОК |
- embedding-service (порт 5000) |
Сервис эмбеддингов | ОК |
| Qdrant коллекции | ||
- 1c_rag |
Метаданные конфигурации (74 записи) | ОК |
| Ollama | Сервер для моделей | ОК |
| MCPHost | LLM-агент с 7 инструментами | ОК |
| Модель | minimax-m2.5:cloud |
ОК |
Доступные инструменты
После запуска MCPHost команда /tools показывает 10 инструментов:
| Инструмент | Назначение |
|---|---|
metadata-1c__search_metadata |
Поиск объектов метаданных |
metadata-1c__metadata_details_by_id |
Детали объекта метаданных по ID |
syntax-help-1c__help_search |
Поиск в справке |
syntax-help-1c__help_details_by_id |
Детали справки по ID |
syntax-help-1c__property_details |
Детали свойств |
syntax-check-1c__check_bsl_file |
Проверка синтаксиса файлов BSL |
syntax-check-1c__check_bsl_code |
Проверка синтаксиса кода BSL |
list_module_files |
Список файлов модулей по glob-шаблону |
read_module_text |
Чтение текста конкретного модуля |
grep_modules |
Поиск по содержимому модулей (с поддержкой regex) |
Примеры работающих запросов
Поиск документов:
Найди документы и покажи их реквизиты
→ Возвращает список всех документов с реквизитами шапки и табличных частей
Детали по конкретному документу:
Покажи структуру документа "РеализацияТоваров"
→ Возвращает полный список реквизитов и табличных частей
Поиск в справке:
Как правильно использовать функцию Найти() в 1С?
→ Возвращает справку из синтакс-помощника
Преимущества готового решения
- Полностью локальное — не требует доступа к зарубежным API
- Безопасное — все данные остаются на вашем компьютере
- Мало затратное после приобретения MCP-серверов (только трафик на облачную модель)
- Масштабируемое — можно загружать любые конфигурации 1С
- Удобное — работает через обычный терминал
Приложения
Схематично принцип действия.
Искомый процесс решения задачи вайб-кодинга в чат - боте Ollama можно представить в виде схемы.
Последовательность настройки в виде схемы.
📚 Полезные ссылки
-
Ollama ollama.com
-
MCPHost на GitHub github.com/mark3labs/mcphost
- Infostart: MCP-сервера для 1С
Зачем это и почему так?
В точке рождения кода в процессе разработки мы превращаем хаос в порядок.
Ключевое преимущество инструмента чат-бота это прецизионное управление контекстным окном.
Здесь можно спорить со мнением, что чат-бот проигрывает специализированным AI-средам (вроде Cursor или плагинов для VS Code), так как не имеет автоматического доступа ко всей кодовой базе. Однако в контексте разработки на 1С ручное управление контекстом через MCP-серверы превращается из ограничения в инструмент высокоточного проектирования.
В разные моменты времени при программировании модели ИИ ведут себя по-разному. Иногда они удивительно чётко понимают и решают задачу, выдают идеальный код и точно выбирают нужные инструменты. А иногда... удивительно тупят, упрямятся, игнорируют очевидное, зацикливаются или выдают откровенно нерабочий код. Удивительно, поразительно и досадно. Почему? Это поведение зависит от множества факторов и требует изучения, почему одни подходы работают, а другие — нет:
-
Формулировки запроса
-
Контекста предыдущих сообщений
-
Текущего состояния модели на сервере
-
Даже времени суток и загруженности, хочу тут продолжить...
1. Детерминизм против «черного ящика» автоматизации
В отличие от IDE-плагинов, которые самостоятельно индексируют проект и часто «засоряют» контекстное окно нерелевантными фрагментами кода, работа через MCPHost позволяет разработчику выступать в роли оркестратора контекста.
Вы четко контролируете, что именно попадает в RAM нейросети:
Структура (Метаданные): Высокоуровневое описание объектов.
Справка (Синтаксис): Официальная документация платформы.
Реализация (Код): Конкретные модули или даже отдельные процедуры.
2. Когнитивная архитектура: Системный подход и Закон Миллера
Эффективность связки «Человек — AI» опирается на фундаментальные принципы когнитивной психологии и системного анализа:
Принцип системного иерархизма: Сложную задачу в 1С не всегда возможно решить «в лоб». Мы используем MCP-серверы для декомпозиции: сначала анализируем систему как целое (через метаданные), затем переходим к компонентам (конкретным модулям).
Закон Миллера (7±2) и Чанкинг: Контекстное окно модели — ресурс ограниченный. Подавая информацию «чанками» (логическими блоками), мы предотвращаем эффект «размытия внимания» (attention loss). Когда в контексте находятся только 3-5 релевантных инструментов и 2-3 модуля, модель демонстрирует максимальную точность (Reasoning), не отвлекаясь на шум.
3. Синергия: Метаданные + Код
Уникальность разработки на 1С — в жесткой связи кода с метаданными. MCP-серверы реализуют двухуровневый доступ:
Semantic Layer (Метаданные): Дает модели понимание типов данных, структуры табличных частей и связей объектов. Это «скелет» задачи.
Implementation Layer (Код): Дает понимание алгоритмов. Это «мышцы».
Без метаданных AI часто галлюцинирует, придумывая несуществующие реквизиты. С MCP-серверами модель сначала «осматривает» структуру, а затем пишет код, строго соответствующий вашей конфигурации.
4. Практические стратегии управления контекстом
Для достижения наилучших результатов рекомендуется придерживаться итеративной модели диалога:
Этап 1: Исследование (Discovery). Поиск по метаданным и списку файлов. Цель — определить границы задачи.
Этап 2: Изоляция (Isolation). Чтение конкретных модулей (read_module_text) с ограничением объема. Мы загружаем только те процедуры, которые участвуют в бизнес-логике.
Этап 3: Точечный рефакторинг. Использование результатов поиска (grep_modules) для внесения изменений по всей конфигурации, основываясь на выявленных паттернах.
5. Предотвращение деградации ответов
При переполнении контекстного окна (Context Overflow) любая модель начинает зацикливаться или игнорировать системные инструкции. Работа в терминале с MCPHost позволяет вовремя заметить избыточность данных и «очистить» мысль нейросети, фокусируя её на точке рождения кода.
Резюме: Чат-бот с MCP-инструментарием — это не просто «окно для вопросов», а полноценный пульт управления вниманием ИИ. Вы не просто просите «сделай что-нибудь», вы конструируете рабочее пространство модели, обеспечивая хирургическую точность её ответов.
Таким образом, поскольку фундаментальные принципы системного мышления и когнитивной психологии довлеют не только над разработчиком, считаю, в отношении нейросетей они применимы, поэтому данный инструмент актуален и поэтому он имеет право на жизнь, поскольку позволяет повысить эффективность работы с AI-ассистентом.
Принцип системного подхода: сложную систему нельзя создать с нуля.
Системный подход — это направление методологии научного познания, в основе которого лежит рассмотрение объектов как систем . Одно из ключевых правил системного подхода гласит:
Правило 1-е: Не компоненты сами по себе составляют суть целого (системы), а наоборот, целое как первичное порождает при своем членении или формировании компоненты системы.
Это означает, что при создании сложной системы (каковой является наш AI-ассистент для 1С) мы не можем собирать её "с нуля" из отдельных деталей, не понимая общей картины. Сначала нужно осмыслить систему как целое, её цели и место в более крупной системе, и только потом переходить к компонентам.
В нашем случае:
-
Целое — это процесс разработк
Вступайте в нашу телеграмм-группу Инфостарт