6.6 KiB
Конфигурация
Конфиг — JSON-файл (по умолчанию config.json), который задаёт подключения к
config_server и политику безопасности. Рядом можно положить
config.local.json с секретами — он накладывается поверх и не коммитится.
Как задать путь к конфигу
Приоритет (первый найденный):
- аргумент инструмента
config_path(для обёрток; обычно не нужен); - флаг запуска
-config /path/config.json; - каталог из переменной окружения
OMNI_CONFIG_DIR(в нём берётсяomnichannel-mcp.json).
Обычный режим — флаг -config.
Структура
{
"servers": [ { … }, { … } ],
"default": "prod",
"read_only": true,
"allow_hosts": ["10.20.30.40"]
}
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
servers |
массив | — | Подключения к стендам. Обязательно, если не задан shorthand. |
default |
строка | первый сервер | Алиас сервера, если в вызове не указан server. |
read_only |
bool | true |
Запрещает изменяющие инструменты (безопасный режим). |
allow_hosts |
массив | пусто | Если задан — base_url любого сервера обязан быть на этих хостах. |
Поля сервера
{
"alias": "prod",
"base_url": "http://10.20.30.40:5005",
"username": "${OMNI_USER}",
"password": "${OMNI_PASSWORD}",
"readonly_username": "${OMNI_RO_USER}",
"readonly_password": "${OMNI_RO_PASSWORD}",
"gitlab_token": "${OMNI_GITLAB_TOKEN}",
"insecure_skip_verify": false,
"front_roots": ["/srv/omni-front-builds"],
"timeout_sec": 30,
"upload_timeout_sec": 300,
"task_poll_max_sec": 120,
"task_poll_interval_sec": 2,
"max_output_bytes": 100000,
"max_upload_bytes": 536870912,
"max_concurrent_mutations": 1
}
| Поле | По умолчанию | Назначение |
|---|---|---|
alias |
— | Имя стенда для выбора сервером (server:"prod"). |
base_url |
— | Адрес API config_server (http/https). Обязательно. |
username / password |
— | Учётная запись с правом записи. |
readonly_username / readonly_password |
— | Необязательная учётная запись только для чтения (read-инструменты используют её). |
gitlab_token |
— | Токен для download_release (если не задан — используется значение сервера/окружения). |
insecure_skip_verify |
false |
Отключить проверку TLS-сертификата (самоподписанные стенды). |
front_roots |
[] |
Разрешённые каталоги локальных сборок фронта (jail). Пусто — update_front запрещён. |
timeout_sec |
30 |
Таймаут обычных запросов. |
upload_timeout_sec |
300 |
Таймаут загрузки фронта и синхронной выгрузки релиза. |
task_poll_max_sec |
120 |
Максимум ожидания задачи при wait=true. |
task_poll_interval_sec |
2 |
Интервал опроса задачи. |
max_output_bytes |
100000 |
Лимит длины вывода задачи (обрезается, хвост сохраняется). |
max_upload_bytes |
536870912 |
Лимит суммарного размера сборки фронта (512 МиБ). |
max_concurrent_mutations |
1 |
Максимум одновременных изменяющих операций на сервер. |
Секреты
Два способа, оба безопасны (не попадают в репозиторий):
1. Переменные окружения — подстановка ${VAR} в config.json:
{ "password": "${OMNI_PASSWORD}" }
Переменная должна быть задана в окружении процесса MCP-сервера. Если её нет — сервер откажется стартовать и явно укажет имя переменной (fail-closed).
2. config.local.json — файл рядом с config.json (в .gitignore),
накладывается поверх: объекты сливаются, серверы — по alias.
{
"servers": [
{ "alias": "prod", "password": "реальный-пароль" }
],
"read_only": false
}
Shorthand для одного сервера
Вместо массива servers можно задать корневые поля — это один сервер с
алиасом default:
{
"base_url": "http://10.20.30.40:5005",
"username": "${OMNI_USER}",
"password": "${OMNI_PASSWORD}"
}
Несколько стендов
Каждому стенду — свой alias; инструменты принимают аргумент server:
{
"servers": [
{ "alias": "prod", "base_url": "http://10.20.30.40:5005", "username": "${P_USER}", "password": "${P_PASS}" },
{ "alias": "stage", "base_url": "http://10.20.31.40:5005", "username": "${S_USER}", "password": "${S_PASS}" }
],
"default": "prod",
"allow_hosts": ["10.20.30.40", "10.20.31.40"]
}
Пример целиком — ../examples/config.multi-server.json.
Режим «только чтение» (наблюдатель)
Для мониторинга удобно поднять отдельный инстанс без права изменений:
{
"servers": [{ "alias": "prod", "base_url": "http://10.20.30.40:5005",
"readonly_username": "${OMNI_RO_USER}",
"readonly_password": "${OMNI_RO_PASSWORD}" }],
"read_only": true
}
Пример — ../examples/config.readonly-observer.json.
Проверка конфига
./omnichannel-mcp --check-config -config config.json
Печатает итоговый (слитый) конфиг с замаскированными секретами, список серверов
и default. Код возврата ≠ 0 при ошибке — удобно для CI.