1С через MCPO
Эта инструкция описывает подключение Omnium к 1С через промежуточный слой MCPO и локальный сервер 1c_mcp.
Как устроена схема
Рабочая цепочка выглядит так:
Omnium -> MCPO (HTTPS + Bearer) -> 1c_mcp (stdio, локально) -> 1С (HTTP-сервис /hs/mcp/)
Важно заранее
- Omnium продолжает администрироваться со стороны Omnium.
- Вы администрируете
1Си свой контурMCPO. - Наружу публикуется только
MCPO. HTTP-сервис1Снапрямую в интернет не публикуется.
Что вы получаете
В поставку входят два архива:
MCP_Server.cfe— расширение для1С.1C MCP Proxy— контейнер и конфигурация для связки сMCPO.
Часть 1. Настройка 1С
Шаг 1. Создайте технического пользователя
Создайте в 1С отдельного технического пользователя для интеграции с правами только на чтение.
Шаг 2. Установите расширение MCP_Server.cfe
Администрирование -> Расширения конфигурации -> Добавить из файла
Шаг 3. Перезапустите сеанс 1С
Шаг 4. Опубликуйте сервис
mcp
Шаг 5. Проверьте доступность ручки /health
curl https://<ваш_адрес>/<ваша_публикация>/hs/mcp/health
Ожидаемый ответ:
{"status":"ok"}
Часть 2. Настройка MCPO и 1C MCP Proxy
Шаг 1. Распакуйте архив 1C MCP Proxy
Распакуйте архив 1C MCP Proxy на сервере с Docker.
Шаг 2. Заполните config.json
Заполните config.json параметрами подключения к 1С:
{
"mcpServers": {
"1c": {
"command": "python",
"args": ["-m", "py_server"],
"env": {
"PYTHONPATH": "/app/1c/src",
"MCP_ONEC_URL": "https://<ваш_адрес>/<ваша_публикация>",
"MCP_ONEC_USERNAME": "<тех_пользователь_1с>",
"MCP_ONEC_PASSWORD": "<пароль>"
}
}
}
}
Важно
MCP_ONEC_URL указывается без суффикса /hs/mcp.
Шаг 3. Сгенерируйте Bearer-токен
openssl rand -hex 32
Шаг 4. Соберите и запустите контейнер
docker build -f Dockerfile.mcpo -t 1c-mcpo:latest .
docker run -d \
--name 1c-mcpo \
-p 8000:8000 \
-e MCPO_API_KEY='<ваш_длинный_токен>' \
--restart unless-stopped \
1c-mcpo:latest
Шаг 5. Проверьте запуск MCPO с --api-key
Убедитесь, что MCPO стартует, например, так:
mcpo --host 0.0.0.0 --port 8000 --api-key "${MCPO_API_KEY}" --config /app/config.json
Часть 3. Проверка
Проверьте, что MCPO поднялся:
curl https://<ваш_mcpo_host>:8000/health
Проверьте, что без Bearer-токена доступ закрыт:
curl -X POST "https://<ваш_mcpo_host>/1c/list_metadata_objects" \
-H "Content-Type: application/json" \
-d '{"metaType":"Catalogs","maxItems":1}'
Ожидаемый результат: 401 или 403.
Проверьте, что с токеном запрос проходит:
curl -X POST "https://<ваш_mcpo_host>/1c/list_metadata_objects" \
-H "Authorization: Bearer <ваш_длинный_токен>" \
-H "Content-Type: application/json" \
-d '{"metaType":"Catalogs","maxItems":1}'
Часть 4. Сетевые ограничения
Разрешите доступ к MCPO только с IP-адреса Omnium, который будет передан отдельно.
Запретите прямой внешний доступ к маршрутам:
.../hs/mcp/...
в 1С.
Используйте HTTPS на внешнем входе в MCPO.
Где настраивать блокировку
Ограничение внешнего доступа к .../hs/mcp/... задаётся на уровне веб-сервера, например Apache или IIS, а не внутри самой 1С.
Часть 5. Что передать для подключения
После настройки передайте:
Внешний HTTPS-адрес MCPO, например:
https://<ваш_mcpo_host>
Bearer-токен MCPO_API_KEY.
Подтверждение, что IP Omnium добавлен в allowlist.
После этого можно выполнить финальную проверку подключения Omnium к вашему MCP.