Перейти к основному содержимому

Развертывание MCP-сервера на виртуальной машине

MCP-прокси (Model Context Protocol) -- это сервер, через который AI-агенты (Claude Desktop, Cursor, Claude Code) работают с данными конфигурации «Управление IT-отделом 8». Прокси принимает запросы от AI-клиентов и транслирует их в HTTP-сервис 1С.

В данной статье описано развертывание MCP-прокси на отдельной виртуальной машине с Docker.

Схема работы

Все компоненты находятся в одной локальной сети. AI-клиенты на рабочих станциях подключаются к MCP-прокси по протоколу Streamable HTTP. Прокси транслирует запросы в HTTP-сервис 1С.

Требования

Виртуальная машина

ПараметрМинимумРекомендация
CPU2 vCPU4 vCPU
RAM2 GB4 GB
Диск20 GB SSD40 GB SSD
ОСUbuntu 22.04 / Debian 12Ubuntu 24.04

Сеть

  • ВМ должна иметь сетевой доступ к серверу 1С (HTTP-порт, обычно 80 или 443)
  • Порт MCP-прокси (по умолчанию 8000) должен быть доступен с рабочих станций
  • 1С должна быть опубликована на веб-сервере с включенным HTTP-сервисом mcp

  • Конфигурация «Управление IT-отделом 8» с подсистемой MCP
  • HTTP-сервис mcp опубликован и доступен по адресу вида http://<сервер>/<база>/hs/mcp/rpc
  • Учетные записи пользователей с паролями для входа в 1С

Шаг 1. Установка Docker

Подключитесь к ВМ по SSH и установите Docker:

# Обновление пакетов
sudo apt update && sudo apt install -y ca-certificates curl gnupg

# Добавление репозитория Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| sudo tee /etc/apt/sources.list.d/docker.list

# Установка Docker и Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Добавление текущего пользователя в группу docker
sudo usermod -aG docker $USER

После добавления в группу docker необходимо перелогиниться (выйти и войти по SSH заново).

Проверка установки:

docker --version
docker compose version

Шаг 2. Размещение файлов MCP-прокси

Код MCP-прокси опубликован в отдельном репозитории github.com/Diversus23/itmcp. Склонируйте его на сервер:

git clone https://github.com/Diversus23/itmcp.git ~/mcp
cd ~/mcp

Для развёртывания через Docker нужны файлы Dockerfile, docker-compose.yml и каталог src/ — все они входят в репозиторий.

Шаг 3. Настройка конфигурации

Создайте файл .env в директории ~/mcp/:

cd ~/mcp
cp .env.docker.example .env
nano .env

Режим OAuth2 (рекомендуется для нескольких пользователей)

# Подключение к 1С
MCP_ONEC_URL=http://<ip-сервера-1с>/<имя-базы>
MCP_ONEC_USERNAME=
MCP_ONEC_PASSWORD=

# HTTP-сервер
MCP_HOST=0.0.0.0
MCP_PORT=8000

# MCP-сервер
MCP_SERVER_NAME=IT-MCP
MCP_SERVER_VERSION=1.0.0

# Авторизация OAuth2
MCP_AUTH_MODE=oauth2
MCP_PUBLIC_URL=http://<ip-адрес-вм>:8000

# Логирование
MCP_LOG_LEVEL=INFO

Замените:

  • <ip-сервера-1с> -- IP-адрес сервера, на котором опубликована база 1С
  • <имя-базы> -- имя базы в публикации (например, tracker)
  • <ip-адрес-вм> -- IP-адрес виртуальной машины с MCP-прокси
Информация

В режиме oauth2 поля MCP_ONEC_USERNAME и MCP_ONEC_PASSWORD не используются - каждый пользователь авторизуется своей учетной записью 1С. Эти поля можно оставить пустыми.

Режим без авторизации (для одного пользователя)

Если MCP будет использовать только один человек, можно упростить настройку:

MCP_ONEC_URL=http://<ip-сервера-1с>/<имя-базы>
MCP_ONEC_USERNAME=ВашЛогин1С
MCP_ONEC_PASSWORD=ВашПароль1С

MCP_HOST=0.0.0.0
MCP_PORT=8000
MCP_AUTH_MODE=none
MCP_LOG_LEVEL=INFO
Осторожно

В режиме none все запросы выполняются от имени одного пользователя, указанного в MCP_ONEC_USERNAME. Любой, кто подключится к прокси, получит доступ к данным этого пользователя.

Шаг 4. Сборка и запуск

cd ~/mcp
docker compose up -d --build

Проверка запуска:

# Статус контейнера
docker compose ps

# Логи (должно быть: "Uvicorn running on http://0.0.0.0:8000")
docker compose logs -f

Проверка доступности из сети (с рабочей машины):

curl http://<ip-адрес-вм>:8000/.well-known/oauth-protected-resource

Должен вернуться JSON с endpoints OAuth2.

Шаг 5. Автозапуск

Docker-контейнер уже настроен на автоматический перезапуск (restart: unless-stopped). Убедитесь, что Docker запускается при старте ОС:

sudo systemctl enable docker

Обновление MCP-прокси

При обновлении кода прокси:

cd ~/mcp
# Скопировать новые файлы src/ на сервер, затем:
docker compose up -d --build

Диагностика

ПроблемаРешение
permission denied при docker composeДобавьте пользователя в группу docker: sudo usermod -aG docker $USER, перелогиньтесь
Контейнер перезапускается в циклеПроверьте логи: docker compose logs. Обычно проблема в .env
Connection refused с рабочей машиныПроверьте, что MCP_HOST=0.0.0.0 в .env и порт 8000 открыт в firewall
HTTP error 401 в логахНеверные учетные данные 1С. Проверьте логин/пароль
Connection refused к 1СПроверьте, что HTTP-сервис 1С опубликован и доступен с ВМ: curl http://<ip-1с>/<база>/hs/mcp/health
Важно!

Описанный в статье функционал доступен в конфигурации «Управление IT-отделом» редакции 4.0.