zabbix-mcp-server
🔌 Complete MCP server for Zabbix integration — Connect AI assistants to Zabbix monitoring with a single unified tool covering 100% of Zabbix APIs. Includes read-only mode and documentation tools for seamless exploration of hosts, items, triggers, templates, problems, and more.
Links
README
From the repo.
Zabbix MCP Server
A lightweight Model Context Protocol (MCP) server that provides complete access to the entire Zabbix API through just 3 tools. Compatible with Zabbix 6.0+.
Why Zabbix MCP Server?
- Complete API Coverage - Access every Zabbix API method (100+) through a unified interface
- Lightweight Context - Only 3 tools instead of 50+ individual tools, keeping LLM context minimal
- Always Up-to-Date - Works with current and future Zabbix API methods automatically
- Zabbix 6.0+ Compatible - Supports Zabbix 6.0, 6.4, 7.0, and newer versions
The 3 Tools
| Tool | Purpose |
|---|---|
zabbix_api | Execute any Zabbix API method |
zabbix_api_docs | Get documentation for any API method |
zabbix_api_list | Discover available API objects and methods |
Quick Start
Option 1: Claude Code Integration
Add to your Claude Code MCP configuration:
claude mcp add zabbix \
--env ZABBIX_URL=https://your-zabbix-server.com \
--env ZABBIX_TOKEN=your_api_token \
-- uvx --from git+https://github.com/mpeirone/zabbix-mcp-server@main zabbix-mcp
Option 2: Run with uv
git clone https://github.com/mpeirone/zabbix-mcp-server.git
cd zabbix-mcp-server
uv sync
# Configure environment
export ZABBIX_URL=https://your-zabbix-server.com
export ZABBIX_TOKEN=your_api_token
# Start the server
uv run python scripts/start_server.py
Test Connection
uv run python scripts/test_server.py
Option 3: Run with docker
git clone https://github.com/mpeirone/zabbix-mcp-server.git
cd zabbix-mcp-server
# Using docker-compose
docker compose up -d
# Or build manually
docker build -t zabbix-mcp-server .
docker run -e ZABBIX_URL=https://zabbix.example.com -e ZABBIX_TOKEN=your_token zabbix-mcp-server
Environment Variables
Required
| Variable | Description | Example |
|---|---|---|
ZABBIX_URL | Zabbix server URL | https://your-zabbix-server.com |
Authentication (choose one)
| Variable | Description |
|---|---|
ZABBIX_TOKEN | API token (recommended) |
ZABBIX_USER + ZABBIX_PASSWORD | Username and password |
Security
| Variable | Default | Description |
|---|---|---|
READ_ONLY | false | Set to true to allow only read operations |
VERIFY_SSL | true | Enable/disable SSL verification |
ZABBIX_API_WHITELIST | .* | Comma-separated regex patterns for allowed API methods |
ZABBIX_API_BLACKLIST | (empty) | Comma-separated regex patterns for blocked API methods |
ZABBIX_SKIP_VERSION_CHECK | false | Skip Zabbix version compatibility check |
ZABBIX_API_TIMEOUT | 30 | API request timeout in seconds |
Transport
| Variable | Default | Description |
|---|---|---|
ZABBIX_MCP_TRANSPORT | stdio | Transport type: stdio or streamable-http |
ZABBIX_MCP_HOST | 127.0.0.1 | HTTP server host (when using streamable-http) |
ZABBIX_MCP_PORT | 8000 | HTTP server port (when using streamable-http) |
ZABBIX_MCP_STATELESS_HTTP | false | Stateless HTTP mode |
AUTH_TYPE | - | Must be no-auth for HTTP transport (when using streamable-http) |
Debug
| Variable | Default | Description |
|---|---|---|
DEBUG | false | Set to true for verbose logging |
Usage Examples
Get Hosts
zabbix_api(method='host.get', params={'output': ['hostid', 'name']})
Get Problems
zabbix_api(method='problem.get', params={'output': 'extend', 'recent': True})
Create Host
zabbix_api(method='host.create', params={
'host': 'server-01',
'groups': [{'groupid': '1'}],
'interfaces': [{'type': 1, 'main': 1, 'useip': 1, 'ip': '192.168.1.100', 'port': '10050'}]
})
Get Method Documentation
zabbix_api_docs(method='host.create')
List Available Methods
zabbix_api_list() # All objects and methods
zabbix_api_list(object='host') # Host methods only
Security Features
Read-Only Mode
Set READ_ONLY=true to block all write operations:
export READ_ONLY=true
Only get, version, check, and export operations will be allowed.
API Method Filtering
Control which API methods can be called using whitelist/blacklist patterns:
# Allow only host.* and item.get methods
export ZABBIX_API_WHITELIST="host\..*,item\.get"
# Block all delete and create operations
export ZABBIX_API_BLACKLIST=".*\.delete,.*\.create"
Both support comma-separated regex patterns. Blacklist is checked first.
MCP Client Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"zabbix": {
"command": "uvx",
"args": ["--from", "git+https://github.com/mpeirone/zabbix-mcp-server@main", "zabbix-mcp"],
"env": {
"ZABBIX_URL": "https://zabbix.example.com",
"ZABBIX_TOKEN": "your_api_token"
}
}
}
}
Troubleshooting
Connection Issues
- Verify
ZABBIX_URLis accessible - Check authentication credentials
- Ensure Zabbix API is enabled
Permission Errors
- Verify Zabbix user permissions
- Check if
READ_ONLYmode is enabled
Method Blocked
If you see "Method is not in whitelist" or "Method is blacklisted":
- Review
ZABBIX_API_WHITELISTandZABBIX_API_BLACKLISTpatterns - Ensure your regex patterns match the full method name (e.g.,
host.get)
Debug Mode
export DEBUG=true
uv run python scripts/start_server.py
Contributing
See CONTRIBUTING.md for development guidelines.
License
GPLv3 License - see LICENSE for details.
Acknowledgments
- Zabbix - Monitoring platform
- Model Context Protocol - Integration standard
- FastMCP - MCP framework
- python-zabbix-utils - Official Zabbix Python library
Collected info
- ★ 255 stars
- ⎇ 78 forks
- Language: Python
- Source updated: 9/18/2026
Config for your environment
Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.
Tool
OS
Config file: ~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server": {
"url": "{MCP_ENDPOINT_URL}"
}
}
}Paste into mcpServers in the config file. Restart Cursor after saving.
If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.