Skip to content

MCP: Docker-compose standalone ​

Инструкция для установки, развёрнутой по Docker-compose standalone: Postgres, Redis и хранилище MinIO работают на той же машине, что и Эсборд.

В этом варианте MCP-сервер поднимается на отдельной машине со своими Redis и Postgres: обращаться к базам Эсборд ему не нужно, у него своя маленькая нагрузка. А вот хранилище изображений общее: картинки на досках лежат в MinIO Эсборд, и без доступа к нему скриншоты досок будут приходить с серыми прямоугольниками вместо изображений.

Дальше в примерах:

  • 10.0.0.10 это внутренний адрес машины Эсборд;
  • 10.0.0.20 это внутренний адрес MCP-машины;
  • sboard.mycompany.com это домен вашей установки.

Шаг 1. Настройка машины Эсборд ​

  1. В файле .env рядом с docker-compose.yml Эсборд добавьте переменные:
shell
BOARD_MCP_HOST=10.0.0.20      # внутренний адрес MCP-машины: туда nginx передаёт запросы агентов
MCP_GATEWAY_PORT=9443         # служебный порт, можно оставить как есть
MCP_GATEWAY_BIND_IP=10.0.0.10 # на каком интерфейсе машины Эсборд слушать служебный порт
BOARD_MCP_PORT=3100           # порт входа MCP-сервера, менять только вместе с публикацией на шаге 2
MINIO_BIND_IP=10.0.0.10       # на каком интерфейсе отдавать хранилище изображений

Зачем нужны BIND_IP

По умолчанию служебный порт и хранилище слушают только 127.0.0.1, то есть доступны лишь самой машине Эсборд. MCP-машине этого мало. Указав в MCP_GATEWAY_BIND_IP и MINIO_BIND_IP внутренний адрес машины Эсборд (в примере 10.0.0.10), вы делаете порты доступными по локальной сети, но не в интернете: публичными остаются только 80 и 443.

Если на машине несколько сетевых интерфейсов, укажите тот адрес, который видит MCP-машина.

  1. Задайте ключи шифрования токенов доступа агентов:
shell
CRYPTO_PASSWORD=Kh3pWq8ZtR2mBvNs      # секрет установки, произвольная строка
CRYPTO_IV_16_BYTE=A7fQ2xLpR9dM4kTz    # вектор инициализации, ровно 16 символов

Задайте до первого выпуска токенов

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

Если переменные не заданы, используются значения по умолчанию, одинаковые во всех установках Эсборд. Работать будет, но любой, кто получит копию вашей базы, сможет расшифровать токены.

  1. При необходимости ограничьте число вызовов MCP на сотрудника в сутки:
shell
MCP_DAILY_LIMIT=500   # пусто или 0 означает без ограничения
  1. Пересоздайте контейнер Эсборд, чтобы переменные применились:
shell
docker-compose -f docker-compose.yml up -d --force-recreate
  1. Убедитесь, что порты 9443 и 9000 доступны с MCP-машины и закрыты для всех остальных адресов средствами вашего межсетевого экрана.

Шаг 2. Установка MCP-сервера ​

  1. Создайте на MCP-машине папку приложения:
shell
mkdir "/board-mcp"
  1. Создайте в новой папке файл docker-compose.yml:
shell
nano docker-compose.yml
  1. Добавьте в docker-compose.yml следующее:
yml
version: "3.3"
services:
  redis:
    image: "${DOCKER_REGISTRY}/redis:${DOCKER_IMAGE_TAG}"
    restart: "always"

  postgres:
    image: "${DOCKER_REGISTRY}/postgres:${DOCKER_IMAGE_TAG}"
    restart: "always"
    environment:
      PGDATA: /data
    volumes:
      - pg_data:/data

  board-mcp:
    image: "${DOCKER_REGISTRY}/mcp-agent:${DOCKER_IMAGE_TAG}"
    restart: "always"
    ports:
      - 10.0.0.20:3100:3000
    environment:
      GRPC_BOARDS_MCP_SERVICE_URL: "${BOX_HOST}:${MCP_GATEWAY_PORT}"
      GRPC_EVENTS_SERVICE_URL: "${BOX_HOST}:${MCP_GATEWAY_PORT}"
      GRPC_LIMITS_SERVICE_URL: "${BOX_HOST}:${MCP_GATEWAY_PORT}"
      GRPC_APPS_SERVICE_URL: "${BOX_HOST}:${MCP_GATEWAY_PORT}"
      GRPC_JOURNAL_SERVICE_URL: "${BOX_HOST}:${MCP_GATEWAY_PORT}"
      WHITEBOARD_API_UPLOAD_STREAM_URL: "http://${BOX_HOST}:${MCP_GATEWAY_PORT}/api/boards/v1/boardUpload/mcp-stream"
      MCP_RESOURCE_URL: "https://${DOMAIN_NAME}/board-mcp"
      MCP_PUBLIC_BASE_URL: "https://${DOMAIN_NAME}"
      OAUTH_ISSUER_URL: "https://${DOMAIN_NAME}/api"
      REDIS_HOST: "redis"
      REDIS_PORT: "6379"
      REDIS_PASS: "${REDIS_PASS}"
      POSTGRES_URL: "${POSTGRES_URL}"
      ENDPOINT: "${S3_ENDPOINT}"
      BUCKET: "${S3_BUCKET}"
      ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID}"
      SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY}"
    depends_on:
      - redis
      - postgres

volumes:
  pg_data:

Публикация порта 3100

Порт публикуется на внутренний адрес MCP-машины (10.0.0.20), потому что к нему обращается nginx Эсборд. В интернет этот порт выставлять не нужно: сотрудники работают через домен Эсборд.

  1. Создайте файл .env в папке с docker-compose.yml и укажите в нём переменные окружения. Пример:
shell
DOCKER_REGISTRY=cr.yandex/crpqnc9iiqap7fs19jhl
DOCKER_IMAGE_TAG=2026.3.1 # та же версия, что у вашей установки Эсборд

BOX_HOST=10.0.0.10 # внутренний адрес машины Эсборд
MCP_GATEWAY_PORT=9443 # служебный порт Эсборд, тот же, что задали на шаге 1
DOMAIN_NAME=sboard.mycompany.com # домен вашей установки Эсборд

REDIS_PASS=pass # пароль redis из этого же docker-compose
POSTGRES_URL=postgresql://postgres:example@postgres:5432/sboard # база из этого же docker-compose

S3_ENDPOINT=10.0.0.10:9000 # хранилище Эсборд: адрес машины Эсборд и порт MinIO
S3_BUCKET=sboard-whiteboard # название бакета, как в установке Эсборд
S3_ACCESS_KEY_ID=access_key_id # ключ доступа к хранилищу, как в установке Эсборд
S3_SECRET_ACCESS_KEY=secret_access_key # секрет доступа к хранилищу, как в установке Эсборд

Про хранилище и скриншоты

S3_* здесь это те же значения, что у вашей установки Эсборд: MCP-сервер читает те же файлы изображений. Если оставить их пустыми, MCP будет работать, но на скриншотах досок вместо картинок появятся серые прямоугольники.

  1. Авторизуйтесь в Docker registry (запросите ключ авторизации key.json у вашего менеджера)
shell
cat key.json | docker login \
--username json_key \
--password-stdin \
cr.yandex
  1. Подтяните образы с Docker registry
shell
docker-compose -f docker-compose.yml pull
  1. Запустите docker-compose
shell
docker-compose -f docker-compose.yml up -d

Шаг 3. Лицензия и проверка ​

Загрузите лицензию MCP и проверьте установку по общей инструкции.