omnichannel-configserver-mcp

MCP-сервер для управления платформой Omnichannel через API config_server: развёртывание релизов и эксплуатация — из любого AI-ассистента, без веб-интерфейса.

Сервер реализует Model Context Protocol и работает как обычный stdio-процесс: Claude Desktop, Cursor или любой другой MCP-клиент запускает его локально, а он транслирует запросы ассистента в HTTP API config_server. Состояния не хранит.

Возможности

  • Развёртывание — схема и манифест стенда, выгрузка релиза (пакеты и образы), запуск сервисов на одном или нескольких серверах, обновление фронта.
  • Эксплуатация — сводка по стенду, статусы сервисов и хостов, аудит задач агентов, журналы миграций, диагностика сопоставления IP.
  • Конфигурация — чтение и изменение compose/env, версии и безопасный откат, повторная выдача конфига агенту.
  • Безопасность — режим «только чтение», отдельные read-only креды, подтверждение разрушительных операций, секреты только из окружения.

Требования

  • Запущенный config_server 1.1.0+, доступный по сети (http://host:5005).
  • Учётная запись config_server.
  • Go 1.27+ для сборки.
  • MCP-клиент, поддерживающий stdio-серверы.

Быстрый старт

export GOPRIVATE=git.totmin.ru
go build -o omnichannel-configserver-mcp .
./omnichannel-configserver-mcp --health            # -> ok

cp examples/config.single-server.json config.json   # укажите base_url
export OMNI_USER=admin OMNI_PASSWORD='...'
./omnichannel-configserver-mcp --check-config -config config.json

Подключение к клиенту (общий вид):

{
  "mcpServers": {
    "omnichannel-configserver-mcp": {
      "command": "/opt/omnichannel-configserver-mcp/omnichannel-configserver-mcp",
      "args": ["-config", "/opt/omnichannel-configserver-mcp/config.json"],
      "env": { "OMNI_USER": "admin", "OMNI_PASSWORD": "СЕКРЕТ" }
    }
  }
}

Проверка: попросите ассистента «покажи, что сейчас на стенде» — он вызовет server_info и overview.

Пример: деплой за несколько шагов

Один сервис (уже зарегистрирован в config_server):

«Обнови compose сервиса demo_web на образ nginx:1.27, подними и дождись результата.»

Ассистент: set_compose → deploy → get_task → overview.

Релиз на несколько серверов:

«Сохрани schema.json и manifest.json, разложи хосты, скачай релиз с образами, дождись завершения и запусти сервисы.»

Ассистент: save_deployment_files → ip_match → seed_hosts → download_release → release_job → start_services → deployment_tasks → overview.

Подробные playbooks (1 сервер, N серверов, фронт, откат) с форматами schema.json/manifest.json — docs/deployment.md. Готовые формулировки промптов — examples/prompts.md.

Демо без прода

docker compose -f examples/demo/docker-compose.yml up -d   # локальный config_server v1.1.0
go build -o omnichannel-configserver-mcp .
python3 examples/demo/demo.py                              # сквозной сценарий через MCP
python3 examples/demo/e2e.py                               # + реальный config-agent: deploy/restart/down
docker compose -f examples/demo/docker-compose.yml down -v

Подробнее — examples/demo/README.md.

Документация

Безопасность (кратко)

  • read_only: true по умолчанию; мутации требуют явного read_only=false.
  • Разрушительные операции требуют confirm="true".
  • Read-инструменты могут ходить под отдельными read-only кредами.
  • Секреты — только из переменных окружения или config.local.json (не в git).
  • Подробно — docs/security.md.

Разработка

export GOPRIVATE=git.totmin.ru
make build      # собрать бинарник
make ci         # build + test(race) + lint + tidy-check
make demo       # поднять локальный стенд и прогнать сквозной сценарий

Подробнее — CONTRIBUTING.md.

Лицензия

Apache-2.0 — см. LICENSE. Внутренний проект компании.

S
Description
No description provided
Readme Apache-2.0
174 KiB
Languages
Go 98.7%
Makefile 1.3%