Outils et ressources
Vue d’ensemble
Le serveur MCP Zabbix expose les fonctionnalités de Zabbix aux clients MCP sous forme d’outils et de ressources.
Les noms des outils décrivent l’activité. Si le paramètre ToolPrefix est défini, le préfixe est ajouté à chaque nom d’outil ; les règles d’accès aux outils correspondent aux noms simples répertoriés ci-dessous.
Outils de lecture
| Outil | Méthode de l’API Zabbix | Arguments | Trié par | Ressource |
|---|---|---|---|---|
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 |
ID de l’interface | - |
macro_get |
usermacro.get | hostids ou global, macro_names, limit |
macro | - |
problem_get |
problem.get | eventids, groupids, hostids, severities, acknowledged, suppressed, recent, limit |
ID d’événement, décroissant | - |
maintenance_get |
maintenance.get | maintenanceids, groupids, hostids, limit |
name | - |
history_get |
history.get | itemids, time_from, time_till, type, limit |
clock, décroissant | - |
trigger_get |
trigger.get | triggerids, hostids, search, limit |
description | zabbix://trigger/<id> |
Notez que :
host_getettemplate_getrenvoient également les déclencheurs de chaque objet (un ensemble limité de champs), les étiquettes et les modèles liés. Les éléments, les règles de découverte, les interfaces et les macros sont renvoyés par les outils correspondants.history_getnécessite une plage temporelle ne dépassant pas 7 jours et ne commençant pas plus tôt qu’il y a 7 jours. L’argumenttypedoit être l’un des suivants :float,unsigned,character,text,logoujson, et doit correspondre au type de valeur des éléments ; si le type est incorrect, un résultat vide est renvoyé, ce qui ne peut pas être distingué d’un élément sans données. L’historique des éléments binaires (type de valeur 5) ne peut pas être récupéré via le serveur MCP.- Les outils de lecture demandent une liste fixe de champs ; tous les champs (
output: extend) ne sont jamais demandés. - Les résultats des outils qui disposent d’une ressource contiennent le champ
uri, afin qu’un agent puisse passer d’une liste à une entité unique.
Format de la réponse
Tous les outils de lecture renvoient la réponse au même format :
{
"results": [ ... ],
"count": 2,
"truncated": true,
"truncated_by": "count",
"limit": 2,
"note": "The result count limit was reached ..."
}
Une réponse est limitée par l'argument limit (valeur par défaut : 100, maximum : 1000) et par la taille sérialisée de la réponse (MaxResponseSize, valeur par défaut : 64K).
La réponse s'arrête dès que l'une de ces limites est atteinte.
La réponse est tronquée uniquement entre les résultats, jamais au sein d'un résultat, et une réponse tronquée indique quelle limite a été atteinte.
Chaque outil utilise un ordre de tri fixe ; une réponse tronquée correspond donc toujours au début de l'ensemble complet des résultats.
La pagination n'est pas prise en charge ; pour obtenir d'autres résultats, affinez la requête.
Outils de problème
Tous les outils de problème appellent event.acknowledge avec les indicateurs d'action correspondants.
L'argument eventids est obligatoire ; les ID d'événements peuvent être récupérés avec problem_get.
Un message (commentaire) peut être ajouté avec n'importe quel outil de problème.
L'argument message est facultatif, sauf pour problem_annotate, où il est obligatoire ; s'il est spécifié, le message est enregistré dans le même appel de l'API Zabbix.
| Tool | Effect | Additional arguments |
|---|---|---|
problem_acknowledge |
Accuser réception du problème. | - |
problem_unacknowledge |
Supprimer l'accusé de réception. | - |
problem_close |
Fermer manuellement le problème (uniquement pour les déclencheurs qui autorisent la fermeture manuelle). | - |
problem_annotate |
Enregistrer un message. | message (obligatoire) |
problem_change_severity |
Modifier la gravité du problème. | severity (0-5) |
problem_suppress |
Supprimer le problème jusqu'à une heure spécifiée ou indéfiniment. | suppress_until |
problem_unsuppress |
Supprimer la suppression. | - |
Les problèmes ne peuvent pas être créés ou supprimés ; tous les outils de problème mettent à jour les problèmes existants.
Outils de maintenance
| Outil | Méthode de l’API Zabbix | Arguments |
|---|---|---|
maintenance_create |
maintenance.create | name, groupids et/ou hostids, active_since, active_till, timeperiods, description, tags, tags_evaltype |
maintenance_update |
maintenance.update | maintenanceid et n’importe lequel des arguments ci-dessus. Les arguments de type liste remplacent l’ensemble des valeurs ; une liste vide efface l’ensemble. |
maintenance_delete |
maintenance.delete | maintenanceids |
Lorsqu’une période de maintenance est mise à jour, les arguments de type liste (tels que hostids, groupids et timeperiods) remplacent les valeurs existantes au lieu de leur ajouter de nouvelles valeurs.
Par exemple, si une période de maintenance couvre les hôtes A et B et que maintenance_update est appelé avec hostids contenant uniquement l’hôte C, la période de maintenance couvrira uniquement l’hôte C.
maintenance_create est la seule opération qui n’est pas idempotente, et maintenance_delete est la seule opération qui ne peut pas être annulée.
Pour empêcher leur utilisation, refusez ces outils à l’aide du paramètre DenyTool.
Comportement des outils d’écriture
Les outils de problème et de maintenance sont des outils d’écriture. Ils fonctionnent comme suit :
- Les arguments sont validés avant tout appel à l’API Zabbix ; si la validation échoue, l’erreur indique la contrainte qui n’a pas été respectée.
- Si le client le prend en charge, la modification est appliquée uniquement après avoir été approuvée par l’utilisateur.
- La modification est effectuée par Zabbix à l’aide du token de l’appelant. Zabbix vérifie les autorisations et consigne la modification dans le journal d’audit en l’associant au propriétaire du token.
- Les erreurs Zabbix, y compris les erreurs d’autorisation, sont renvoyées sans modification sous forme d’objet d’erreur avec les champs
code,messageetdata. - Les outils d’écriture renvoient directement le résultat Zabbix ; les limites de réponse des outils de lecture ne s’appliquent pas.
- Les appels d’écriture ne sont jamais réessayés par le serveur MCP.
Ressources
Les ressources utilisent le schéma d’URI zabbix://<kind>/<id>.
Seule la ressource zabbix://about est incluse dans la réponse resources/list ; les ID d’entités ne peuvent pas être énumérés et sont obtenus à partir des résultats des outils.
La réponse resources/templates/list répertorie les types d’entités.
| URI | Contenu |
|---|---|
zabbix://about |
L’URL de l’API, l’URL de l’interface, la version de Zabbix, l’identité à laquelle correspond le token de l’appelant et la liste des outils exposés. |
zabbix://host/<hostid> |
L’enregistrement du hôte sans les éléments, les déclencheurs, les interfaces et les macros. |
zabbix://hostgroup/<groupid> |
L’enregistrement du groupe de hôtes sans la liste des membres. |
zabbix://template/<templateid> |
L’enregistrement du modèle sans les éléments, les déclencheurs et les règles de découverte. |
zabbix://templategroup/<groupid> |
L’enregistrement du groupe de modèles sans la liste des membres. |
zabbix://item/<itemid> |
La définition de l’élément sans sa valeur actuelle. |
zabbix://trigger/<triggerid> |
La définition du déclencheur sans les hôtes, les dépendances, les fonctions et les tags. |
Une ressource dont l’outil correspondant est refusé n’existe pas.
Une entité inexistante et une entité à laquelle le propriétaire du token n’a pas accès sont toutes deux signalées comme resource not found ; ces cas sont volontairement impossibles à distinguer.
La ressource zabbix://about n’est pas affectée par les règles d’accès aux outils.