MCP-сервер
Обзор
MCP-сервер Zabbix — это процесс, который позволяет ИИ-агентам работать с Zabbix с использованием протокола контекста модели (MCP). MCP-сервер взаимодействует с MCP-клиентами и API Zabbix.
С помощью MCP-сервера ИИ-агент может:
- получать группы узлов сети, группы шаблонов, узлы сети, шаблоны, элементы данных, правила LLD, интерфейсы, макросы, триггеры, проблемы, периоды обслуживания и данные истории элементов данных (за исключением элементов данных двоичного типа);
- выполнять обновление проблем: добавлять комментарии, подтверждать или снимать подтверждение, изменять важность, подавлять или отменять подавление, а также закрывать проблемы;
- создавать, обновлять и удалять периоды обслуживания.
Для авторизации используются токены API Zabbix; токены отправляются с каждым запросом. Доступ ограничен разрешениями владельца токена: видимы только данные из групп узлов сети, доступных этому пользователю, а действия, которые пользователю запрещено выполнять, отклоняются.
MCP-сервер не сохраняет состояние: между запросами сеанс не сохраняется.
Хотя MCP-сервер Zabbix может работать со старыми или более новыми версиями Zabbix, официально поддерживается только совместимость с той же версией Zabbix, что и версия самого MCP-сервера.
См. также:
Установка
Официальный пакет zabbix-mcp-server доступен в репозитории Zabbix.
Чтобы установить сервер Zabbix MCP из исходного кода, соберите его с помощью make.
Чтобы настроить сервер Zabbix MCP, измените параметры файла конфигурации сервера MCP.
Необходимо задать как минимум параметры FrontendURL и AllowedIP.
Файл конфигурации по умолчанию (zabbix_mcp_server.conf) находится в /etc/zabbix/; в нем запрещены инструменты, которые чаще всего раскрывают конфиденциальные данные. Чтобы включить инструмент, удалите соответствующую строку DenyTool.
См. также: Рекомендации по обеспечению безопасности
Запуск
Чтобы запустить MCP-сервер, выполните:
zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf
Чтобы проверить файл конфигурации и завершить работу без запуска сервера, используйте параметр -T:
zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf -T
Поддерживаются следующие параметры командной строки:
| Параметр | Описание |
|---|---|
-c <file> |
Путь к файлу конфигурации. По умолчанию используется /etc/zabbix/zabbix_mcp_server.conf. |
-T |
Проверить файл конфигурации и завершить работу. |
-h |
Отобразить справочную информацию. |
-V |
Отобразить номер версии. |
Если MCP-сервер установлен из исходного кода, файл модуля systemd необходимо создать вручную, например:
[Unit]
Description=Zabbix MCP server
After=network-online.target
[Service]
User=zabbix
ExecStart=/usr/local/sbin/zabbix_mcp_server -c /etc/zabbix/zabbix_mcp_server.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
Подключение клиента MCP
К серверу MCP можно подключить любой клиент MCP, поддерживающий транспорт Streamable HTTP. Требуются следующие настройки:
| Настройка | Значение |
|---|---|
| Транспорт | Streamable HTTP |
| URL | https://<host>:<ListenPort>/mcp |
| Заголовок | Authorization: Bearer <Zabbix API token>, отправляется с каждым запросом |
Каждый пользователь должен настроить собственный API-токен.
Чтобы проверить настройку, отправьте один запрос к серверу MCP:
curl -sS https://mcp.example.com:8443/mcp \
-H "Authorization: Bearer $ZABBIX_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Код состояния HTTP 200 и список доступных инструментов в ответе подтверждают, что сервер MCP доступен и принимает токен; список показывает, какие инструменты предоставляются.
Другие коды состояния указывают на следующие проблемы:
400- заголовокAcceptне содержит оба типа мультимедиа, требуемых транспортом;401- отсутствует заголовокAuthorizationс токеном;403- адрес клиента не указан в параметреAllowedIP.
Подтверждение и доступ к инструментам
Если MCP-клиент поддерживает получение данных через формы, каждое изменение должно быть подтверждено пользователем до его отправки в Zabbix. MCP-клиент показывает пользователю, что будет изменено, и изменение применяется только после подтверждения пользователя; если пользователь отклоняет или закрывает запрос, в Zabbix ничего не изменяется. Подтверждение действительно в течение пяти минут и только для точно показанного изменения; в течение этого времени подтверждение можно использовать повторно.
Если MCP-клиент не поддерживает получение данных через формы (включая клиенты, поддерживающие только получение данных через URL), изменения применяются немедленно, без подтверждения. В этом случае ограничьте инструменты записи и разрешения API Zabbix.
Подтверждение особенно важно, поскольку вывод инструментов может содержать ненадежный текст из отслеживаемых систем, который способен повлиять на агента.
Используйте AllowTool, DenyTool, AllowToolRegexp и DenyToolRegexp, чтобы управлять инструментами, доступными MCP-серверу. Запрещенные инструменты нельзя вызывать или просматривать, а связанные с ними ресурсы недоступны.
Правила AllowTool, DenyTool, AllowToolRegexp и DenyToolRegexp ограничивают доступ к MCP, но не изменяют разрешения токена Zabbix. Если адрес веб-интерфейса доступен агенту с искусственным интеллектом, агент может попытаться отправить прямые вызовы API. Не предоставляйте агенту доступ к расположению веб-интерфейса Zabbix и конфигурации MCP-сервера, чтобы запросы обязательно проходили через MCP-сервер и его средства защиты.
Рекомендации по обеспечению безопасности
Токены API
Аутентификация и авторизация полностью выполняются Zabbix. Клиент MCP отправляет токен API Zabbix с каждым запросом; MCP-сервер передаёт его без сохранения или записи в журнал, а Zabbix проверяет токен, применяет разрешения и записывает действия в журнал аудита.
Используйте отдельный токен с минимальными привилегиями и сроком действия для каждого агента и пользователя. Храните токены в безопасном месте и регулярно выполняйте их ротацию.
Шифрование TLS
Чтобы токены не передавались в открытом виде, установите TLSAccept=cert и укажите сертификат и ключ (TLSCertFile и TLSKeyFile) либо запустите MCP-сервер за доверенным обратным прокси, завершающим TLS, и установите TLSAccept=unencrypted.
Нешифрованный HTTP допустим только в доверенной сети.
Ограничения доступа
Ограничьте параметр AllowedIP адресами доверенных клиентов MCP и используйте разрешения Zabbix, чтобы ограничить возможности токенов API.
MCP-сервер не ограничивает частоту запросов. Каждый запрос MCP обычно приводит к одному вызову API Zabbix, однако агент, работающий в цикле, всё равно может создавать значительную нагрузку.
Защита конфиденциальных данных
Ключи элементов данных могут содержать учетные данные (например, в элементах данных SSH, JMX, ODBC и HTTP agent), значения макросов могут содержать пароли и строки сообществ, интерфейсы раскрывают внутренние адреса, а значения элементов данных журнала или текста могут содержать любые данные.
По этой причине инструменты item_get, lld_get, interface_get, macro_get и history_get по умолчанию запрещены в поставляемом файле конфигурации.
Чтобы избежать раскрытия конфиденциальных значений макросов поставщику LLM подключенного агента, используйте секретные макросы; их значения никогда не возвращаются API.