使用说明
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版本中删除)。
许可证
麻省理工学院
