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_get et template_get renvoient é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_get né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’argument type doit être l’un des suivants : float, unsigned, character, text, log ou json, 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, message et data.
  • 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.