Skip to main content
Glama
mpeirone

zabbix-mcp-server

by mpeirone

Zabbix MCP Server

License: GPL v3 Python 3.10+ SafeSkill

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

zabbix_api

Execute any Zabbix API method

zabbix_api_docs

Get documentation for any API method

zabbix_api_list

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-mcp

Option 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.py

Test Connection

uv run python scripts/test_server.py

Option 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-server

Environment Variables

Required

Variable

Description

Example

ZABBIX_URL

Zabbix server URL

https://your-zabbix-server.com

Authentication (choose one)

Variable

Description

ZABBIX_TOKEN

API token (recommended)

ZABBIX_USER + ZABBIX_PASSWORD

Username and password

Security

Variable

Default

Description

READ_ONLY

false

Set to true to allow only read operations

VERIFY_SSL

true

Enable/disable SSL verification

ZABBIX_API_WHITELIST

.*

Comma-separated regex patterns for allowed API methods

ZABBIX_API_BLACKLIST

(empty)

Comma-separated regex patterns for blocked API methods

ZABBIX_SKIP_VERSION_CHECK

false

Skip Zabbix version compatibility check

ZABBIX_API_TIMEOUT

30

API request timeout in seconds

Transport

Variable

Default

Description

ZABBIX_MCP_TRANSPORT

stdio

Transport type: stdio or streamable-http

ZABBIX_MCP_HOST

127.0.0.1

HTTP server host (when using streamable-http)

ZABBIX_MCP_PORT

8000

HTTP server port (when using streamable-http)

ZABBIX_MCP_STATELESS_HTTP

false

Stateless HTTP mode

AUTH_TYPE

-

Must be no-auth for HTTP transport (when using streamable-http)

Debug

Variable

Default

Description

DEBUG

false

Set to true for verbose logging

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 only

Security Features

Read-Only Mode

Set READ_ONLY=true to block all write operations:

export READ_ONLY=true

Only 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_URL is accessible

  • Check authentication credentials

  • Ensure Zabbix API is enabled

Permission Errors

  • Verify Zabbix user permissions

  • Check if READ_ONLY mode is enabled

Method Blocked

If you see "Method is not in whitelist" or "Method is blacklisted":

  • Review ZABBIX_API_WHITELIST and ZABBIX_API_BLACKLIST patterns

  • Ensure your regex patterns match the full method name (e.g., host.get)

Debug Mode

export DEBUG=true
uv run python scripts/start_server.py

Contributing

See CONTRIBUTING.md for development guidelines.

License

GPLv3 License - see LICENSE for details.

Acknowledgments

Available Tools

3 tools
zabbix_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
ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesZabbix API method (format: 'object.action').
versionNoZabbix version (e.g., '7.0', '6.0'). If omitted, uses server version.
timeoutNoHTTP timeout in seconds (default: 10).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectNoSpecific API object (e.g., 'host', 'item'). If omitted, returns all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 43 tool updatesv1.0.1
    • Removedapiinfo_version
    • Removedconfiguration_export
    • Removedconfiguration_import
    • Removeddiscoveryrule_get
    • Removedevent_acknowledge
    • Removedevent_get
    • Removedgraph_get
    • Removedhistory_get
    • Removedhost_create
    • Removedhost_delete
    • Removedhost_get
    • Removedhost_update
    • Removedhostgroup_create
    • Removedhostgroup_delete
    • Removedhostgroup_get
    • Removedhostgroup_update
    • Removeditem_create
    • Removeditem_delete
    • Removeditem_get
    • Removeditem_update
    • Removeditemprototype_get
    • Removedmaintenance_create
    • Removedmaintenance_delete
    • Removedmaintenance_get
    • Removedmaintenance_update
    • Removedproblem_get
    • Removedtemplate_create
    • Removedtemplate_delete
    • Removedtemplate_get
    • Removedtemplate_update
    • Removedtrend_get
    • Removedtrigger_create
    • Removedtrigger_delete
    • Removedtrigger_get
    • Removedtrigger_update
    • Removeduser_create
    • Removeduser_delete
    • Removeduser_get
    • Removeduser_update
    • Removedusermacro_get
    • Addedzabbix_api
    • Addedzabbix_api_docs
    • Addedzabbix_api_list
  2. 40 tool updatesv1.0.0
    • First observedapiinfo_version
    • First observedconfiguration_export
    • First observedconfiguration_import
    • First observeddiscoveryrule_get
    • First observedevent_acknowledge
    • First observedevent_get
    • First observedgraph_get
    • First observedhistory_get
    • First observedhost_create
    • First observedhost_delete
    • First observedhost_get
    • First observedhost_update
    • First observedhostgroup_create
    • First observedhostgroup_delete
    • First observedhostgroup_get
    • First observedhostgroup_update
    • First observeditem_create
    • First observeditem_delete
    • First observeditem_get
    • First observeditem_update
    • First observeditemprototype_get
    • First observedmaintenance_create
    • First observedmaintenance_delete
    • First observedmaintenance_get
    • First observedmaintenance_update
    • First observedproblem_get
    • First observedtemplate_create
    • First observedtemplate_delete
    • First observedtemplate_get
    • First observedtemplate_update
    • First observedtrend_get
    • First observedtrigger_create
    • First observedtrigger_delete
    • First observedtrigger_get
    • First observedtrigger_update
    • First observeduser_create
    • First observeduser_delete
    • First observeduser_get
    • First observeduser_update
    • First observedusermacro_get

TDQS

A4.6/5.0
Disambiguation5/5

The three tools have clearly distinct roles: execute API calls, get documentation, and list methods. No overlap in functionality.

Naming Consistency5/5

All tools follow the consistent 'zabbix_api_<suffix>' pattern (the main tool is 'zabbix_api' as the base).

Tool Count4/5

With 3 tools, the set is minimal but well-scoped for a generic Zabbix API wrapper. Each tool is necessary and sufficient.

Completeness5/5

The set covers discovery, documentation, and execution of any Zabbix API method. No gaps for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessSlow

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

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    Exposes 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.
    100
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes 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.
    190
    AGPL 3.0
  • A
    license
    C
    quality
    F
    maintenance
    Comprehensive MCP server for integrating with Zabbix monitoring systems, providing 90+ API tools across 19 categories for monitoring, alerting, and infrastructure management.
    100
    15
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Exposes Zabbix monitoring capabilities as callable tools for AI agents and MCP-compatible clients.
    -

Latest Blog Posts

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