6 months ago
π 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.
Overview
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, oryesto 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 MCP_SETUP.md 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
Server Config
{
"mcpServers": {
"zabbix": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/zabbix-mcp-server",
"python",
"src/zabbix_mcp_server.py"
],
"env": {
"ZABBIX_URL": "https://zabbix.example.com",
"ZABBIX_TOKEN": "<your_api_token>",
"READ_ONLY": "true"
}
}
}
}