zabbix-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zabbix-mcpShow all active problems with severity High or above"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zabbix-mcp
A Model Context Protocol (MCP) server that exposes Zabbix monitoring capabilities as callable tools for AI agents and MCP-compatible clients.
Features
30 tools across 11 categories (hosts, problems/triggers, items/history, maintenance, host groups, events, graphs, templates, inventory, actions, users, analytics, operational)
Transports: stdio (default) and Streamable HTTP — selectable via env var or CLI flag; the deprecated HTTP+SSE transport is still served for backwards compatibility
Protocol: MCP 2024-11-05 (negotiates up to 2025-06-18 over Streamable HTTP)
Auth: API token (Zabbix 5.4+) or user/password, loaded from
.envBundled interactive CLI agent using NVIDIA, OpenRouter or Groq as LLM provider
Related MCP server: mcp-zabbix
Requirements
Python 3.11+
A Zabbix instance reachable from the server process (5.4+ recommended for token auth)
An API key for at least one LLM provider (if using the agent)
starletteanduvicorn(only required for the HTTP transports — included inrequirements.txt)
Installation
git clone <repo-url> /opt/zabbix-mcp
cd /opt/zabbix-mcp
# Option A — system Python (no venv)
pip install -r requirements.txt
# Option B — virtual environment (recommended)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Option C — Docker
docker build -t zabbix-mcp:latest .Configuration
Copy .env.example to .env and fill in your values:
cp .env.example .envZabbix connection
Variable | Required | Description |
| yes | Full base URL, e.g. |
| one of† | API token — create at Administration → Users → API tokens |
| one of† | Username for user/password auth |
| one of† | Password for user/password auth |
| no |
|
† Token auth takes priority when both are present.
LLM provider (agent only)
Variable | Description |
| Active provider: |
| NVIDIA Build API key — build.nvidia.com |
| Model override (default: |
| OpenRouter API key |
| Model override (default: |
| Groq API key |
| Model override (default: |
Running the server
stdio transport (default)
The server reads JSON-RPC 2.0 from stdin and writes to stdout. It is normally spawned by an MCP client (Claude Desktop, an agent, etc.).
python server.py
# or explicitly
python server.py --transport stdio
# or with venv
.venv/bin/python server.py
# or with Docker
docker run --rm -i --env-file .env zabbix-mcp:latestStreamable HTTP transport (recommended for remote clients)
The server starts a Starlette/uvicorn HTTP server exposing a single MCP
endpoint at /mcp: clients POST their requests there, open the
server-to-client stream with GET, and end the session with DELETE.
# local
python server.py --transport http --host 0.0.0.0 --port 8000
# or via env vars
MCP_TRANSPORT=http MCP_PORT=8000 python server.py
# or with Docker
docker run --rm --env-file .env -e MCP_TRANSPORT=http -p 8000:8000 zabbix-mcp:latest
# or via Make
make run-http
make run-http PORT=9000Client URL: http://<host>:<port>/mcp
Health check: GET http://<host>:<port>/health
--transport streamable-http is accepted as a synonym of --transport http.
HTTP+SSE transport (deprecated)
The HTTP+SSE transport of MCP 2024-11-05 (GET /sse + POST /messages/) was
superseded by Streamable HTTP in the 2025-03-26 revision of the specification.
It is kept for backwards compatibility: whenever the HTTP server runs, the
legacy endpoints are served alongside /mcp, so old and new clients can both
talk to the same process.
# Starts exactly the same server as --transport http, printing a deprecation
# warning. Legacy clients keep using http://<host>:<port>/sse
python server.py --transport sse --port 8000To serve only the modern endpoint, disable the legacy routes:
python server.py --transport http --no-legacy-sse
# or: MCP_LEGACY_SSE=falseTransport CLI flags (HTTP mode):
Flag | Default | Description |
|
| Path of the Streamable HTTP endpoint |
| off | Reply to POSTs with plain JSON instead of an SSE stream |
| off | Fresh transport per request, no session tracking (good behind a load balancer) |
| off | Do not expose |
Transport environment variables:
Variable | Default | Description |
|
|
|
|
| Bind address (HTTP mode only) |
|
| TCP port (HTTP mode only) |
|
| Streamable HTTP endpoint path |
|
| JSON instead of SSE replies |
|
| Stateless Streamable HTTP |
|
| Also serve the deprecated |
See DOCKER.md for full Docker usage and Claude Desktop integration.
Running the agent
python agent.pyZabbix AI Agent | provider=nvidia model=meta/llama-3.3-70b-instruct
Type your request, or 'exit' / Ctrl-C to quit.
You: Show me all active problems with severity High or above
[tool] get_problems({"min_severity": 4})
...Available tools
Hosts
Tool | Description |
| List hosts with status, availability and primary IP. Optional filters: |
| Full detail for one host: interfaces, groups, templates, macros. Accepts |
| Substring search across host name and visible name. Required: |
Triggers / Problems
Tool | Description |
| Active (unresolved) problems, sorted by severity desc. Optional filters: |
| Triggers for a host, sorted by severity. Required: |
Items / History
Tool | Description |
| Monitoring items for a host with last collected value and unit. Required: |
| Recent data points for one item. Required: |
Maintenance
Tool | Description |
| List all maintenance windows with scope and active period. |
| Create a one-time maintenance window. Required: |
| Delete a maintenance window by |
Host Groups
Tool | Description |
| List all host groups with IDs and names. Optional: |
Events
Tool | Description |
| Historical events (problems + recoveries) for a time window, including hostname. Optional: |
| Acknowledge one or more events by |
| Ranked list of hosts by problem count in a time window. Optional: |
Graphs
Tool | Description |
| Graphs defined for a host. Required: |
| Items (metrics) that make up a graph. Required: |
Templates
Tool | Description |
| List templates. Optional: |
Inventory
Tool | Description |
| Full inventory record for a host (OS, hardware, location, serial numbers). Required: |
Actions
Tool | Description |
| List alerting actions with status and event source. Optional: |
Analytics
Tool | Description |
| Triggers with most state changes (PROBLEM↔OK) in a window — identifies noisy thresholds. Optional: |
| Uptime % per host computed from PROBLEM events and their recoveries. Optional: |
| Hourly aggregated trend data (min/avg/max) for an item over days/months. Required: |
| Per-trigger stats: count, total/avg/max downtime. Optional: |
Operational
Tool | Description |
| Enable monitoring for a host. Required: |
| Disable monitoring for a host. Required: |
| Update an existing maintenance window (name, time, duration, collect_data). Required: |
| Add a host to a host group. Required: |
| Remove a host from a host group. Required: |
Users / Groups
Tool | Description |
| List users with username, display name and group membership. Optional: |
| List user groups with GUI access level and status. Optional: |
Severity codes
Code | Label |
0 | Not classified |
1 | Information |
2 | Warning |
3 | Average |
4 | High |
5 | Disaster |
Project structure
zabbix-mcp/
├── server.py — MCP server (30 tools, stdio + Streamable HTTP + legacy SSE)
├── util.py — Zabbix code → human-readable string converters
├── agent.py — Interactive CLI agent
├── llm.py — LLM provider registry and agentic loop
├── requirements.txt — Python dependencies
├── Dockerfile — Container image for the MCP server
├── DOCKER.md — Docker usage and Claude Desktop integration guide
├── .env.example — Environment variable template
└── .gitignoreHow the agentic loop works
User question
│
▼
LLM (Reason) ──── tool_calls? ──► MCP server (Act)
▲ │
│ │ result
└─────────── tool message ◄───────────┘
(Observe)
│
finish_reason = "stop"
│
▼
Final answerThe loop runs up to 20 iterations by default and handles unknown tools, JSON decode errors, and asyncio timeouts gracefully.
Integrating with Claude Desktop
stdio mode (subprocess — no port needed)
{
"mcpServers": {
"zabbix": {
"command": "docker",
"args": ["run", "--rm", "-i", "--env-file", "/path/to/.env", "zabbix-mcp:latest"]
}
}
}Without Docker:
{
"mcpServers": {
"zabbix": {
"command": "/opt/zabbix-mcp/.venv/bin/python",
"args": ["/opt/zabbix-mcp/server.py"]
}
}
}Streamable HTTP mode (remote/persistent container)
First start the container:
docker run -d --name zabbix-mcp \
--env-file /path/to/.env \
-e MCP_TRANSPORT=http \
-p 8000:8000 \
zabbix-mcp:latestThen add to claude_desktop_config.json:
{
"mcpServers": {
"zabbix": {
"url": "http://localhost:8000/mcp"
}
}
}Or register it with the Claude Code CLI:
claude mcp add --transport http zabbix http://localhost:8000/mcpLegacy SSE mode (deprecated clients only)
The same container also answers on the old endpoint, so a client that cannot speak Streamable HTTP yet keeps working unchanged:
{
"mcpServers": {
"zabbix": {
"url": "http://localhost:8000/sse"
}
}
}Prefer /mcp for anything new — /sse will be removed once clients have
caught up.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseAqualityCmaintenance🔌 Complete MCP server for Zabbix integration - Connect AI assistants to Zabbix monitoring with 40+ tools for hosts, items, triggers, templates, problems, and more. Features read-only mode and comprehensive API coverage.3255GPL 3.0
- AlicenseCqualityCmaintenanceExposes the complete Zabbix API functionality through the Model Context Protocol, mapping API methods to tools for managing hosts, triggers, and monitoring data. It enables seamless integration and control of Zabbix monitoring environments via natural language interfaces.100MIT
- AlicenseNot gradedqualityAmaintenanceExposes the complete Zabbix API to MCP-compatible AI assistants, enabling natural language management of hosts, problems, and templates across multiple instances. It provides 220 tools for comprehensive monitoring and configuration with support for read-only modes and secure authentication.206AGPL 3.0
- FlicenseNot gradedqualityBmaintenanceRead-only MCP server that provides Zabbix monitoring data to AI agents, enabling investigation of hosts, metrics, incidents, and triggers with deterministic aggregation.-