icinga
MCP / OpenAI Endpoint for Icinga
claude mcp add --transport stdio icinga-icinga-mcp python -m icinga_mcp.mcp_server \ --env REST_HOST="127.0.0.1" \ --env REST_PORT="8080" \ --env REST_BEARER_TOKEN="your-rest-token" \ --env ICINGA_WEB_BASE_URL="https://icingaweb2.example.tld" \ --env ICINGA_WEB_PASSWORD="your-password" \ --env ICINGA_WEB_USERNAME="your-username" \ --env ICINGA_WEB_CA_BUNDLE="/path/to/ca.pem" \ --env REST_REQUIRE_API_KEY="true" \ --env ICINGA_WEB_VERIFY_TLS="true"
How to use
icinga-mcp provides two surfaces: a REST API (FastAPI) with an auto-generated OpenAPI/Swagger UI and an MCP stdio server that speaks the MCP protocol so MCPO can orchestrate monitoring actions. The REST layer acts as a bridge to Icinga Web 2 (Icinga DB Web module) and exposes endpoints to list and manipulate hosts, services, groups, downtimes, comments, acknowledgements, and more, with optional projection for UI or LLM consumption. The MCP server mirrors these capabilities through OCPO-like tools such as list_hosts, list_services, list_host_problems, schedule_downtime, acknowledge, and others, enabling MCPO to orchestrate checks, downtimes, and administrative actions programmatically. To run locally, you typically start the REST API first, then the MCP server for MCPO to connect, and configure MCPO to spawn/connect to the MCP surface.
How to install
Prerequisites:
- Python 3.11+ (3.12 also works)
- Access to an Icinga Web 2 instance with the Icinga DB Web module
- Network connectivity from this service to Icinga Web 2
Step-by-step installation:
# 1) Create and activate a Python virtual environment
make venv
. .venv/bin/activate
# 2) Install the package in editable mode along with dev tooling
make dev
Configure environment (example):
cp .env.example .env
# Edit .env with your values for ICINGA_WEB_BASE_URL, ICINGA_WEB_USERNAME, ICINGA_WEB_PASSWORD, and optional TLS/REST settings
Run REST server (local):
make run-rest
# alternatively, if installed as a package in editable mode:
icinga-mcp-rest
Run MCP server for MCPO:
make run-mcp
# or:
icinga-mcp-server
For containerized usage, see the Containerfile in the repo and build/run as described in the Container (Docker/Podman) section of the README.
Additional notes
Tips and notes:
- Secrets are not logged; TLS verification is enabled by default. Use a least-privilege Icinga Web 2 account.
- The MCP surface supports commands like list_hosts, list_services, list_host_problems, and downtime-related actions. MCPO can spawn/connect to the MCP server to orchestrate these actions.
- If REST authentication is enabled, authorize requests with a Bearer token.
- Ensure ICINGA_WEB_BASE_URL is reachable from the MCP REST layer and that the Icinga DB Web module is exposed over HTTP/HTTPS as configured.
- When running in Docker/Podman, mount your .env into the container or rely on a properly passed environment file; see the container docs for TLS and CA bundle options.
Related MCP Servers
mcpo
A simple, secure MCP-to-OpenAPI proxy server
mcp -any-openapi
A MCP server that enables Claude to discover and call any API endpoint through semantic search. Intelligently chunks OpenAPI specifications to handle large API documentation, with built-in request execution capabilities. Perfect for integrating private APIs with Claude Desktop.
openapi -generator
A Python tool that automatically converts OpenAPI(Swagger, ETAPI) compatible specifications into fully functional Model Context Protocol (MCP) servers. Generates Docker-ready implementations with support for SSE/IO communication protocols, authentication, and comprehensive error handling. https://pypi.org/project/openapi-mcp-generator/
omni-lpr
A multi-interface (REST and MCP) server for automatic license plate recognition 🚗
mcp-cyberbro
Using MCP is fun with Cyberbro!
openapi -proxy
An MCP server that provides tools for exploring large OpenAPI schemas