Начало работы

Развёртывание

Правила развёртывания в Docker и Kubernetes: один пользователь на экземпляр и постоянный том для конфигурации.

mcp-1c поставляется одним исполняемым файлом без внешних зависимостей, и для обычной работы Docker не нужен: достаточно скачать бинарник и запустить. Но если вы разворачиваете сервер в контейнере или кластере, соблюдайте правила ниже, иначе при пересоздании контейнера может сброситься привязка лицензии. Раздел относится к Расширенной и Профессиональной версиям (для нескольких пользователей с общего сервера нужна Корпоративная версия, см. ниже).

Доступно с v2.20.0.

Один пользователь, один экземпляр

MCP-сервер общается с AI-клиентом по стандартному вводу-выводу (STDIO), поэтому один запущенный процесс обслуживает ровно одного пользователя. Встроенный HTTP-сервер (--listen) обеспечивает только транспорт длинного опроса 1С и подключение к 1С, а не работу многопользовательского MCP-сервера. Поэтому разворачивайте один контейнер (pod) на одного пользователя.

Постоянный том для конфигурации

Важно: Идентичность лицензии хранится в каталоге конфигурации. В контейнере обязательно смонтируйте этот каталог на постоянный том. Иначе при каждом пересоздании контейнера идентичность теряется, и лицензию придётся активировать заново.

Переменной окружения для подмены идентификатора нет: он задаётся автоматически и хранится в файле внутри каталога конфигурации. Именно постоянный том сохраняет привязку лицензии к экземпляру между перезапусками. Путь каталога зависит от операционной системы:

ОСКаталог конфигурации
Linux~/.config/mcp-1c (или $XDG_CONFIG_HOME/mcp-1c); в контейнере под root: /root/.config/mcp-1c
macOS~/Library/Application Support/mcp-1c
Windows%AppData%\mcp-1c

Одна лицензия, один экземпляр

Одна лицензия рассчитана на один запущенный экземпляр. Не запускайте несколько реплик (подов) под одним ключом. Если на одной машине одновременно работает несколько процессов (несколько сессий, Docker, выход из спящего режима), они согласуют проверку лицензии между собой: один процесс проверяет лицензию, остальные используют его результат, поэтому конфликтов активаций не возникает. Эта согласованность рассчитана на несколько локальных сессий одного пользователя (например, несколько AI-клиентов или процесс в Docker рядом), а не на обслуживание разных конечных пользователей. Для нескольких пользователей нужна Корпоративная версия (см. ниже).

Несколько процессов на одной машине

Доступно с v2.21.0.

Несколько процессов MCP на одной машине над одной базой совместно используют общий кэш индекса без конфликтов: несколько сессий, несколько AI-клиентов или процесс в Docker рядом с обычным процессом сами согласуют доступ к общему кэшу. Отдельный каталог кэша (--cache-dir) для каждого процесса задавать не нужно, дополнительная настройка не требуется. Эта согласованность рассчитана на несколько локальных сессий одного пользователя (например, несколько AI-клиентов или процесс в Docker рядом), а не на обслуживание разных конечных пользователей. Для нескольких пользователей нужна Корпоративная версия. Доступно в Расширенной и Профессиональной версиях.

Docker

Смонтируйте каталог конфигурации на именованный том (он переживает пересоздание контейнера), запустите контейнер в режиме STDIO (-i) и при необходимости вынесите кэш индекса на отдельный том через флаг --cache-dir или переменную MCP_1C_CACHE_DIR (по умолчанию системный каталог кэша ОС). Режим сети --network=host рекомендуется для стабильной идентичности экземпляра. AI-клиент запускает весь этот docker run как команду MCP-сервера (флаги подключения идут после имени образа). Официального образа нет, упакуйте бинарник в свой образ.

docker run -i --rm \
  --network=host \
  -v mcp-1c-config:/root/.config/mcp-1c \
  -v mcp-1c-cache:/var/cache/mcp-1c \
  -e MCP_1C_CACHE_DIR=/var/cache/mcp-1c \
  mcp-1c-advanced:latest \
  --base "<строка подключения>"

Kubernetes

Используйте StatefulSet со стабильной идентичностью пода и отдельным PVC на каждый под (volumeClaimTemplates), смонтированным на каталог конфигурации. Не используйте эфемерный Deployment без PVC, он сбрасывает идентичность при каждом перезапуске. Один pod на одного пользователя.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mcp-1c
spec:
  serviceName: mcp-1c
  replicas: 1                 # один экземпляр на пользователя
  selector:
    matchLabels:
      app: mcp-1c
  template:
    metadata:
      labels:
        app: mcp-1c
    spec:
      containers:
        - name: mcp-1c
          image: mcp-1c-advanced:latest
          stdin: true          # STDIO-транспорт MCP
          args: ["--base", "..."]
          volumeMounts:
            - name: config
              mountPath: /root/.config/mcp-1c
  volumeClaimTemplates:
    - metadata:
        name: config
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 64Mi

Несколько пользователей на одном сервере. Несколько пользователей с одного общего сервера обслуживает Корпоративная версия (командный сервер), а не Расширенная или Профессиональная. Расширенная и Профессиональная рассчитаны на одного пользователя на экземпляр. Корпоративная версия пока имеет статус «Скоро».