Un servidor MCP (Model Context Protocol) para automatización de dashboards de Zabbix con monitoreo completo de Proxmox.
✅ Dashboard Proxmox Completamente Funcional
✅ 6 Widgets Operativos
✅ 384 Items Monitoreados
✅ Sin Errores de Permisos
✅ Autenticación Moderna (Zabbix 7.4+)
- Servidor MCP: Funcional con herramientas especializadas
- Herramientas Proxmox: 4 nuevas herramientas integradas
- Modo: Read-only para seguridad
- Estado: Ejecutándose correctamente
crear-dashboard-stdlib.py
- Script principal para crear dashboard inicialcrear-dashboard-dual-proxmox.py
- Script para dashboards dualesmejorar-dashboard.py
- Script para mejorar dashboard existenteagregar-widgets-proxmox.py
- Script para agregar widgets completosauto-configurar-svg-widgets.py
- ⭐ NUEVO: Auto-configurador de widgets SVGtest-mcp-proxmox.py
- Script de prueba para funcionalidades MCP
DASHBOARD-PROXMOX-COMPLETO.md
- Guía completa de implementaciónGUIA-AUTOMATIZACION-DASHBOARDS.md
- Guía técnica de automatizaciónLOGICA-CONFIGURACION-SVG-WIDGETS.md
- ⭐ NUEVO: Lógica para resolver errores SVGWIDGET-CONFIGURATION-GUIDE.md
- Guía de configuración de widgets
Servidor Zabbix: 137.184.54.73
Versión: Zabbix 7.4.1
API: http://137.184.54.73/api_jsonrpc.php
Usuario: Admin
Contraseña: zabbix
- 📋 Problemas del Sistema - Alertas activas
- 🔌 Estado de API - Monitoreo del servicio
- 🏢 Estado del Cluster - Información del cluster
- 📊 Información del Sistema - Estadísticas generales
- 📈 Gráfico de CPU - Uso en tiempo real
- 💾 Gráfico de Memoria - Uso en tiempo real
🌐 URL: http://137.184.54.73
📊 Ruta: Monitoring → Dashboards → Proxmox Monitoring
python3 crear-dashboard-stdlib.py
python3 mejorar-dashboard.py
python3 agregar-widgets-proxmox.py
# Resolver automáticamente errores de configuración SVG
python3 auto-configurar-svg-widgets.py http://localhost/zabbix Admin zabbix 404
Errores resueltos:
- ❌
"Invalid parameter 'Data set1/hosts': cannot be empty"
- ❌
"Invalid parameter 'Data set1/items': cannot be empty"
- ✅ Configuración automática de host patterns e item patterns
Total: 384 items
├── CPU: 34 items
├── Memoria: 60 items
├── Disco: 146 items
├── API: 1 item
├── Cluster: 3 items
├── LXC: 115 items
└── VMs: 25 items
- ✅ Resuelto: Error "No permissions to referred object"
- ✅ Implementado: Autenticación moderna con
Authorization: Bearer
- ✅ Validado: Verificación de items antes de crear widgets
- ✅ Zabbix 7.4+: Usar
Authorization: Bearer
header - ✅ Fallback: Soporte para método legacy si es necesario
- ✅ Seguridad: Logout automático al finalizar
El dashboard de Proxmox Monitoring está 100% operativo con:
- Monitoreo en tiempo real de CPU y memoria
- Estado del cluster y API
- Problemas activos del sistema
- Información detallada del sistema
Para información técnica detallada, consulta:
DASHBOARD-PROXMOX-COMPLETO.md
- Implementación completaGUIA-AUTOMATIZACION-DASHBOARDS.md
- Guía técnica
Proyecto completado exitosamente - Dashboard Proxmox v1.0
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
hostgroup_get
- Retrieve host groupshostgroup_create
- Create new host groupshostgroup_update
- Modify existing host groupshostgroup_delete
- Remove host groups
item_get
- Retrieve monitoring items with filteringitem_create
- Create new monitoring itemsitem_update
- Update existing itemsitem_delete
- Remove monitoring items
trigger_get
- Retrieve triggers and alertstrigger_create
- Create new triggerstrigger_update
- Modify existing triggerstrigger_delete
- Remove triggers
template_get
- Retrieve monitoring templatestemplate_create
- Create new templatestemplate_update
- Update existing templatestemplate_delete
- Remove templates
problem_get
- Retrieve current problems and issuesevent_get
- Get historical eventsevent_acknowledge
- Acknowledge events and problems
history_get
- Access historical monitoring datatrend_get
- Retrieve trend data and statistics
user_get
- Retrieve user accountsuser_create
- Create new usersuser_update
- Update user informationuser_delete
- Remove user accounts
maintenance_get
- Retrieve maintenance periodsmaintenance_create
- Schedule maintenance windowsmaintenance_update
- Modify maintenance periodsmaintenance_delete
- Remove maintenance schedules
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
mcp_zabbix_proxmox_hosts_analyze
- Analizar hosts Proxmox y categorizar itemsmcp_zabbix_proxmox_dashboard_create_single
- Crear dashboard para un nodo Proxmoxmcp_zabbix_proxmox_dashboard_create_dual
- Crear dashboard dual para dos nodos Proxmoxmcp_zabbix_proxmox_dashboard_add_widgets
- Agregar widgets específicos a dashboards existentes
{
"tool": "mcp_zabbix_proxmox_hosts_analyze",
"args": {
"categorize_items": true,
"hostname_filter": "proxmox"
}
}
{
"tool": "mcp_zabbix_proxmox_dashboard_create_single",
"args": {
"hostname": "proxmox",
"dashboard_name": "Proxmox Monitor"
}
}
{
"tool": "mcp_zabbix_proxmox_dashboard_create_dual",
"args": {
"hostname1": "proxmox",
"hostname2": "serverhome",
"dashboard_name": "Proxmox Dual Monitor"
}
}
{
"tool": "mcp_zabbix_proxmox_dashboard_add_widgets",
"args": {
"dashboard_id": "402",
"hostname": "proxmox",
"widget_types": ["cpu_graph", "memory_graph", "disk_graph"]
}
}
npm install -g @thelord/zabbix-mcp-server
- Node.js 18 or higher
- npm (comes with Node.js)
- Conda (recommended for environment management)
- Access to a Zabbix server with API enabled
-
Clone the repository:
git clone https://github.com/mpeirone/zabbix-mcp-server.git cd zabbix-mcp-server
-
Set up the environment:
# Create conda environment conda create -n zabbix-mcp-server -c conda-forge nodejs -y # Activate environment (or use the included script) source activate.sh
-
Install dependencies:
npm install
-
Build the project:
npm run build
-
Configure environment variables:
cp .env.example .env # Edit .env with your Zabbix server details
-
Test the installation:
npm test
Create a .env
file in your project directory:
ZABBIX_URL=http://your-zabbix-server/zabbix
ZABBIX_USER=your-username
ZABBIX_PASSWORD=your-password
READ_ONLY=false
For remote access and real-time communication, use the SSE server. Create a .env
file:
# Zabbix API Configuration
ZABBIX_URL=http://your-zabbix-server/zabbix
ZABBIX_USER=your-username
ZABBIX_PASSWORD=your-password
# SSE Server Configuration
PORT=3000
# CORS Configuration (comma-separated origins)
ALLOWED_ORIGINS=http://localhost:3001,http://localhost:8080
# Security
READ_ONLY=false
ZABBIX_URL
- Your Zabbix server API endpoint (e.g.,https://zabbix.example.com
)
Method 1: API Token (Recommended)
ZABBIX_TOKEN
- Your Zabbix API token
Method 2: Username/Password
ZABBIX_USER
- Your Zabbix usernameZABBIX_PASSWORD
- Your Zabbix password
READ_ONLY
- Set totrue
,1
, oryes
to enable read-only mode (only GET operations allowed)
npx @thelord/zabbix-mcp-server
Add to your Claude Desktop configuration:
{
"mcpServers": {
"zabbix": {
"command": "npx",
"args": ["@thelord/zabbix-mcp-server"]
}
}
}
# Development mode
npm run dev:sse
# Production mode
npm run build
npm run start:sse
VS Code with MCP extension:
{
"mcpServers": {
"zabbix-sse": {
"transport": {
"type": "sse",
"url": "http://localhost:3001/sse",
"postUrl": "http://localhost:3001/message"
}
}
}
}
Cursor IDE:
{
"mcpServers": {
"zabbix-sse": {
"transport": "sse",
"url": "http://localhost:3001/sse",
"postUrl": "http://localhost:3001/message"
}
}
}
Trae AI:
{
"mcpServers": {
"zabbix-sse": {
"transport": "sse",
"url": "http://localhost:3001/sse",
"env": {
"ZABBIX_URL": "http://137.184.54.73/api_jsonrpc.php",
"ZABBIX_USERNAME": "Admin",
"ZABBIX_PASSWORD": "zabbix"
}
}
}
}
Neovim with MCPHub.nvim:
require('mcphub').setup({
servers = {
['zabbix-sse'] = {
transport = 'sse',
url = 'http://localhost:3001/sse',
post_url = 'http://localhost:3001/message'
}
}
})
Production mode:
npm start
Development mode (with auto-reload):
npm run dev
Direct execution:
node dist/index.js
Run test suite:
npm test
npm run build
- Compile TypeScript to JavaScriptnpm start
- Run the compiled servernpm run dev
- Run in development mode with auto-reloadnpm test
- Run tests and verify configuration
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
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
)
This server is designed to work with MCP-compatible clients like Claude Desktop. See MCP_SETUP.md for detailed integration instructions.
-
Configure environment:
cp config/.env.example .env # Edit .env with your settings
-
Run with Docker Compose:
docker compose up -d
docker build -t zabbix-mcp-server .
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
- 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
# Test server functionality
uv run python scripts/test_server.py
# Test with Docker
docker-compose exec zabbix-mcp python scripts/test_server.py
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
- 🔑 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
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+)
Set environment variable for detailed logging:
export DEBUG=1
uv run python scripts/start_server.py
- FastMCP - MCP server framework
- python-zabbix-utils - Official Zabbix Python library
This project is licensed under the MIT License - see the LICENSE file for details.
- Zabbix for the monitoring platform
- Model Context Protocol for the integration standard
- FastMCP for the server framework
Made with ❤️ for the Zabbix and MCP communities