Zabbix MCP Server by initMAX

Zabbix MCP Server by initMAX

initMAX's Zabbix MCP Server is a self-hosted Python service that maps the Zabbix API to 255 MCP tools, served over Streamable HTTP or SSE. It adds multi-instance routing, scoped tokens, read-only mode, OAuth 2.1, graph rendering, anomaly checks and PDF reports.

Server facts

Zabbix MCP Server by initMAX

Project

Author
initMAX
License
AGPL-3.0-only

Tech

Runtime / language
pythonPython
Transports
streamable-httpssestdio
Remote available
No
Authentication
Not specified

Activity

GitHub stars
244
Last commit
Data as of

Tags

  • Devops
  • Observability
  • Python
  • Self Hosted
  • infrastructure
  • monitoring
  • zabbix

Overview

initMAX's Zabbix MCP Server runs as a standalone Python service that exposes the Zabbix JSON-RPC API to MCP clients over Streamable HTTP, with SSE as a fallback for clients lacking session management. Scope is the main difference from the separately listed mpeirone zabbix-mcp-server, which routes every API method through three generic tools: this project registers 255 tools, 241 of them mapped to individual methods across 68 API groups plus 14 extensions. Those extensions merge several lookups into pre-correlated views of hosts, host groups, problems and item history, render graphs as PNG images, flag anomalies with z-score analysis, project capacity by linear regression, build PDF reports from templates and split writes into separate prepare and confirm steps.

Configuration lives in one TOML file. Each named Zabbix instance gets its own URL and API token, and every tool takes a server parameter, so production and staging can share one endpoint. Read-only mode applies per instance or per token, and read-only callers never see write tools in the catalog. Bearer tokens carry scopes, IP limits, server binding and expiry; an embedded OAuth 2.1 server is optional. Since the full catalog costs roughly 100k tokens of context, allowlisting tool groups is advised. A separate admin portal manages tokens, servers and report templates. Deployment paths include a systemd installer, a user-mode installer and Docker Compose.

Install & configure

Requirements

  • Linux server with Python 3.10 or later
  • Network access to the Zabbix server(s)
  • A Zabbix API token (Zabbix 5.0 and 5.2 need the legacy password login instead)
Documented launch / install command
git clone https://github.com/initMAX/zabbix-mcp-server.git && cd zabbix-mcp-server && sudo ./deploy/install.sh

Install from a checkout with sudo ./deploy/install.sh, set the Zabbix URL and api_token in /etc/zabbix-mcp/config.toml, then start the zabbix-mcp-server systemd service. Clients connect to http://127.0.0.1:8080/mcp, or /sse for SSE. Docker Compose reads MCP_HOST, MCP_PORT and an optional MCP_AUTH_TOKEN from .env.

Config file · macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

Use Settings → Developer → Edit Config when available. Do not assume a Linux configuration path; check the client documentation for your platform. Remote servers use the app’s connector flow when supported, not the local stdio file shown here. Merge this example with existing settings; do not overwrite unrelated servers.

A supported configuration example is not available for this client and transport. Check the client documentation for its connection flow; do not substitute an undocumented JSON format.

Read the Claude Desktop setup guide

Config file · Project: .cursor/mcp.json

User: ~/.cursor/mcp.json

The project path is relative to the workspace root. The tilde denotes your user home directory. Use Cursor’s MCP settings to confirm which configuration and scope your installed version is reading. Merge this example with existing settings; do not overwrite unrelated servers.

Cursor configuration
{
  "mcpServers": {
    "zabbix-mcp-server-2": {
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

Read the Cursor setup guide

Config file · Workspace: .vscode/mcp.json

For user scope, use the “MCP: Open User Configuration” command if available. Do not guess a user configuration path across operating systems, profiles, containers, or remote workspaces; check the client documentation. Merge this example with existing settings; do not overwrite unrelated servers.

A supported configuration example is not available for this client and transport. Check the client documentation for its connection flow; do not substitute an undocumented JSON format.

Read the VS Code setup guide

Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json

Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json

Open the MCP configuration through Windsurf’s settings when possible to confirm the active file. Paths can differ in managed or future releases; check the client documentation if this location is not present. Merge this example with existing settings; do not overwrite unrelated servers.

Windsurf configuration
{
  "mcpServers": {
    "zabbix-mcp-server-2": {
      "serverUrl": "http://127.0.0.1:8080/mcp"
    }
  }
}

Read the Windsurf setup guide

Config file · Project scope: .mcp.json at the repository root

The project file uses mcpServers. For user scope, use claude mcp add --scope user rather than assuming .mcp.json in your home directory is the user configuration. Check the client documentation for managed settings and storage details. Merge this example with existing settings; do not overwrite unrelated servers.

Claude Code configuration
{
  "mcpServers": {
    "zabbix-mcp-server-2": {
      "type": "sse",
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

Read the Claude Code setup guide

Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.

Tools

Source: repository README. Tool descriptions are a documented snapshot, not a live capability check.

ToolWhat it does
problem_getList active problems to see what is currently wrong.
event_getRetrieve events from the Zabbix event log.
event_acknowledgeAcknowledge, close or comment on events.
history_getQuery raw historical values for items.
trend_getQuery aggregated trend data for capacity planning.
sla_getRead configured SLAs.
sla_getsliRetrieve calculated service availability (SLI) data.
hostdashboard_getReturn the dashboards a host inherits from its templates (Zabbix 7.0+).
configuration_exportExport templates, hosts, groups, maps, images or media types as YAML, XML or JSON.
configuration_importImport exported configuration objects into an instance.
alert_getQuery the history of sent notifications and remote commands.
script_executeRun a global script on a host.
auditlog_getRead the audit trail of configuration changes and logins.
settings_getView global Zabbix server settings.
settings_updateModify global Zabbix server settings.
apmtrace_getQuery OpenTelemetry traces ingested by a Zabbix 8.0 server.
apmspan_getQuery OpenTelemetry spans ingested by a Zabbix 8.0 server.
apmlog_getQuery OpenTelemetry log records ingested by a Zabbix 8.0 server.
apmmetric_getQuery OpenTelemetry metric data points ingested by a Zabbix 8.0 server.
device_getList mobile app installations paired with users.
device_offboardRevoke a paired mobile app installation.
serverinfo_getReturn the last update time of a Zabbix server instance.
apiinfo_versionReturn the API (frontend) version of a Zabbix server.
host_status_getPre-correlated status view of a host in one round trip.
hostgroup_overview_getPre-correlated overview of a host group.
infrastructure_summary_getSummarize overall infrastructure state in one call.
item_history_summary_getSummarize an item's history without fetching every value.
problem_active_getPre-correlated view of currently active problems.
graph_renderExport a graph as a PNG image.
anomaly_detectFlag unusual values with z-score analysis.
capacity_forecastProject future usage with linear regression.
item_threshold_searchFilter items by thresholds on their last value.
report_generateRender a PDF report from a built-in or custom template (beta).
action_prepareStage a write operation for two-step approval.
action_confirmConfirm and execute a previously prepared write.
health_checkReport MCP server status and connectivity to each configured Zabbix server.
zabbix_raw_api_callCall any Zabbix API method by name when no dedicated tool exists.

Use cases

  • Triage active problems and acknowledge events across one or more Zabbix instances.
  • Summarize host, host group and infrastructure status in a single call.
  • Render metric graphs, flag anomalies or forecast capacity from item history.
  • Produce availability, capacity or backup PDF reports from monitoring data.
  • Export or import templates and other configuration objects between instances.

Strengths

  • Dedicated tools for 241 Zabbix API methods plus 14 extension tools.
  • Read-only mode per instance or per token, with write tools hidden from read-only callers.
  • Scoped bearer tokens, optional OAuth 2.1 and a separate admin portal for operators.

Limitations

  • The full catalog costs roughly 100k tokens of context unless tool groups are allowlisted.
  • Not published on PyPI; installation runs from a repository checkout or Docker.
  • PDF reporting is a beta feature and needs extra dependencies.

Zabbix MCP Server by initMAX setup notes

  • Zabbix MCP Server by initMAX's example uses sse, while its catalog transports are streamable-http / sse / stdio; use the example's connection type.

Frequently asked questions

That project reaches the Zabbix API through three generic tools. This one registers 255 dedicated tools, including 14 extensions such as graph rendering, anomaly detection, capacity forecasts and PDF reports, and runs as an HTTP service.

Yes. Each [zabbix.<name>] section in config.toml defines an instance, and every tool accepts a server parameter. The first defined instance is the default.

The README lists 7.0 LTS to 7.4 as fully supported, 6.0 to 6.4 as supported, 8.0 as supported pre-release, 5.4 as basic and untested, and 5.0 and 5.2 as legacy best effort through password login.

Set a tools allowlist or tool group names in the [server] section, or per token through scopes. Read-only callers also do not receive write tools.

Related MCP servers