zabbix-mcp-server
If you are the rightful owner of zabbix-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Zabbix MCP Server is a comprehensive Model Context Protocol server designed for seamless integration with Zabbix using FastMCP and python-zabbix-utils.
Zabbix MCP Server
A comprehensive Model Context Protocol (MCP) server for Zabbix integration using FastMCP and python-zabbix-utils. This server provides complete access to Zabbix API functionality through MCP-compatible tools.
Features
š Host Management
host_get
- Retrieve hosts with advanced filteringhost_create
- Create new hosts with interfaces and templateshost_update
- Update existing host configurationshost_delete
- Remove hosts from monitoring
š„ Host Group Management
hostgroup_get
- Retrieve host groupshostgroup_create
- Create new host groupshostgroup_update
- Modify existing host groupshostgroup_delete
- Remove host groups
š Item Management
item_get
- Retrieve monitoring items with filteringitem_create
- Create new monitoring itemsitem_update
- Update existing itemsitem_delete
- Remove monitoring items
ā ļø Trigger Management
trigger_get
- Retrieve triggers and alertstrigger_create
- Create new triggerstrigger_update
- Modify existing triggerstrigger_delete
- Remove triggers
š Template Management
template_get
- Retrieve monitoring templatestemplate_create
- Create new templatestemplate_update
- Update existing templatestemplate_delete
- Remove templates
šØ Problem & Event Management
problem_get
- Retrieve current problems and issuesevent_get
- Get historical eventsevent_acknowledge
- Acknowledge events and problems
š Data Retrieval
history_get
- Access historical monitoring datatrend_get
- Retrieve trend data and statistics
š¤ User Management
user_get
- Retrieve user accountsuser_create
- Create new usersuser_update
- Update user informationuser_delete
- Remove user accounts
š§ Maintenance Management
maintenance_get
- Retrieve maintenance periodsmaintenance_create
- Schedule maintenance windowsmaintenance_update
- Modify maintenance periodsmaintenance_delete
- Remove maintenance schedules
š Additional Features
graph_get
- Retrieve graph configurationsdiscoveryrule_get
- Get discovery rulesitemprototype_get
- Retrieve item prototypesconfiguration_export
- Export Zabbix configurationsconfiguration_import
- Import configurationsapiinfo_version
- Get API version information
Installation
Prerequisites
- Python 3.10 or higher
- uv package manager
- Access to a Zabbix server with API enabled
Quick Start
-
Clone the repository:
git clone https://github.com/mpeirone/zabbix-mcp-server.git cd zabbix-mcp-server
-
Install dependencies:
uv sync
-
Configure environment variables:
cp config/.env.example .env # Edit .env with your Zabbix server details
-
Test the installation:
uv run python scripts/test_server.py
Configuration
Required Environment Variables
ZABBIX_URL
- Your Zabbix server API endpoint (e.g.,https://zabbix.example.com
)
Authentication (choose one method)
Method 1: API Token (Recommended)
ZABBIX_TOKEN
- Your Zabbix API token
Method 2: Username/Password
ZABBIX_USER
- Your Zabbix usernameZABBIX_PASSWORD
- Your Zabbix password
Optional Configuration
READ_ONLY
- Set totrue
,1
, oryes
to enable read-only mode (only GET operations allowed)
Usage
Running the Server
With startup script (recommended):
uv run python scripts/start_server.py
Direct execution:
uv run python src/zabbix_mcp_server.py
Testing
Run test suite:
uv run python scripts/test_server.py
Read-Only Mode
When READ_ONLY=true
, the server will only expose GET operations (retrieve data) and block all create, update, and delete operations. This is useful for:
- š Monitoring dashboards
- š Read-only integrations
- š Security-conscious environments
- š”ļø Preventing accidental modifications
Example Tool Calls
Get all hosts:
host_get()
Get hosts in specific group:
host_get(groupids=["1"])
Create a new host:
host_create(
host="server-01",
groups=[{"groupid": "1"}],
interfaces=[{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.1.100",
"dns": "",
"port": "10050"
}]
)
Get recent problems:
problem_get(recent=True, limit=10)
Get history data:
history_get(
itemids=["12345"],
time_from=1640995200,
limit=100
)
MCP Integration
This server is designed to work with MCP-compatible clients like Claude Desktop. See for detailed integration instructions.
Docker Support
Using Docker Compose
-
Configure environment:
cp config/.env.example .env # Edit .env with your settings
-
Run with Docker Compose:
docker compose up -d
Building Docker Image
docker build -t zabbix-mcp-server .
Development
Project Structure
zabbix-mcp-server/
āāā src/
ā āāā zabbix_mcp_server.py # Main server implementation
āāā scripts/
ā āāā start_server.py # Startup script with validation
ā āāā test_server.py # Test script
āāā config/
ā āāā .env.example # Environment configuration template
ā āāā mcp.json # MCP client configuration example
āāā pyproject.toml # Python project configuration
āāā requirements.txt # Dependencies
āāā Dockerfile # Docker configuration
āāā docker-compose.yml # Docker Compose setup
āāā README.md # This file
āāā MCP_SETUP.md # MCP integration guide
āāā CONTRIBUTING.md # Contribution guidelines
āāā CHANGELOG.md # Version history
āāā LICENSE # MIT license
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Running Tests
# Test server functionality
uv run python scripts/test_server.py
# Test with Docker
docker-compose exec zabbix-mcp python scripts/test_server.py
Error Handling
The server includes comprehensive error handling:
- ā Authentication errors are clearly reported
- š Read-only mode violations are blocked with descriptive messages
- āļø Invalid parameters are validated
- š Network and API errors are properly formatted
- š Detailed logging for troubleshooting
Security Considerations
- š Use API tokens instead of username/password when possible
- š Enable read-only mode for monitoring-only use cases
- š”ļø Secure your environment variables
- š Use HTTPS for Zabbix server connections
- š Regularly rotate API tokens
- š Store configuration files securely
Troubleshooting
Common Issues
Connection Failed:
- Verify
ZABBIX_URL
is correct and accessible - Check authentication credentials
- Ensure Zabbix API is enabled
Permission Denied:
- Verify user has sufficient Zabbix permissions
- Check if read-only mode is enabled when trying to modify data
Tool Not Found:
- Ensure all dependencies are installed:
uv sync
- Verify Python version compatibility (3.10+)
Debug Mode
Set environment variable for detailed logging:
export DEBUG=1
uv run python scripts/start_server.py
Dependencies
- FastMCP - MCP server framework
- python-zabbix-utils - Official Zabbix Python library
License
This project is licensed under the MIT License - see the file for details.
Acknowledgments
- Zabbix for the monitoring platform
- Model Context Protocol for the integration standard
- FastMCP for the server framework
Support
- š
- š Issue Tracker
- š¬ Discussions
Made with ā¤ļø for the Zabbix and MCP communities