thruk-mcp
Allows querying and managing hosts, services, downtimes, acknowledgements, and more in Icinga monitoring instances via Thruk's REST API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@thruk-mcp show me all critical services"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
thruk-mcp
Model Context Protocol (MCP) server for Thruk — the unified web frontend for Naemon, Nagios, Icinga and Shinken.
Expose Thruk's REST API to MCP-compatible clients (Claude Desktop, Dust, LibreChat, OpenWebUI...) so that an LLM can query hosts/services, schedule downtimes, acknowledge problems, force rechecks and more in natural language.
Features
Read: hosts, services, hostgroups, servicegroups, downtimes, comments, sites, aggregated stats, current problems
Write: schedule/delete downtimes, acknowledge & remove acks, force rechecks
Escape hatch:
thruk_querytool to call any Thruk REST endpointMulti-backend support (Thruk federated sites): pass
backends="prod,dr"to any toolTransports: stdio (default) or Streamable-HTTP (
--listen <port>, endpoint/mcp)Async httpx client with proper error handling and TLS verification
Tested with
pytest+respx, linted withruff, packaged withhatchling
Related MCP server: vibeMK
Quick start
1. Configure
cp .env.example .env
$EDITOR .env # set THRUK_BASE_URL and THRUK_API_KEYAn API key can be created from the Thruk user profile page (requires api_keys_enabled in thruk_local.conf) or via the REST API itself.
2a. Run with Docker
docker compose up -d
# MCP Streamable-HTTP endpoint: http://localhost:8001/mcp2b. Run locally
pip install thruk-mcp # or: pipx install thruk-mcp
# stdio mode (for Claude Desktop, LibreChat, etc.)
thruk-mcp
# Streamable-HTTP mode — endpoint http://localhost:8001/mcp
thruk-mcp --listen 8001
# equivalently: thruk-mcp --transport streamable-http --listen 8001
# Behind a load balancer / multiple replicas, drop per-session state
# (no sticky routing required):
thruk-mcp --listen 8001 --stateless --json-response
# Multi-tenant: each request brings its own Thruk credentials via headers
# (no fixed THRUK_API_KEY at boot). Requires --stateless; serve over TLS.
thruk-mcp --listen 8001 --stateless --header-authFor local development of the project itself, see CONTRIBUTING.md.
3. Wire it to an MCP client
Claude Desktop (~/.config/Claude/claude_desktop_config.json or macOS equivalent):
{
"mcpServers": {
"thruk": {
"command": "thruk-mcp",
"env": {
"THRUK_BASE_URL": "https://monitor.example.com/thruk",
"THRUK_API_KEY": "xxxxxxxx"
}
}
}
}4. Use with the Docker MCP Gateway
The image at ghcr.io/k9fr4n/thruk-mcp:latest defaults to stdio transport, so it can be spawned natively by the gateway.
Option A — Private local catalog
# 1. Create your private catalog
docker mcp catalog create thruk-private
# 2. Register this server (catalog/server.yaml ships with the repo)
docker mcp catalog add thruk-private thruk-mcp ./catalog/server.yaml
# 3. Configure credentials & enable
docker mcp secret set thruk-mcp.api_key=YOUR_KEY
docker mcp config write thruk-mcp.base_url=https://monitor.example.com/thruk
docker mcp server enable thruk-mcp
# 4. Run the gateway with your catalog
docker mcp gateway run --catalog thruk-privateThen point any MCP client (Claude Desktop, VS Code, Cursor, ...) at the gateway as documented here.
Option B — Submit upstream
catalog/server.yaml, catalog/tools.json and catalog/readme.md follow the docker/mcp-registry schema and can be submitted to the official Docker MCP Catalog via PR.
What's exposed
65 MCP Tools
Read — state
thruk_list_hosts, thruk_get_host, thruk_list_services, thruk_get_service,
thruk_list_hostgroups, thruk_list_servicegroups, thruk_list_contacts, thruk_get_contact,
thruk_problems, thruk_stats, thruk_totals (compact 16-field host+service totals, faster
than thruk_stats), thruk_sites.
Read — history & comments
thruk_list_logs, thruk_list_alerts, thruk_list_notifications,
thruk_notification_summary (notifications grouped by contact/host/service/state/command),
thruk_recent_events, thruk_list_comments, thruk_list_downtimes, thruk_get_downtime,
thruk_state_at (reconstruct the parc state at a past instant from /logs — a post-mortem
snapshot), thruk_state_diff (what changed between two past instants t1 → t2, replayed
from /logs).
Read — noise & flap analysis
thruk_top_noisy_hosts (hosts ranked by alert count over a window),
thruk_top_noisy_services (services ranked by alert count),
thruk_flap_summary (hosts/services ranked by state transition count).
Read — problem intelligence
thruk_oldest_problems (unhandled problems sorted by age, oldest first),
thruk_unacked_critical (CRITICAL/DOWN not acknowledged for > N minutes),
thruk_stale_acks (acknowledgements older than N days — forgotten problems),
thruk_problem_counts (flat aggregate of unhealthy-state counts, filterable by hostgroup,
custom vars or any structured filter — replaces the former thruk_problems_by_hostgroup),
thruk_stale_checks (surface checks that stopped running — the dangerous "false green"),
thruk_backend_health (per-site supervision-backend health: latency, replication lag,
blind spots), thruk_worker_health (distinguish a real outage from a mod-gearman
supervision blind spot).
Read — analytics
thruk_alert_heatmap (alert counts bucketed by time, useful for spotting recurring
patterns), thruk_notification_heatmap (notification counts bucketed by time — spot
mail/paging storms), thruk_concurrent_failures (windows where multiple hosts failed
simultaneously),
thruk_recurring_problems (hosts/services generating repeated alerts over a window),
thruk_root_cause (collapse a DOWN/UNREACHABLE storm into its root cause(s) via parent
topology), thruk_unreachable_vs_down (split a host outage window into DOWN cause vs
UNREACHABLE consequence).
Read — availability / SLA
thruk_host_availability (uptime % for a single host — time_up_percent, time_down_percent,
time_unreachable_percent and scheduled equivalents),
thruk_service_availability (ok/warning/critical/unknown % for a single service),
thruk_hostgroup_availability (availability for all hosts or services in a hostgroup,
sorted worst-first; type = hosts | services | both),
thruk_hostgroup_availability_summary (one aggregated rollup instead of one row per host —
time-weighted availability_percent, worst/best, below_threshold count, state
distribution; ideal for incident/SLA reports on large groups).
All accept since/until (Thruk relative or ISO) or a timeperiod shortcut
(lastmonth, thismonth, last24hours, lastweek, …).
thruk_reliability_report (per host/service reliability metrics — MTTR / MTBF /
incident counts — derived from the log over a window).
thruk_incident_timeline (ordered event chronology — the post-mortem "déroulé" — for a
host, service or hostgroup: every state change, notification, downtime, flap and
acknowledgement in time order, plus an incident/MTTR summary; a scoping filter is required).
Read — performance data
thruk_get_perfdata (fetch and parse performance data for a single host or service),
thruk_perfdata_snapshot (parsed perfdata for every service matching a filter, in one call),
thruk_perfdata_near_threshold (metrics within within_percent % of breaching their
warn/crit range — early-warning signal before an alert fires).
Write — downtime management
thruk_schedule_downtime (host/service), thruk_schedule_host_services_downtime
(all services of a host), thruk_schedule_propagated_host_downtime (parent+children),
thruk_schedule_hostgroup_downtime, thruk_schedule_servicegroup_downtime,
thruk_delete_downtime, thruk_delete_active_downtimes,
thruk_delete_downtimes_by_filter.
Write — problem handling
thruk_acknowledge, thruk_bulk_acknowledge (acknowledge multiple hosts/services in one call),
thruk_remove_acknowledgement, thruk_recheck,
thruk_add_comment, thruk_delete_comment,
thruk_checks (enable/disable active checks for a host or service),
thruk_notifications (enable/disable host or service notifications, with optional
cascade to all services of a host).
Escape hatches
thruk_query (raw call to any REST endpoint), thruk_run_background_query
(long-running endpoint via Thruk's ?background=1 mechanism with automatic
job polling).
All list-style tools share a consistent
limit/offset/sort/columnscontract. By default they return a tight subset of columns (~10 fields per row) to keep LLM token consumption low. Passcolumns=""to opt out and receive every column the Thruk row contains.
5 MCP Resources
URI templates that MCP clients with a resource browser (Claude Desktop, VS Code, ...) can "open" like files:
URI | Content |
| Full host JSON |
| Full service JSON |
| Host group config + members |
| Current unhandled problems (hosts + services) |
| Aggregated host/service stats (cached) |
3 MCP Prompts
Pre-canned workflows the user can invoke as a slash-command in the MCP client UI:
Prompt | Arguments | Purpose |
|
| 7-step incident triage |
|
| Safe downtime workflow with confirmation |
|
| Root-cause a flapping service (uses |
| optional | Morning read-only health digest (totals, unacked, stale, oldest, noisiest) |
| optional | Major-incident triage: blast radius, common cause, prioritised actions |
| optional | Saturation review of metrics nearing their warn/crit thresholds |
|
| Availability / SLA report with downtime breakdown and 99.9% verdict |
| optional | Alert-fatigue hygiene: noisiest, flapping, recurring, heatmap clustering |
Robustness
Connection retries —
httpx.AsyncHTTPTransport(retries=3)handles DNS failures, connection refusals, TLS handshakes.HTTP retries with backoff — 5xx and 429 responses are retried up to 3 times with exponential backoff + jitter (cap 5 s).
Opt-in TTL cache — slow-moving endpoints (
/sites,/processinfo,/hosts/stats,/services/stats,/contacts,/timeperiods, ...) are cached in-process for 15 s. Any tool can request caching viacache_ttl=on the underlying client. This absorbs the burst of identical calls an LLM agent typically issues across a multi-tool turn.Pagination helper —
ThrukClient.get_all()is an async generator that iterates pages of 500 rows up to a configurable hard limit (default 50 000), so internal callers can scan entire backends without manual offset math.Long-running queries — the
thruk_run_background_querytool wraps Thruk's?background=1flow and polls/thruk/jobs/<id>/outputuntil the job completes (5 min default timeout).
Environment variables
Connection
Variable | Default | Description |
|
| Thruk URL (no trailing slash) |
| (required) |
|
| Impersonation user (superuser key only) | |
|
| Set |
|
| HTTP timeout in seconds |
| CSV of default backend names (federated Thruk) |
Security / multi-tenant (v0.6)
Variable | Default | Description |
|
| Strip every write tool (ack, downtime, recheck, ...) |
| Allowlist of tool names. CSV with fnmatch wildcards. Empty = all | |
|
| Emit one JSON audit line on stderr per write tool invocation |
|
| Cap of concurrent in-flight HTTP requests. 0 = unlimited |
|
| Streamable-HTTP multi-tenant: take credentials from per-request headers (= |
| Bearer token gating the | |
|
| Opt out of the bearer requirement (proxy-fronted deploys). Leaves |
|
| CSV |
Security
Read-only mode — set
THRUK_READ_ONLY=trueto remove every write tool (thruk_acknowledge,thruk_schedule_*_downtime,thruk_recheck,thruk_delete_*,thruk_run_background_query) from the MCP server. The LLM literally cannot mutate monitoring state. Use this for general-purpose agents that should only observe.Tool allowlist —
THRUK_ENABLED_TOOLS=thruk_list_*,thruk_problems,thruk_statsrestricts the exposed surface to the listed tools (fnmatch wildcards supported). Useful when fronting multiple LLM clients with the same gateway but different scopes.Audit log — every write tool invocation emits one JSON line on
thruk_mcp.audit(stderr by default):{"ts":"2026-05-17T22:00:00+00:00","tool":"thruk_acknowledge","user":"alice", "args":{"host":"srv01","comment":"investigating"},"target":"srv01","status":"ok"}Disable with
THRUK_AUDIT_LOG=false. Sensitive keys (api_key,password,token) are redacted as***before logging.Rate limit —
THRUK_MAX_CONCURRENT=8caps in-flight HTTP requests with anasyncio.Semaphore. Combined with the v0.3 TTL cache, this protects the Thruk core from an LLM that loops on tools or chains them aggressively.Transport-level HTTP auth — gate the Streamable-HTTP
/mcpendpoint itself, independently of the Thruk credentials a request carries (no effect on stdio). SetMCP_HTTP_TOKEN=<secret>to require anAuthorization: Bearer <token>header (constant-time compare;401+WWW-Authenticate: Bearerotherwise). HTTP serving fails closed —--listen/--transport streamable-httprefuses to start unlessMCP_HTTP_TOKENis set orMCP_HTTP_ALLOW_UNAUTHENTICATED=trueis given (explicit opt-out for proxy-fronted deploys).MCP_HTTP_ALLOWED_HOSTSenforces aHostallowlist (anti-DNS-rebinding, defaults to loopback). The chain isTrustedHost → Bearer → HeaderAuth → /mcp, so the bearer gate composes with header-auth multi-tenant mode below.Header-auth multi-tenant — run
thruk-mcp --listen 8001 --stateless --header-auth(orTHRUK_HTTP_HEADER_AUTH=1) to serve many users from one process, each with their own Thruk credentials supplied per request via headers:Header
Maps to
Required
X-Thruk-Auth-Keyapi_keyyes (else
401)X-Thruk-Base-Urlbase_urlno (falls back to
THRUK_BASE_URL)X-Thruk-Auth-Userauth_userno
X-Thruk-Backendsdefault_backends(CSV)no
The server boots without
THRUK_API_KEY. Only credential/endpoint fields come from headers —THRUK_READ_ONLY,THRUK_ENABLED_TOOLSandTHRUK_AUDIT_LOGremain server-owned, so a tenant cannot grant itself write access or silence the audit log (which still attributes each call to the tenant'sauth_user). Per-tenant HTTP clients are pooled in a bounded LRU cache. The API key travels in a header, so serve only over TLS (terminate TLS in front, or behind a trusted reverse proxy). Requires--stateless.
Development
pip install -e ".[dev]"
pre-commit install # one-time setup of git hooks
ruff check src tests && ruff format src tests # lint + format
mypy src # type-check
pytest -v --cov=thruk_mcp --cov-fail-under=80 # tests with coverage gateConventions:
Conventional Commits (
feat:,fix:,chore:,docs:,refactor:,test:).No direct push to
main: branch → PR → squash merge.Any new tool must come with a
respx-mocked unit test intests/test_tools.py; regeneratecatalog/tools.json(Docker MCP Registry contract) withpython scripts/gen_tools_json.py— it is generated from the live registry, not hand-edited, and CI enforces it via--check.CI gate:
ruff,ruff format --check,mypy,pytestwith 80 % coverage minimum.
References
Thruk REST API: https://www.thruk.org/documentation/rest.html
Thruk REST commands: https://www.thruk.org/documentation/rest_commands.html
MCP spec: https://spec.modelcontextprotocol.io/
Inspired by: https://github.com/lausser/omd-mcp (initial proof-of-concept)
Project docs
CHANGELOG.md — what changed in each release.
UPGRADING.md — per-version migration notes.
SUPPORT.md — supported Python / Thruk / MCP-client versions, security policy, release cadence.
CONTRIBUTING.md — dev setup, PR conventions, tool / env-var contribution checklists.
License
MIT — see LICENSE.
Available Tools
65 toolsthruk_acknowledgeC
Acknowledge a host or service problem.
Inputs: host (required), author, notify, sticky, +4 more.
thruk_add_commentC
Add a free-form operator comment on a host or service.
Inputs: host (required), comment (required), author, service, +2 more.
thruk_alert_heatmapC
Return alert counts grouped by time bucket over a window.
Inputs: since, until, bucket, filter, +1 more.
thruk_backend_healthC
Per-site supervision-backend health: latency, replication lag, blind spots.
Inputs: backends, lag_warn_seconds, latency_warn_seconds.
thruk_bulk_acknowledgeB
Acknowledge every unhandled problem matching the given filters in one call.
Inputs: state, author, notify, sticky, +6 more.
thruk_checksC
Enable or disable active checks for a host or service.
Inputs: host (required), enabled (required), cascade, service, +1 more.
thruk_concurrent_failuresB
Detect time windows where multiple hosts failed concurrently.
Inputs: since, until, filter, backends, +2 more.
thruk_delete_active_downtimesA
Remove ALL currently active downtimes for a host (or one specific service).
Inputs: host (required), service, backends, retry_on_empty, +1 more.
thruk_delete_commentB
Delete a host or service comment by its id.
Inputs: host (required), comment_id (required), service, backends.
thruk_delete_downtimeC
Delete a host or service downtime by its id.
Inputs: host (required), downtime_id (required), service, backends.
thruk_delete_downtimes_by_filterB
Bulk-delete downtimes matching arbitrary filters.
Inputs: host, comment, service, backends, +2 more.
thruk_flap_summaryB
Return hosts and services with the most state transitions (flapping) over a time window.
Inputs: limit, since, until, filter, +2 more.
thruk_get_contactB
Get a single Nagios/Naemon contact by name.
Inputs: contact (required), backends.
thruk_get_downtimeB
Get a single downtime by id.
Inputs: downtime_id (required), backends.
thruk_get_hostB
Get a single host by name.
Inputs: host (required), backends.
thruk_get_perfdataB
Fetch and parse performance data for a single host or service.
Inputs: host (required), service, backends.
thruk_get_serviceA
Get a single service by host and description.
Inputs: host (required), service (required), backends.
thruk_host_availabilityA
Compute availability (uptime / SLA %) for a host over a configurable time window.
Inputs: host (required), since, until, backends, +3 more.
thruk_hostgroup_availabilityC
Compute availability (uptime / SLA %) for all hosts/services in a hostgroup.
Inputs: hostgroup (required), type, since, until, +4 more.
thruk_hostgroup_availability_summaryA
Aggregated SLA rollup for a hostgroup — one summary line, not 380 rows.
Inputs: hostgroup (required), type, since, until, +5 more.
thruk_incident_timelineB
Ordered event chronology for a host / service / hostgroup (post-mortem "déroulé").
Inputs: limit, since, until, filter, +1 more.
thruk_list_alertsC
List HOST/SERVICE ALERT entries from the log.
Inputs: sort, limit, since, until, +4 more.
thruk_list_commentsB
List comments (acknowledgements appear here too).
Inputs: sort, limit, filter, offset, +2 more.
thruk_list_contactsB
List configured Nagios/Naemon contacts (notification targets).
Inputs: sort, limit, offset, columns, +1 more.
thruk_list_downtimesC
List scheduled downtimes.
Inputs: sort, limit, filter, offset, +3 more.
thruk_list_hostgroupsC
List host groups. Default columns return name/alias and host/service counts only.
Inputs: sort, limit, offset, columns, +1 more.
thruk_list_hostsC
List monitored hosts.
Inputs: sort, limit, filter, offset, +2 more.
thruk_list_logsB
Query raw Livestatus log entries (/logs).
Inputs: sort, limit, since, until, +4 more.
thruk_list_notificationsC
List notification entries from the log (class=3).
Inputs: sort, limit, since, until, +4 more.
thruk_list_servicegroupsB
List service groups. Default columns return name/alias and counts only.
Inputs: sort, limit, offset, columns, +1 more.
thruk_list_servicesC
List monitored services.
Inputs: sort, limit, filter, offset, +2 more.
thruk_notification_heatmapB
Return notification counts grouped by time bucket over a window.
Inputs: since, until, bucket, filter, +1 more.
thruk_notificationsC
Enable or disable notifications for a host or service.
Inputs: host (required), enabled (required), cascade, service, +1 more.
thruk_notification_summaryC
Count notifications grouped by a single dimension over a time window.
Inputs: since, until, filter, backends, +1 more.
thruk_oldest_problemsB
Unhandled problems sorted by age (oldest first).
Inputs: limit, filter, backends.
thruk_perfdata_near_thresholdC
Metrics within within_percent %% of breaching their warn/crit range.
Inputs: limit, filter, backends, within_percent.
thruk_perfdata_snapshotC
Parsed performance data for every service matching filter (one call).
Inputs: limit, filter, backends.
thruk_problem_countsB
Flat aggregate of unhealthy-state counts across hosts and services.
Inputs: filter, backends.
thruk_problemsB
List all current unhandled host/service problems (not acknowledged, not in downtime).
Inputs: limit, filter, offset, columns, +1 more.
thruk_queryA
Escape hatch: call any Thruk REST endpoint. path is everything after /thruk/r
Inputs: path (required), data, method, params, +1 more.
thruk_recent_eventsC
Return the most recent monitoring events from the last N hours (default 1 h).
Inputs: hours, limit, filter, offset, +3 more.
thruk_recheckC
Schedule an immediate (re)check for a host or service.
Inputs: host (required), forced, service, backends.
thruk_recurring_problemsA
Return hosts/services that generated repeated alerts over a time window.
Inputs: limit, since, until, filter, +2 more.
thruk_reliability_reportB
Per host/service reliability metrics (MTTR / MTBF / incidents) from the log.
Inputs: limit, since, until, filter, +1 more.
thruk_remove_acknowledgementC
Remove an acknowledgement.
Inputs: host (required), service, backends.
thruk_root_causeB
Collapse a DOWN/UNREACHABLE storm into its root cause(s) via parent topology.
Inputs: limit, since, until, filter, +2 more.
thruk_run_background_queryC
Run a potentially long Thruk REST request via the background=1 mechanism.
Inputs: path (required), data, method, params, +2 more.
thruk_schedule_downtimeC
Schedule a host or service downtime (times accept 'now', relative '+2h'/'+30m', or ISO 8601).
Inputs: host (required), fixed, author, comment, +5 more.
thruk_schedule_hostgroup_downtimeC
Schedule a downtime on every host or service of a hostgroup.
Inputs: hostgroup (required), fixed, author, target, +5 more.
thruk_schedule_host_services_downtimeB
Schedule a downtime on ALL services of the given host (not the host object itself).
Inputs: host (required), fixed, author, comment, +4 more.
thruk_schedule_propagated_host_downtimeC
Schedule a downtime on a host and propagate to all child hosts.
Inputs: host (required), fixed, author, comment, +5 more.
thruk_schedule_servicegroup_downtimeC
Schedule a downtime on a servicegroup's services or owning hosts.
Inputs: servicegroup (required), fixed, author, target, +5 more.
thruk_service_availabilityB
Compute availability (uptime / SLA %) for a service over a configurable time window.
Inputs: host (required), service (required), since, until, +4 more.
thruk_sitesA
List configured Thruk backends (sites).
Inputs: no named parameters.
thruk_stale_acksC
Acknowledgements older than N days (potentially forgotten ones).
Inputs: limit, filter, backends, min_days.
thruk_stale_checksC
Surface checks that stopped running (the dangerous "false green").
Inputs: limit, filter, backends, grace_seconds, +5 more.
thruk_state_atB
Reconstruct the parc state at a past instant from /logs (post-mortem snapshot).
Inputs: filter, backends, timestamp, problems_only.
thruk_state_diffB
List what changed between two past instants t1 → t2 (replayed from /logs).
Inputs: t1, t2, filter, backends.
thruk_statsC
Aggregated host/service statistics.
Inputs: filter, backends.
thruk_top_noisy_hostsA
Return the top N hosts ranked by HOST ALERT count over a time window.
Inputs: limit, since, until, filter, +2 more.
thruk_top_noisy_servicesB
Return the top N services ranked by SERVICE ALERT count over a time window.
Inputs: limit, since, until, filter, +2 more.
thruk_totalsA
Compact host+service totals — 16 fields versus ~100 from thruk_stats.
Inputs: filter, backends.
thruk_unacked_criticalA
CRITICAL services and DOWN hosts not acknowledged for more than N minutes.
Inputs: filter, backends, threshold_minutes.
thruk_unreachable_vs_downB
Split a host outage window into DOWN (cause) vs UNREACHABLE (consequence).
Inputs: since, until, filter, backends, +1 more.
thruk_worker_healthC
Distinguish a real outage from a mod-gearman supervision blind spot.
Inputs: limit, backends, sample_limit, include_hosts, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 65 tools
Most tools have distinct purposes, but similarities among problem- and alert-related tools (e.g., thruk_problems, thruk_oldest_problems, thruk_problem_counts, thruk_recurring_problems) may cause confusion if descriptions are not carefully read.
All tools start with 'thruk_' and follow a mostly verb_noun pattern (e.g., list_hosts, schedule_downtime). Some are just nouns (stats, totals), but deviations are minor.
With 65 tools, the set is excessively large for an agent to navigate efficiently. Many tools could be merged or parameterized to reduce cognitive load.
The tool set covers the main monitoring lifecycle (list, get, acknowledge, comment, downtime, availability, perfdata). The thruk_query escape hatch fills gaps, though some update/configuration operations are missing.
Maintenance
Related MCP Connectors
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
MCP server for Uptrack uptime monitoring. Manage monitors and incidents from AI agents.
Manage uptime monitors, incidents and status pages from any MCP client.
Skills, agents and memory in the cloud, plus a gateway to your other MCP servers.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for Uptime Kuma that enables monitoring and management of uptime monitors, heartbeats, notifications, tags, and maintenance windows via natural language.35619 npm64MIT
- AlicenseCqualityAmaintenanceEnables complete management of CheckMK monitoring environments through natural language, including live monitoring, downtime scheduling, problem management, and configuration.11537 PyPI22GPL 3.0
- AlicenseAqualityDmaintenanceEnables managing UptimeRobot monitors, alert contacts, and maintenance windows via natural language through the MCP protocol.16MIT
- FlicenseAqualityCmaintenanceMCP server for Centreon IT monitoring that enables querying host/service status, managing acknowledgements and downtimes, and retrieving performance metrics via natural language.17-