Herramientas y recursos
Descripción general
El server MCP de Zabbix expone la funcionalidad de Zabbix a los clientes MCP como tools y resources.
Los nombres de las tools describen la actividad. Si se establece el parámetro ToolPrefix, el prefijo se añade a cada nombre de tool; las reglas de acceso a las tools coinciden con los nombres simples que se indican a continuación.
Herramientas de lectura
| Herramienta | Método de la API de Zabbix | Argumentos | Ordenado por | Recurso |
|---|---|---|---|---|
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 la interfaz | - |
macro_get |
usermacro.get | hostids o global, macro_names, limit |
macro | - |
problem_get |
problem.get | eventids, groupids, hostids, severities, acknowledged, suppressed, recent, limit |
ID del evento, descendente | - |
maintenance_get |
maintenance.get | maintenanceids, groupids, hostids, limit |
name | - |
history_get |
history.get | itemids, time_from, time_till, type, limit |
clock, descendente | - |
trigger_get |
trigger.get | triggerids, hostids, search, limit |
description | zabbix://trigger/<id> |
Tenga en cuenta lo siguiente:
host_getytemplate_gettambién devuelven los triggers de cada objeto (un conjunto limitado de campos), las etiquetas y los templates vinculados. Los items, las reglas de descubrimiento, las interfaces y las macros se devuelven mediante las herramientas correspondientes.history_getrequiere un intervalo de tiempo no superior a 7 días y cuyo inicio no sea anterior a hace 7 días. El argumentotypedebe ser uno defloat,unsigned,character,text,logojson, y debe coincidir con el tipo de valor de los items; si el tipo es incorrecto, se devuelve un resultado vacío, que no puede distinguirse de un item sin datos. El historial de los items binarios (tipo de valor 5) no se puede recuperar mediante el servidor MCP.- Las herramientas de lectura solicitan una lista fija de campos; nunca se solicitan todos los campos (
output: extend). - Los resultados de las herramientas que tienen un recurso contienen el campo
uri, de modo que un agent puede pasar de una lista a una entidad individual.
Formato de respuesta
Todas las herramientas de lectura devuelven la respuesta en el mismo formato:
{
"results": [ ... ],
"count": 2,
"truncated": true,
"truncated_by": "count",
"limit": 2,
"note": "Se alcanzó el límite de cantidad de resultados ..."
}
La respuesta está limitada por el argumento limit (valor predeterminado: 100, máximo: 1000) y por el tamaño serializado de la respuesta (MaxResponseSize, valor predeterminado: 64K).
La respuesta se detiene cuando se alcanza cualquiera de los límites.
La respuesta se trunca únicamente entre resultados, nunca dentro de un resultado, y una respuesta truncada indica qué límite se alcanzó.
Cada herramienta tiene un orden de clasificación fijo, por lo que una respuesta truncada siempre contiene el principio del conjunto completo de resultados.
No se admite la paginación; para obtener otros resultados, limite la consulta.
Herramientas de problemas
Todas las herramientas de problemas llaman a event.acknowledge con las marcas de acción correspondientes.
El argumento eventids es obligatorio; los ID de evento se pueden obtener con problem_get.
Se puede añadir un mensaje (comentario) con cualquier herramienta de problemas.
El argumento message es opcional, excepto para problem_annotate, donde es obligatorio; si se especifica, el mensaje se registra en la misma llamada a la API de Zabbix.
| Tool | Effect | Additional arguments |
|---|---|---|
problem_acknowledge |
Reconocer el problema. | - |
problem_unacknowledge |
Eliminar el reconocimiento. | - |
problem_close |
Cerrar el problema manualmente (solo para triggers que permiten el cierre manual). | - |
problem_annotate |
Registrar un mensaje. | message (obligatorio) |
problem_change_severity |
Cambiar la gravedad del problema. | severity (0-5) |
problem_suppress |
Suprimir el problema hasta una hora especificada o indefinidamente. | suppress_until |
problem_unsuppress |
Eliminar la supresión. | - |
No se pueden crear ni eliminar problemas; todas las herramientas de problemas actualizan problemas existentes.
Herramientas de mantenimiento
| Herramienta | Método de la API de Zabbix | Argumentos |
|---|---|---|
maintenance_create |
maintenance.create | name, groupids y/o hostids, active_since, active_till, timeperiods, description, tags, tags_evaltype |
maintenance_update |
maintenance.update | maintenanceid y cualquiera de los argumentos anteriores. Los argumentos de tipo lista reemplazan el conjunto completo de valores; una lista vacía borra el conjunto. |
maintenance_delete |
maintenance.delete | maintenanceids |
Cuando se actualiza un período de mantenimiento, los argumentos de tipo lista (como hostids, groupids y timeperiods) reemplazan los valores existentes en lugar de añadirse a ellos.
Por ejemplo, si un período de mantenimiento incluye los hosts A y B, y se llama a maintenance_update con hostids que contiene únicamente el host C, el período de mantenimiento incluirá solo el host C.
maintenance_create es la única operación que no es idempotente, y maintenance_delete es la única operación que no se puede revertir.
Para impedir su uso, deniegue estas herramientas mediante el parámetro DenyTool.
Comportamiento de las herramientas de escritura
Las herramientas de problemas y mantenimiento son herramientas de escritura. Funcionan de la siguiente manera:
- Los argumentos se validan antes de realizar cualquier llamada a la API de Zabbix; si la validación falla, el error indica la restricción que no se cumplió.
- Si el cliente lo admite, el cambio se aplica únicamente después de que el usuario lo apruebe.
- Zabbix realiza el cambio utilizando el token del autor de la llamada. Zabbix comprueba los permisos y registra el cambio en el registro de auditoría asociado al propietario del token.
- Los errores de Zabbix, incluidos los errores de permisos, se devuelven sin modificar como un objeto de error con los campos
code,messageydata. - Las herramientas de escritura devuelven directamente el resultado de Zabbix; los límites de respuesta de las herramientas de lectura no se aplican.
- El servidor MCP nunca vuelve a intentar las llamadas de escritura.
Recursos
Los recursos utilizan el esquema de URI zabbix://<kind>/<id>.
Solo zabbix://about se incluye en la respuesta de resources/list; los ID de las entidades no se pueden enumerar y se obtienen de los resultados de las herramientas.
La respuesta de resources/templates/list muestra los tipos de entidades.
| URI | Contenido |
|---|---|
zabbix://about |
La URL de la API, la URL del frontend, la versión de Zabbix, la identidad a la que se resuelve el token del autor de la llamada y la lista de herramientas expuestas. |
zabbix://host/<hostid> |
El registro del host sin items, triggers, interfaces ni macros. |
zabbix://hostgroup/<groupid> |
El registro del grupo de hosts sin la lista de miembros. |
zabbix://template/<templateid> |
El registro del template sin items, triggers ni reglas de descubrimiento. |
zabbix://templategroup/<groupid> |
El registro del grupo de templates sin la lista de miembros. |
zabbix://item/<itemid> |
La definición del item sin el valor actual. |
zabbix://trigger/<triggerid> |
La definición del trigger sin hosts, dependencias, funciones ni etiquetas. |
Un recurso cuya herramienta correspondiente está denegada no existe.
Tanto una entidad inexistente como una entidad a la que el propietario del token no tiene acceso se notifican como resource not found; estos casos son deliberadamente indistinguibles.
El recurso zabbix://about no se ve afectado por las reglas de acceso a las herramientas.