本文基于开源项目 mpeirone/zabbix-mcp-server,介绍如何通过 MCP(Model Context Protocol)协议将 Zabbix 监控系统与 AI 助手深度集成,并详细讲解 Zabbix API Token 的获取方式。
一、背景:为什么需要 AI + Zabbix?
Zabbix 是企业级 IT 监控的主流开源平台,拥有强大的数据采集、告警和可视化能力。但传统运维流程中,排查告警、查询主机状态、分析趋势数据往往需要大量的手工操作------登录 Web 界面、翻看图表、比对配置......
zabbix-mcp-server 打破了这道壁垒。它基于 Model Context Protocol(MCP) 协议,将 Zabbix 的 40+ 个 API 能力封装成可被 AI 助手直接调用的工具(Tool)。借助它,你可以对 AI 说一句话:
"帮我找出过去一小时内所有 CPU 告警的主机,并统计触发次数。"
AI 就会自动调用 Zabbix API,返回结构化结果------不再需要你一行一行敲命令。
二、项目概览
| 属性 | 信息 |
|---|---|
| 项目地址 | https://github.com/mpeirone/zabbix-mcp-server |
| 开发语言 | Python 3.10+ |
| 核心依赖 | FastMCP、python-zabbix-utils |
| 传输方式 | STDIO(默认)/ HTTP |
| 许可证 | MIT License |
| 工具数量 | 40+ |
核心功能一览
| 功能模块 | 能做什么 |
|---|---|
| 🏠 主机管理 | 获取、创建、更新、删除主机 |
| 👥 主机组管理 | 主机组的增删改查 |
| 📊 监控项管理 | 监控项配置与查询 |
| ⚠️ 触发器管理 | 触发器的创建与维护 |
| 📋 模板管理 | 模板操作 |
| 🚨 问题/事件 | 获取当前问题、历史事件、确认事件 |
| 📈 数据查询 | 历史数据、趋势数据 |
| 👤 用户管理 | 用户账户管理 |
| 🔗 代理管理 | Zabbix Proxy 操作 |
| 🔧 维护管理 | 维护窗口配置 |
| 📊 其他 | 图形配置、自动发现、配置导入导出 |
三、Zabbix API Token 获取方法(重点)
在使用 zabbix-mcp-server 之前,你需要先获取 Zabbix 的 API Token(或用户名/密码)。下面介绍两种主流方式:
方式一:通过 Web 界面创建 API Token(Zabbix 5.4+,推荐)
Zabbix 5.4 起引入了永久 API Token机制,无需每次通过用户名密码登录换取临时 Token,非常适合 CI/CD 和长期集成场景。
操作步骤(以 Zabbix 6.x / 7.x 为例)
- 以管理员身份登录 Zabbix Web 界面
- 点击左下角 User settings(用户设置)
- 选择 API tokens(API 令牌) 标签页
- 点击右上角 Create API token(创建 API 令牌)
- 填写令牌名称,选择关联用户,可选设置过期时间
- 点击 Add(添加) 完成创建
- ⚠️ 重要: 令牌值只显示一次!请立即复制并妥善保存
路径小结(不同版本):
- Zabbix 6.x:Administration → General → API Tokens(或用户设置页)
- Zabbix 7.x:User settings → API tokens
创建后的 Token 形如:
abc1234def5678...(64位十六进制字符串)
方式二:通过 user.login API 动态获取 Token
这是 Zabbix 5.4 之前的经典方式,适用于脚本临时认证场景。Token 与用户 Session 绑定,Session 失效需重新获取。
使用 curl 获取
curl --request POST \
--url 'http://your-zabbix-server/api_jsonrpc.php' \
--header 'Content-Type: application/json-rpc' \
--data '{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"username": "Admin",
"password": "zabbix"
},
"id": 1
}'
成功响应:
{
"jsonrpc": "2.0",
"result": "0424bd59b807674191e7d77572075f33",
"id": 1
}
result 字段的值即为本次会话的认证 Token。
使用 Shell 脚本自动提取 Token
依赖:需先安装
jq(apt install jq或yum install jq)
使用 Python 获取 Token
方式三:通过 Zabbix API 以编程方式创建永久 Token(Zabbix 5.4+)
如果你需要在脚本中自动化创建永久 Token,可先用用户名密码获取会话 Token,再调用 token.create 和 token.generate:
Token 获取方式对比
| 特性 | user.login(会话 Token) | Web 界面创建(永久 Token) | API 编程创建(永久 Token) |
|---|---|---|---|
| 适用版本 | 所有版本 | Zabbix 5.4+ | Zabbix 5.4+ |
| 有效期 | 与 Session 绑定 | 可设置固定期限 | 可设置固定期限 |
| 使用场景 | 脚本、临时调用 | 长期集成、MCP服务 | 自动化部署 |
| 安全性 | 中(需存储账号密码) | 高(只需保存 Token) | 高(自动化流程) |
| 推荐程度 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
四、安装与配置 zabbix-mcp-server
环境要求
- Python 3.10+
- uv 包管理器
- 可访问的 Zabbix 服务器(已启用 API)
安装步骤
# 1. 克隆项目
git clone https://github.com/mpeirone/zabbix-mcp-server.git
cd zabbix-mcp-server
# 2. 安装依赖
uv sync
# 3. 复制并编辑配置文件
cp config/.env.example .env
配置 .env 文件
# Zabbix 服务器地址(必填)
ZABBIX_URL=https://your-zabbix-server.example.com
# 认证方式一:API Token(推荐,Zabbix 5.4+)
ZABBIX_TOKEN=your_api_token_here
# 认证方式二:用户名/密码(二选一)
# ZABBIX_USER=Admin
# ZABBIX_PASSWORD=your_password
# 可选:只读模式,防止误操作
# READ_ONLY=true
# 可选:SSL 证书验证
# VERIFY_SSL=true
测试安装
uv run python scripts/test_server.py
启动服务器
# 推荐方式
uv run python scripts/start_server.py
# 或直接运行
uv run python src/zabbix_mcp_server.py
五、Docker 快速部署
如果不想配置 Python 环境,可以直接用 Docker:
# 配置环境变量
cp config/.env.example .env
# 编辑 .env 填入你的 Zabbix 配置
# 启动服务
docker compose up -d
docker-compose.yml 示例:
version: '3'
services:
zabbix-mcp:
build: .
env_file: .env
restart: unless-stopped
六、集成到 AI 助手(以 Claude Desktop 为例)
安装完成后,将服务注册到 Claude Desktop 的 MCP 配置中:
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS):
{
"mcpServers": {
"zabbix": {
"command": "uv",
"args": [
"--directory",
"/path/to/zabbix-mcp-server",
"run",
"python",
"src/zabbix_mcp_server.py"
],
"env": {
"ZABBIX_URL": "https://your-zabbix-server.example.com",
"ZABBIX_TOKEN": "your_api_token_here"
}
}
}
}
重启 Claude Desktop 后,你就可以直接用自然语言操作 Zabbix 了!
七、实际使用示例
配置完成后,你可以这样和 AI 对话:
查看当前告警
"帮我列出所有 severity 为 High 的未解决问题"
分析主机性能
"查看服务器 web-server-01 最近 1 小时的 CPU 使用率趋势"
批量操作
"将主机组 'Testing' 中的所有主机禁用监控"
配置管理
"帮我创建一个名为 'nginx-monitor' 的监控项,监控 nginx 进程数"
只读安全模式
在
.env中设置READ_ONLY=true,AI 只能查询不能修改,适合只读看板场景
八、安全注意事项
- 优先使用 API Token 而非用户名密码:Token 泄露可立即撤销,密码泄露影响范围更大
- 为 MCP 集成创建专用只读账户:最小权限原则
- 设置 Token 有效期:避免长期有效的 Token 被滥用
- 生产环境启用 VERIFY_SSL=true:防止中间人攻击
- 保护 .env 文件:不要将其提交到 Git 仓库(已在 .gitignore 中排除)
- 只读模式优先 :如无需写入操作,务必设置
READ_ONLY=true
九、总结
zabbix-mcp-server 是一个将监控运维与 AI 能力融合的创新实践。通过 MCP 协议,繁琐的 Zabbix 操作变成了简单的自然语言对话,极大降低了运维门槛。
关键步骤回顾:
- ✅ 获取 Zabbix API Token(推荐 Web 界面直接创建永久 Token)
- ✅ 配置
.env环境变量 - ✅ 启动 MCP 服务(uv 或 Docker)
- ✅ 集成到 Claude Desktop 等 AI 助手
- ✅ 用自然语言驾驭 Zabbix
参考资料
- mpeirone/zabbix-mcp-server GitHub
- Zabbix 官方 API 文档
- Zabbix 7.0 API 使用手册(书栈网)
- Model Context Protocol 官网
- FastMCP 项目
作者:运维 AI 探索者 | 发布于 2026-03-30