Мультибазовость в Расширенной редакции
Один процесс mcp-1c-advanced подключается к нескольким базам 1С одновременно. Конфигурация через --base, отдельные подключения, общий MCP-сервер.
В реальной работе разработчик редко сидит ровно над одной базой. Доработка тиражного решения часто требует прыгать между несколькими стендами: dev-копия, тестовая, эталонный дамп, регрессионный набор. Запускать отдельный процесс mcp-1c-advanced на каждую базу неудобно: разные порты, разные настройки клиентов AI-ассистента, путаница в идентификаторах.
В Расширенной редакции есть мультибазовый режим. Один процесс подключается ко всем нужным базам сразу, а список подключённых баз отдаёт инструмент system действием list_bases.
Конфигурация
Базы перечисляются через повторяющийся флаг --base:
mcp-1c-advanced \
--base dev=http://localhost:8080/acc-dev/hs/mcp-1c \
--base test=http://test-server:8080/acc-test/hs/mcp-1c \
--base ref=http://localhost:8080/baseline/hs/mcp-1c \
--dump ref=./baseline-dump
Каждая запись это пара имя=URL. Имя выбирается произвольно, оно используется AI-ассистентом для адресации запросов. Значение это не строка подключения 1С, а адрес опубликованного HTTP-сервиса расширения в этой базе, тот же самый, что в однобазовом режиме передаётся одиночным --base. Выгрузка конфигурации подключается отдельным флагом --dump ИМЯ=ПУТЬ, и имя в нём должно совпадать с именем базы.
Как это работает
При старте процесс открывает подключение к каждой базе и кэширует метаданные. Кэш делается лениво и индивидуально на базу, поэтому время старта не растёт линейно от количества баз. Bleve-индекс полнотекстового поиска тоже инициализируется на каждую базу отдельно.
В режиме MCP-сервера клиент указывает базу параметром base, значение которого совпадает с именем из флага --base. Сервер маршрутизирует запрос к нужному подключению. Если параметр не указан, запрос уходит в базу по умолчанию, а на незнакомое имя сервер отвечает ошибкой со списком доступных.
Список доступных баз
Вызов system с {"action": "list_bases"} возвращает таблицу: имя базы, адрес её HTTP-сервиса, наличие подключённой выгрузки и отметку базы по умолчанию.
## Connected 1C databases
| Name | URL | Dump | Default |
|------|-----|------|---------|
| dev | http://localhost:8080/acc-dev/hs/mcp-1c | No | * |
| test | http://test-server:8080/acc-test/hs/mcp-1c | No | |
| ref | http://localhost:8080/baseline/hs/mcp-1c | Yes | |
Адрес в колонке URL печатается без учётных данных: если пользователь и пароль оказались вписаны прямо в него, они в ответ не попадают.
AI-ассистент через это действие видит окружение и сам решает, в какой базе выполнять конкретный запрос. Например, для регрессионного теста он сначала спросит метаданные у ref, потом проверит то же место в dev.
Когда полезно
- Разработка под несколько типовых одновременно: одна база БП, одна ЗУП, одна УТ.
- Работа над миграцией: исходная конфигурация в одной базе, новая в другой, дамп в третьей.
- Параллельный анализ нескольких клиентских внедрений: каждое внедрение как отдельная база, общий процесс mcp-1c-advanced для всех.
Ограничения
Подключения держатся постоянно. Если база недоступна, процесс не падает, но запросы к ней будут возвращать ошибку до восстановления связи. Кэш не инвалидируется автоматически при изменении конфигурации, и перечитывают его двумя разными вызовами: выгрузку конфигурации инструментом reload_dump (принимает параметр base), а список расширений .cfe действием refresh_extensions инструмента system.
Отдельно про --cache-dir. В мультибазовом режиме это один общий флаг на все базы, префиксы вида имя=путь он не поддерживает (в отличие от --dump, --base, --reindex, --skip). Отдельный каталог на каждую базу не нужен: кэш каждой базы и так раскладывается по своим подкаталогам по хэшу пути к дампу, конфликтов между базами нет. Если по привычке указать --cache-dir имя=путь, сервер возьмёт последнее значение целиком строкой, включая префикс имя=, и путь окажется некорректным. На Windows это проявляется ошибкой вида mkdir .\имя=D: (двоеточие недопустимо в имени каталога). Правильно задавать один каталог без префикса, например --cache-dir D:/AI/.cache, либо не указывать его вовсе (тогда используется системный каталог кэша).