zabbix-mcp-server
The zabbix-mcp-server provides comprehensive Zabbix API functionality through an MCP-compatible interface, enabling management and monitoring of your infrastructure.
Host Management: Create, retrieve, update, and delete hosts with advanced configurations
Host Group Management: Perform CRUD operations on host groups
Item Management: Handle monitoring items and their configurations
Trigger Management: Manage alerts and notification conditions
Template Management: Work with monitoring templates
Problem & Event Management: Retrieve problems, historical events, and acknowledge events
Data Retrieval: Access historical monitoring data and trend statistics
User Management: Manage user accounts
Maintenance Management: Schedule and manage maintenance periods
Configuration Management: Handle discovery rules, item prototypes, and user macros
Import/Export: Transfer configurations in JSON or XML formats
API Information: Retrieve Zabbix API version details
Provides Docker support for containerizing and running the Zabbix MCP server with Docker Compose or as a standalone Docker image.
Enables configuration of the Zabbix MCP server through environment variables stored in .env files for settings like server URLs and authentication credentials.
Integrates with GitHub for issue tracking, discussions, and project management related to the Zabbix MCP server development.
Requires Python 3.10+ as the runtime environment for the Zabbix MCP server implementation.
Displays status badges in the README for license information and Python version requirements.
Click on "Install 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-mcp-servershow me the current problems with high severity"
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 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
Related MCP server: Zabbix MCP Server
The 3 Tools
Tool | Purpose |
| Execute any Zabbix API method |
| Get documentation for any API method |
| 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-mcpOption 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.pyTest Connection
uv run python scripts/test_server.pyOption 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-serverEnvironment Variables
Required
Variable | Description | Example |
| Zabbix server URL |
|
Authentication (choose one)
Variable | Description |
| API token (recommended) |
| Username and password |
Security
Variable | Default | Description |
|
| Set to |
|
| Enable/disable SSL verification |
|
| Comma-separated regex patterns for allowed API methods |
| (empty) | Comma-separated regex patterns for blocked API methods |
|
| Skip Zabbix version compatibility check |
|
| API request timeout in seconds |
Transport
Variable | Default | Description |
|
| Transport type: |
|
| HTTP server host (when using |
|
| HTTP server port (when using |
|
| Stateless HTTP mode |
| - | Must be |
Debug
Variable | Default | Description |
|
| Set to |
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 onlySecurity Features
Read-Only Mode
Set READ_ONLY=true to block all write operations:
export READ_ONLY=trueOnly 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 accessibleCheck 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_BLACKLISTpatternsEnsure your regex patterns match the full method name (e.g.,
host.get)
Debug Mode
export DEBUG=true
uv run python scripts/start_server.pyContributing
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
Available Tools
3 toolszabbix_apiA
Zabbix server: https://zabbix.example.com
Execute Zabbix API method.
This is the main tool for interacting with Zabbix. It requires multiple
iterations to achieve complex goals. Use other tools for guidance.
WORKFLOW:
1. If unsure about method/params: call zabbix_api_docs(method) first
2. If unsure about available methods: call zabbix_api_list() first
3. Execute the API call with this tool
4. If empty results or errors: iterate with different params/filters
5. Continue iterating until goal is achieved
COMMON PATTERNS:
- Finding an object requires 2+ calls (find ID, then get details)
- CPU usage example: Find host by name, get its items, filter CPU item, get history
- Empty results often mean wrong filters - try broader search first
Args:
method: Zabbix API method (format: 'object.action').
Examples: 'host.get', 'item.create', 'trigger.update'
params: Method parameters (optional). For 'get' operations,
specify 'output' to limit fields (default: ['name']).
Returns:
JSON response from Zabbix API.
Examples:
# Simple query
zabbix_api('host.get', {'output': ['hostid', 'name']})
# Multi-step: Find host, then get items
# Step 1: Find host ID
hosts = zabbix_api('host.get', {'filter': {'host': 'my-srv-01'}, 'output': ['hostid']})
# Step 2: Get CPU items for that host
items = zabbix_api('item.get', {'hostids': ['12345'], 'search': {'name': 'CPU'}, 'output': ['itemid', 'name']})
# Step 3: Get history for specific item
history = zabbix_api('history.get', {'itemids': ['67890'], 'output': 'extend', 'history': 0, 'limit': 10})
Note:
- Use zabbix_api_docs() for method documentation
- Use zabbix_api_list() for available methods
- Iterate multiple times - complex queries need 2-5 API calls
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | ||
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description sufficiently discloses that the tool requires multiple iterations, returns JSON, and can perform both read and write operations (as shown in examples). It does not cover rate limits or authentication, but given it is a generic wrapper, the information is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured with sections for workflow, common patterns, and examples. It front-loads the core purpose and is organized logically. While it could be slightly more concise, the detail is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's generic nature and the existence of sibling tools, the description is highly complete: it explains the iterative workflow, provides parameter details, includes real-world examples, references companion tools, and describes the return format. It leaves no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description adds rich semantics: explains method format ('object.action') with examples, describes params as optional with a note on 'output' for get operations, and provides multiple concrete examples illustrating usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool executes Zabbix API methods, with the verb 'Execute' and resource 'Zabbix API method'. It distinguishes itself from sibling tools (zabbix_api_docs and zabbix_api_list) by being the execution tool, and the workflow explicitly mentions using those for guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit workflow steps: call zabbix_api_docs or zabbix_api_list when unsure, then use this tool, and iterate if needed. It also advises broadening searches on empty results and gives common patterns, making it clear when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zabbix_api_docsA
Get Zabbix API method documentation.
Call this BEFORE zabbix_api() if you are unsure about method parameters. Shows required/optional parameters with types and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | Zabbix API method (format: 'object.action'). | |
| version | No | Zabbix version (e.g., '7.0', '6.0'). If omitted, uses server version. | |
| timeout | No | HTTP timeout in seconds (default: 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that the tool shows parameter information but does not explicitly state it is read-only or non-destructive. However, the phrase 'Get documentation' strongly implies a safe query, and the context of sibling tools reinforces this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. First sentence states purpose, second provides usage guidance, third details output. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a documentation retrieval tool. With an output schema present and sibling tools clearly differentiated, the description covers when and what. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 3 parameters. The description adds no new parameter-specific info beyond the schema, but that is acceptable given the schema richness. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets Zabbix API method documentation, using specific verb 'Get' and resource 'Zabbix API method documentation'. It distinguishes from sibling tools by positioning itself as a preparatory call before zabbix_api().
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to call this tool BEFORE zabbix_api() when unsure about parameters. Provides clear context for use and no exclusions needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zabbix_api_listA
Get available Zabbix API objects and methods.
Call this to discover what API methods are available before using zabbix_api(). Returns all objects and methods discovered dynamically from Zabbix API.
| Name | Required | Description | Default |
|---|---|---|---|
| object | No | Specific API object (e.g., 'host', 'item'). If omitted, returns all. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that methods are 'discovered dynamically from Zabbix API', adding behavioral context beyond the schema. No annotations provided, description carries burden well but lacks mention of potential network call or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences are front-loaded with purpose and usage, but third sentence is slightly redundant. Still clear and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simplicity (one optional parameter, output schema exists), description fully covers purpose, usage context, and discovery nature. No gaps for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and description only paraphrases the schema's parameter description ('e.g., 'host', 'item'. If omitted, returns all'). Adds no novel semantic insight beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get available Zabbix API objects and methods' with a specific verb and resource. Distinguishes from siblings zabbix_api and zabbix_api_docs by indicating it lists available methods before use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this to discover what API methods are available before using zabbix_api()', providing direct guidance on when to use and suggesting it as a prerequisite for the sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
43 tool updates
v1.0.1- Removed
apiinfo_version - Removed
configuration_export - Removed
configuration_import - Removed
discoveryrule_get - Removed
event_acknowledge - Removed
event_get - Removed
graph_get - Removed
history_get - Removed
host_create - Removed
host_delete - Removed
host_get - Removed
host_update - Removed
hostgroup_create - Removed
hostgroup_delete - Removed
hostgroup_get - Removed
hostgroup_update - Removed
item_create - Removed
item_delete - Removed
item_get - Removed
item_update - Removed
itemprototype_get - Removed
maintenance_create - Removed
maintenance_delete - Removed
maintenance_get - Removed
maintenance_update - Removed
problem_get - Removed
template_create - Removed
template_delete - Removed
template_get - Removed
template_update - Removed
trend_get - Removed
trigger_create - Removed
trigger_delete - Removed
trigger_get - Removed
trigger_update - Removed
user_create - Removed
user_delete - Removed
user_get - Removed
user_update - Removed
usermacro_get - Added
zabbix_api - Added
zabbix_api_docs - Added
zabbix_api_list
40 tool updates
v1.0.0- First observed
apiinfo_version - First observed
configuration_export - First observed
configuration_import - First observed
discoveryrule_get - First observed
event_acknowledge - First observed
event_get - First observed
graph_get - First observed
history_get - First observed
host_create - First observed
host_delete - First observed
host_get - First observed
host_update - First observed
hostgroup_create - First observed
hostgroup_delete - First observed
hostgroup_get - First observed
hostgroup_update - First observed
item_create - First observed
item_delete - First observed
item_get - First observed
item_update - First observed
itemprototype_get - First observed
maintenance_create - First observed
maintenance_delete - First observed
maintenance_get - First observed
maintenance_update - First observed
problem_get - First observed
template_create - First observed
template_delete - First observed
template_get - First observed
template_update - First observed
trend_get - First observed
trigger_create - First observed
trigger_delete - First observed
trigger_get - First observed
trigger_update - First observed
user_create - First observed
user_delete - First observed
user_get - First observed
user_update - First observed
usermacro_get
TDQS
The three tools have clearly distinct roles: execute API calls, get documentation, and list methods. No overlap in functionality.
All tools follow the consistent 'zabbix_api_<suffix>' pattern (the main tool is 'zabbix_api' as the base).
With 3 tools, the set is minimal but well-scoped for a generic Zabbix API wrapper. Each tool is necessary and sufficient.
The set covers discovery, documentation, and execution of any Zabbix API method. No gaps for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server enabling AI agents to manage Bitrix24 features via standardized protocol
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- 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.190AGPL 3.0
- AlicenseCqualityFmaintenanceComprehensive MCP server for integrating with Zabbix monitoring systems, providing 90+ API tools across 19 categories for monitoring, alerting, and infrastructure management.10015MIT
- FlicenseNot gradedqualityCmaintenanceExposes Zabbix monitoring capabilities as callable tools for AI agents and MCP-compatible clients.-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mpeirone/zabbix-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server