Развертывание MCP-сервера на виртуальной машине
MCP-прокси (Model Context Protocol) -- это сервер, через который AI-агенты (Claude Desktop, Cursor, Claude Code) работают с данными конфигурации «Управление IT-отделом 8». Прокси принимает запросы от AI-клиентов и транслирует их в HTTP-сервис 1С.
В данной статье описано развертывание MCP-прокси на отдельной виртуальной машине с Docker.
Схема работы
Все компоненты находятся в одной локальной сети. AI-клиенты на рабочих станциях подключаются к MCP-прокси по протоколу Streamable HTTP. Прокси транслирует запросы в HTTP-сервис 1С.
Требования
Виртуальная машина
| Параметр | Минимум | Рекомендация |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 2 GB | 4 GB |
| Диск | 20 GB SSD | 40 GB SSD |
| ОС | Ubuntu 22.04 / Debian 12 | Ubuntu 24.04 |
Сеть
- ВМ должна иметь сетевой доступ к серверу 1С (HTTP-порт, обычно 80 или 443)
- Порт MCP-прокси (по умолчанию 8000) должен быть доступен с рабочих станций
- 1С должна быть опубликована на веб-сервере с включенным HTTP-сервисом
mcp
1С
- Конфигурация «Управление 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.