Нейросеть для 1С: как повзрослел бесплатный MCP-сервер mcp-1c за сорок релизов | infolimp.ru

Нейросеть для 1С: как повзрослел бесплатный MCP-сервер mcp-1c за сорок релизов

8 июля 2026 · infolimp.ru

Когда полгода назад mcp-1c анонсировали как «бесплатный MCP-мост», сообщество встретило его с осторожностью: очередная обёртка, работающая через внешнюю компоненту или COM. Но 40 релизов позже проект стал тем, чего не хватало экосистеме — зрелым инструментом, который не просто транслирует HTTP-запросы в платформу 1С, а управляет жизненным циклом сессий, адаптирует protocol buffers под метаданные конфигурации и решает проблемы, которые обычно всплывают через месяц после интеграции. Мы разобрали историю изменений и собрали ключевые узлы, где даже опытный разработчик может споткнуться.

Эволюция mcp-1c: от SSH-туннеля к полноценному протоколу

Первая версия mcp-1c (v0.1, июнь 2024) представляла собой, по сути, адаптер между HTTP из Model Context Protocol и COM-объектом V83.COMConnector. Сессию приходилось держать вручную, каждый вызов открывал новое соединение. К 10-му релизу добавили пул соединений, но он падал при одновременном обращении к разным информационным базам с разными версиями платформы.

Как протокол взаимодействия перестал быть «чёрным ящиком»

Начиная с v0.13 (сентябрь 2024) разработчики mcp-1c отказались от универсального Выполнить(ТекстЗапроса) в пользу специализированных эндпоинтов для каждой сущности: /document/{name}, /catalog/{name}, /query. Это сняло главную проблему — безопасность: теперь нельзя выполнить произвольный код через один запрос, даже если злоумышленник получил доступ к MCP-ключу. Но породило новую — пришлось научиться маппить типы полей 1С (например, ХранилищеЗначения) на стандартные типы JSON. Подход mcp-1c: использовать base64 для бинарных данных и отдельный эндпоинт /upload для файлов больше 1 МБ.

«MCP-сервер для 1С — это не прокси, а прослойка, которая должна знать о метаданных конфигурации не меньше, чем сама платформа. Без этого любой вызов приведёт к ОшибкаПриВызовеМетодаКонтекста или утечке сессии.» — из комментария разработчика kuznechik в чате проекта.

Типовой код интеграции (v1.0+)

// Пример: программное обращение к MCP-серверу mcp-1c из 1С (через HTTPСоединение)
MCPBaseURL = "http://localhost:8080/api/v1";
APIKey = "секретный_ключ_из_настроек";

HTTP = Новый HTTPСоединение(MCPBaseURL, 60); // таймаут 60 сек

// 1. Получить объект документа "ЗаказПокупателя" с кодом "П-001"
Тело = Новый Структура;
Тело.Вставить("objectId", "П-001");
ДанныеJSON = ЗаписатьJSONВСтроку(Тело);

Запрос = Новый HTTPЗапрос("/document/ЗаказПокупателя/read");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + APIKey);
Запрос.УстановитьТелоИзСтроки(ДанныеJSON);

Попытка
    Ответ = HTTP.ОтправитьДляОбработки(Запрос);
    Если Ответ.КодСостояния = 200 Тогда
        Результат = ЧтениеJSONИзСтроки(Ответ.ПолучитьТелоКакСтроку());
        // Результат — Структура с полями документа
    Иначе
        ВызватьИсключение "MCP-сервер вернул " + Ответ.КодСостояния + ": " + Ответ.ПолучитьТелоКакСтроку();
    КонецЕсли;
Исключение
    ЗаписьЖурналаРегистрации("MCP_Error", УровеньЖурналаРегистрации.Ошибка,,,
        КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

// 2. Создать новый заказ (используем общий эндпоинт /query)
ЗапросСоздания = Новый HTTPЗапрос("/query/execute");
// Тело запроса — JSON с описанием объекта
... // через реальный API ИТС

Три грабли, которые mcp-1c научился обходить (и которые вы можете пропустить)

Грабля 1: Сериализация сложных типов (ХранилищеЗначения и ссылки)

В первых версиях mcp-1c пытался сериализовать поля типа ХранилищеЗначения как строку в кодировке Base64, но клиентская LLM (Large Language Model) часто обрезала её из-за ограничения токенов. Начиная с v0.24 сервер начал возвращать два поля: data (base64) и metadata (размер, хеш). Если размер превышает 500 КБ — предлагает скачать через отдельный эндпоинт /blob/{id}. Это незаметно, если тестировать на маленьких файлах, но в продуктиве, когда начинают передавать изображения из ПланОбмена.Образ, интеграция просто виснет.

Грабля 2: Таймауты и асинхронность

MCP-протокол подразумевает синхронные вызовы (запрос-ответ). Но сложные отчёты или перепроведение документа могут длиться больше 30 секунд. mcp-1c v0.30 ввёл механизм «long-running operations»: при превышении таймаута сервер возвращает идентификатор задачи, а клиент должен опрашивать статус. Типичная ошибка — не обрабатывать код 202 Accepted и считать, что запрос упал. В настройках MCP-клиента (например, в Claude Desktop) нужно выставить connection_timeout: 0 (бесконечно) и добавить логику polling.

«Самая частая поддержка в mcp-1c чате: „У меня всё падает, когда запускаю обработку закрытия месяца“. Ответ — переходите на асинхронный режим, не ждите синхронно». — модератор сообщества mcp-1c.

Грабля 3: Управление контекстом сессии и блокировки

MCP-сервер для 1С должен открывать сессию через COMСоединение. Если один и тот же пользователь одновременно делает два запроса, возникают блокировки из-за монопольного доступа (если база файловая). mcp-1c начиная с v0.36 реализует пул сессий с изоляцией по ключу пользователя (берется из заголовка X-User-ID). Если такого заголовка нет — все запросы идут в одну сессию, что гарантированно приводит к deadlock'у при параллельных записях. Многие разработчики забывают этот заголовок, и сервер работает до первого одновременного обращения.

Сравнение подходов: mcp-1c vs Self-hosted vs Платные аналоги

Лицензии на коммерческие MCP-шлюзы (например, Ai2b) стоят от 100 000 руб. за инсталляцию и требуют установки компонент на сервер 1С. Самописный вариант на Python с python-1c даёт гибкость, но требует поддержки протокола MCP, что отнимает 2–3 недели на первую реализацию. mcp-1c занимает промежуточное положение: бесплатен, поддерживает как REST, так и WebSocket, обновляется каждые 2–3 недели, но не гарантирует стабильность при нестандартных конфигурациях (например, с разделением данных). Выбор стоит делать исходя из объёма изменений конфигурации: если ваша базовая конфигурация — типовой ЗУП 3.1, mcp-1c подходит сразу; если два десятка доработок — потребуется завести фичу-реквест.

Практические рекомендации: что делать прямо сейчас

Если вы уже используете mcp-1c или только планируете внедрение — проверьте следующие точки, где чаще всего ошибаются опытные коллеги:

Чек-лист для рабочая среда-внедрения mcp-1c

Типичные ошибки

  1. Использование запроса /query/execute для выполнения произвольного кода — опасно: mcp-1c по умолчанию блокирует операторы Выполнить(), ВставитьСтроку(), УдалитьСтроку() вне разрешённых эндпоинтов. Если нужно выполнить нестандартное действие — расширяйте конфигурацию сервера через файл allowlist.txt.
  2. Передача бинарных данных (>10 MB) через JSON — сервер уходит в OOM. Используйте эндпоинт /upload с multipart/form-data.
  3. Игнорирование версии платформы 1С: mcp-1c v0.40 не поддерживает 8.3.22 (нужен флаг совместимости).

Что дальше? Сценарий Apollo вместо REST

В релизе v0.40 (март 2025) анонсирована поддержка GraphQL-стиля через эндпоинт /graphql — это позволит LLM-моделям запрашивать только нужные поля, снижая нагрузку на COM-соединение. Фактически mcp-1c превращается не просто в MCP-сервер, а в шлюз к данным 1С с семантическим разбором запросов на естественном языке. Именно этого не хватало для промышленного использования нейросетей в учёте — чтобы модель «понимала», что Остатки товаров на складе — это вызов к регистру накопления, а не к справочнику.

«mcp-1c — это сейчас единственный инструмент, где LLM может сама построить запрос к 1С, не зная структуры метаданных. Плата за это — необходимость тонкой настройки контекста. Но 40 релизов превратили прототип в production-инструмент».

Статья на Infostart подробно разбирает внутреннюю архитектуру сервера и его роадмап. Рекомендуем прочитать её, если вы планируете интегрировать нейросеть в свои продукты на 1С — там описаны конкретные кейсы и ссылки на реальные конфигурации.

Расширение «НОПик» для 1С — встраиваемый коннектор к внешнему AI с интеллектуальным поиском по базе. Задавайте вопросы обычными словами - AI сам найдёт нужное. 45 дней бесплатно.

Попробовать НОПик →