Инструменты и ресурсы
Обзор
MCP-сервер Zabbix предоставляет клиентам MCP функциональность Zabbix в виде инструментов и ресурсов.
Названия инструментов описывают выполняемое действие. Если задан параметр ToolPrefix, этот префикс добавляется к названию каждого инструмента; правила доступа к инструментам сопоставляются с указанными ниже названиями без префикса.
Инструменты чтения
| Инструмент | Метод Zabbix API | Аргументы | Сортировка по | Ресурс |
|---|---|---|---|---|
hostgroup_get |
hostgroup.get | groupids, names, search, limit |
name | zabbix://hostgroup/<id> |
templategroup_get |
templategroup.get | groupids, names, search, limit |
name | zabbix://templategroup/<id> |
host_get |
host.get | hostids, groupids, search, limit |
name | zabbix://host/<id> |
template_get |
template.get | templateids, groupids, search, limit |
name | zabbix://template/<id> |
item_get |
item.get | hostids, itemids, search, limit |
name | zabbix://item/<id> |
lld_get |
discoveryrule.get | hostids, ruleids, limit |
name | - |
interface_get |
hostinterface.get | hostids, interfaceids, limit |
идентификатор интерфейса | - |
macro_get |
usermacro.get | hostids или global, macro_names, limit |
макрос | - |
problem_get |
problem.get | eventids, groupids, hostids, severities, acknowledged, suppressed, recent, limit |
идентификатор события, по убыванию | - |
maintenance_get |
maintenance.get | maintenanceids, groupids, hostids, limit |
name | - |
history_get |
history.get | itemids, time_from, time_till, type, limit |
время, по убыванию | - |
trigger_get |
trigger.get | triggerids, hostids, search, limit |
описание | zabbix://trigger/<id> |
Обратите внимание:
host_getиtemplate_getтакже возвращают триггеры каждого объекта (ограниченный набор полей), теги и связанные шаблоны. Элементы данных, правила обнаружения, интерфейсы и макросы возвращаются соответствующими инструментами.history_getтребует диапазон времени не более 7 дней, начинающийся не ранее чем 7 дней назад. Аргументtypeдолжен иметь одно из значенийfloat,unsigned,character,text,logилиjsonи соответствовать типу значения элементов данных; если тип указан неправильно, возвращается пустой результат, который невозможно отличить от элемента данных без данных. Историю двоичных элементов данных (тип значения 5) нельзя получить через MCP-сервер.- Инструменты чтения запрашивают фиксированный список полей; все поля (
output: extend) никогда не запрашиваются. - Результаты инструментов, у которых есть ресурс, содержат поле
uri, чтобы агент мог перейти от списка к отдельной сущности.
Формат ответа
Все инструменты чтения возвращают ответ в одном и том же формате:
{
"results": [ ... ],
"count": 2,
"truncated": true,
"truncated_by": "count",
"limit": 2,
"note": "The result count limit was reached ..."
}
Ответ ограничивается аргументом limit (по умолчанию: 100, максимум: 1000) и сериализованным размером ответа (MaxResponseSize, по умолчанию: 64K).
Формирование ответа прекращается при достижении любого из этих ограничений.
Ответ усекается только между результатами, но не внутри результата; в усечённом ответе указывается, какое ограничение было достигнуто.
Для каждого инструмента задан фиксированный порядок сортировки, поэтому усечённый ответ всегда содержит начало полного набора результатов.
Постраничная выдача не поддерживается; чтобы получить другие результаты, сузьте запрос.
Инструменты для работы с проблемами
Все инструменты для работы с проблемами вызывают event.acknowledge с соответствующими флагами действий.
Аргумент eventids является обязательным; идентификаторы событий можно получить с помощью problem_get.
С помощью любого инструмента для работы с проблемами можно добавить сообщение (комментарий).
Аргумент message является необязательным, за исключением problem_annotate, где он обязателен; если он указан, сообщение записывается в рамках того же вызова API Zabbix.
| Tool | Effect | Additional arguments |
|---|---|---|
problem_acknowledge |
Подтвердить проблему. | - |
problem_unacknowledge |
Удалить подтверждение. | - |
problem_close |
Закрыть проблему вручную (только для триггеров, допускающих ручное закрытие). | - |
problem_annotate |
Записать сообщение. | message (обязательный) |
problem_change_severity |
Изменить уровень серьезности проблемы. | severity (0-5) |
problem_suppress |
Подавить проблему до указанного времени или на неопределенный срок. | suppress_until |
problem_unsuppress |
Удалить подавление. | - |
Проблемы нельзя создавать или удалять; все инструменты для работы с проблемами обновляют существующие проблемы.
Инструменты обслуживания
| Инструмент | Метод Zabbix API | Аргументы |
|---|---|---|
maintenance_create |
maintenance.create | name, groupids и/или hostids, active_since, active_till, timeperiods, description, tags, tags_evaltype |
maintenance_update |
maintenance.update | maintenanceid и любые из указанных выше аргументов. Аргументы-списки заменяют весь набор значений; пустой список очищает набор. |
maintenance_delete |
maintenance.delete | maintenanceids |
При обновлении периода обслуживания аргументы-списки (например, hostids, groupids и timeperiods) заменяют существующие значения, а не добавляются к ним.
Например, если период обслуживания охватывает узлы сети A и B, а вызывается maintenance_update с hostids, содержащим только узел сети C, период обслуживания будет охватывать только узел сети C.
maintenance_create — единственная операция, которая не является идемпотентной, а maintenance_delete — единственная операция, которую невозможно отменить.
Чтобы запретить их использование, запретите эти инструменты с помощью параметра DenyTool.
Поведение инструментов записи
Инструменты для работы с проблемами и обслуживаниями являются инструментами записи. Они работают следующим образом:
- Аргументы проверяются до любого вызова API Zabbix; если проверка не пройдена, в ошибке указывается невыполненное ограничение.
- Если клиент поддерживает эту возможность, изменение применяется только после его одобрения пользователем.
- Изменение выполняется Zabbix с использованием токена вызывающей стороны. Zabbix проверяет права доступа и записывает изменение в журнал аудита с указанием владельца токена.
- Ошибки Zabbix, включая ошибки доступа, возвращаются без изменений в виде объекта ошибки с полями
code,messageиdata. - Инструменты записи напрямую возвращают результат Zabbix; ограничения на размер ответа инструментов чтения не применяются.
- Вызовы записи никогда не повторяются MCP-сервером.
Ресурсы
Ресурсы используют схему URI zabbix://<kind>/<id>.
Только zabbix://about включается в ответ resources/list; идентификаторы сущностей нельзя перечислить, их получают из результатов работы инструментов.
В ответе resources/templates/list перечислены виды сущностей.
| URI | Содержимое |
|---|---|
zabbix://about |
URL API, URL веб-интерфейса, версия Zabbix, идентификатор пользователя, которому соответствует токен вызывающей стороны, и список доступных инструментов. |
zabbix://host/<hostid> |
Запись узла сети без элементов данных, триггеров, интерфейсов и макросов. |
zabbix://hostgroup/<groupid> |
Запись группы узлов сети без списка участников. |
zabbix://template/<templateid> |
Запись шаблона без элементов данных, триггеров и правил обнаружения. |
zabbix://templategroup/<groupid> |
Запись группы шаблонов без списка участников. |
zabbix://item/<itemid> |
Определение элемента данных без текущего значения. |
zabbix://trigger/<triggerid> |
Определение триггера без узлов сети, зависимостей, функций и тегов. |
Ресурс, для которого соответствующий инструмент запрещен, не существует.
Несуществующая сущность и сущность, к которой владелец токена не имеет доступа, в обоих случаях обозначаются как ресурс не найден; эти случаи намеренно неразличимы.
На ресурс zabbix://about правила доступа к инструментам не распространяются.