Zabbix MCP服务器

一个完整的MCP服务器,用于与Zabbix基础设施进行自然语言交互,支持Zabbix API的所有功能。

  • by Alysko
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Alysko/zabbix-mcp

使用说明

zabbix mcp

A完整 主控程序 服务器 Zabbix 7.4,使任何兼容MCP的AI助手都可以使用自然语言与您的Zabbix基础设施进行交互。

特性

  • 86工具 覆盖整个Zabbix API表面
  • 带有显式注释的只读、写入和破坏性操作
  • 主机、主机组、项目、触发器、LLD规则、图形、仪表板、模板、维护、宏等
  • 3个用于常见多步骤操作的工作流工具
  • 网络故障时采用指数回退的自动重试
  • 凭据仅来自环境变量,从不在工具参数或日志中
  • SSL验证可配置(用于自签名证书)
  • 只读模式,将服务器限制为仅监视操作
  • 用于远程或多客户端部署的HTTP和SSE传输

需求

安装

git clone https://github.com/Alysko/zabbix-mcp.git
cd zabbix-mcp
uv sync

配置

MCP客户端(stdio)

将以下内容添加到MCP客户端的配置文件中:

{
  "mcpServers": {
    "zabbix": {
      "command": "uv",
      "args": [
        "--directory", "/absolute/path/to/zabbix-mcp",
        "run", "zabbix-mcp"
      ],
      "env": {
        "ZABBIX_URL": "https://your-zabbix-instance/zabbix",
        "ZABBIX_API_TOKEN": "<your-api-token>"
      }
    }
  }
}

保存配置后重新启动MCP客户端。

HTTP传输

通过HTTP公开服务器(对远程客户端、Cursor、Copilot、Gemini等很有用):

ZABBIX_URL=https://your-zabbix-instance/zabbix \
ZABBIX_API_TOKEN=<your-api-token> \
MCP_TRANSPORT=http \
MCP_PORT=8000 \
uv run zabbix-mcp

服务器正在监听 http://127.0.0.1:8000/mcp 默认情况下。

要绑定到所有接口(例如Docker或远程主机),请设置 MCP_HOST=0.0.0.0在这种情况下,将服务器置于具有身份验证的反向代理之后。

对于SSE传输(传统),请使用 MCP_TRANSPORT=sse。则端点为 /sse.

HTTP客户端配置示例:

{
  "mcpServers": {
    "zabbix": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

只读模式

集 ZABBIX_READ_ONLY=true 仅使用只读工具启动服务器。所有写入和删除工具在启动时都会被删除。这对于仅监视不希望进行写访问的部署非常有用。

{
  "mcpServers": {
    "zabbix": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/zabbix-mcp", "run", "zabbix-mcp"],
      "env": {
        "ZABBIX_URL": "https://your-zabbix-instance/zabbix",
        "ZABBIX_API_TOKEN": "<your-api-token>",
        "ZABBIX_READ_ONLY": "true"
      }
    }
  }
}

在只读模式下,61个写/删除工具被删除,留下25个只读工具。

环境变量

Zabbix连接

变量 必填 描述
ZABBIX_URL yes Zabbix前端URL(例如。 https://zabbix.example.com/zabbix)
ZABBIX_API_TOKEN 是* API令牌(首选)
ZABBIX_USER 是* 用户名(替代令牌)
ZABBIX_PASSWORD 是* 密码(替代令牌)
ZABBIX_VERIFY_SSL 否 设置为 false 禁用SSL验证。违约: true
ZABBIX_TIMEOUT no API请求超时(以秒为单位)。违约: 30
ZABBIX_READ_ONLY 否 设置为 true 仅公开只读工具。违约: false

*要么 ZABBIX_API_TOKEN 或 ZABBIX_USER + ZABBIX_PASSWORD 是必需的。

运输

变量 默认值 描述
MCP_TRANSPORT stdio 运输方式: stdio, http,或 sse
MCP_HOST 127.0.0.1 绑定http/sse传输地址
MCP_PORT 8000 http/sse传输的侦听端口

使用示例

配置后,自然地与Zabbix基础架构交互:

“哪些主机当前处于问题状态?”

“今晚10点至11点为web-01创建一个维护窗口”

“显示Linux服务器组上严重性>=高的所有触发器”

“列出主机数据库主数据库上键包含‘cpu’的项”

“确认主机应用服务器上的所有活动问题,并显示消息‘正在调查’”

工具覆盖范围

域 工具
主持人和团体 zabbix_host_*, zabbix_hostgroup_*, zabbix_host_interface_*
项目 zabbix_item_*
触发器 zabbix_trigger_*
LLD zabbix_lld_rule_*, zabbix_lld_*_prototype_*
图表 zabbix_graph_*, zabbix_graph_item_get
仪表板 zabbix_dashboard_*, zabbix_template_dashboard_*
价值图 zabbix_valuemap_*
监测 zabbix_problem_get, zabbix_event_*, zabbix_history_get, zabbix_trend_get, zabbix_alert_get
模板 zabbix_template_*, zabbix_templategroup_*
维护保养 zabbix_maintenance_*
宏 zabbix_usermacro_*
报告 zabbix_report_*
工作流程 zabbix_host_problems_summary, zabbix_lld_scaffold, zabbix_template_link

所有工具均遵循 zabbix_<resource>_<action> 命名约定和声明注释(readOnlyHint, destructiveHint, idempotentHint)因此,客户可以就安全问题做出明智的决定。

运行测试

uv sync
uv run pytest --cov=zabbix_mcp -q

新闻报道: 96% --1045次测试。

建筑

zabbix_mcp/
├── app.py              # MCP application instance (shared across all modules)
├── server.py           # Entry point, transport selection, read-only mode
├── client.py           # Zabbix API wrapper (auth, retry, pagination)
├── auth.py             # Credential and transport config from env vars
├── errors.py           # Typed errors with actionable messages
└── tools/
    ├── _annotations.py # Shared annotation dicts (READ_ONLY, WRITE, DELETE)
    ├── host.py
    ├── hostgroup.py
    ├── item.py
    ├── trigger.py
    ├── lld.py
    ├── graph.py
    ├── dashboard.py
    ├── monitoring.py
    ├── template.py
    ├── maintenance.py
    ├── macro.py
    └── workflow.py

安全

  • 凭据仅从环境变量中读取
  • 日志或错误消息中从未出现凭据值
  • 破坏性工具(_delete)注释如下 destructiveHint=True
  • 无通用直通(zabbix_raw_call)--所有工具都与端点对齐
  • 默认情况下启用SSL验证
  • HTTP传输在绑定到时启动时发出警告 0.0.0.0

Zabbix API兼容性

目标 Zabbix 7.4.通过以下方式使用JSON-RPC 2.0 zabbix-utils.

已弃用 host.massupdate, host.massadd,以及 host.massremove 方法是故意不实现的(计划在未来的Zabbix版本中删除)。

许可证

麻省理工学院