MCP server
Kuvasz ships with a built-in Model Context Protocol (MCP) server, which exposes your monitoring data and management operations as tools that AI assistants can call directly. This lets you query monitor status, view incidents, and create or toggle monitors through natural language — right inside Claude, Cursor, or any MCP-compatible client.
Experimental feature
The MCP server is available as an experimental feature! The API surface (tool names and schemas) may change in future releases.
Enabling the MCP server
The MCP server is disabled by default. To enable it, refer to the relevant configuration.
Once enabled, the server is available at the /mcp endpoint of your Kuvasz instance (e.g. https://your.kuvasz.host/mcp). It uses the Streamable HTTP transport defined by the MCP specification.
Connecting AI clients
Kuvasz's MCP server speaks Streamable HTTP. Depending on your AI client's capabilities, there are two ways to connect it to the MCP server:
Just make sure that your client is configured to use the /mcp endpoint of your Kuvasz instance as an MCP server, and pass the API key for authentication (see below).
Clients using the STDIO transport (like Claude) can still use the MCP server, but require a local bridge to translate between Streamable HTTP and STDIO. The easiest way to achieve this is to use the mcp-remote bridge (installed via npx, no global install required):
Authentication
The /mcp endpoint is protected by a dedicated MCP API key, which is separate from the REST API key. The REST API key (or a web UI / OIDC session) does not grant access to the MCP endpoint — you must configure the MCP API key to use the server. Pass it in one of the two supported ways:
X-API-KEYheader:X-API-KEY: YourMcpApiKey- Bearer token:
Authorization: Bearer YourMcpApiKey
Info
If you have disabled authentication entirely, the MCP endpoint is also unauthenticated.
Available tools
Read-only mode
If you have configured your monitors via YAML, the corresponding create-*, toggle-*, and delete-* tools will return an error when called. The same applies to the create-maintenance-window, toggle-maintenance-window, and delete-maintenance-window tools when maintenance windows are configured via YAML. Additionally, delete-* tools will fail if the monitor is referenced by a read-only status page. The list-*, get-*-details, get-*-stats, list-incidents, list-integrations, list-docker-hosts, and list-proxies tools are always available regardless of read-only mode. Incident notes are never configured via YAML, so the incident note tools are always available too.
This is the expected behavior, and works exactly the same as if you were to perform these operations via the REST API or dashboard.
Lists, page by page
The tools that list monitors, status pages, maintenance windows and incidents return one page at a time: 25 items by default. The result tells how many items and pages there are in total, so the assistant can ask for the next page with page. These tools can also change the page size (size), search by name (name), and sort the items (sortedBy, sortOrder).
The MCP server exposes the following tools to connected clients:
HTTP monitors
| Tool | Description |
|---|---|
list-http-monitors |
List all HTTP monitors with their current uptime and SSL status |
get-http-monitor-details |
Get detailed information about an HTTP monitor by ID |
get-http-monitor-stats |
Get latency and uptime statistics (configurable look-back window) |
create-http-monitor |
Create a new HTTP monitor |
toggle-http-monitor |
Enable or disable an HTTP monitor (disabling also implicitly disables its SSL checks) |
delete-http-monitor |
Permanently delete an HTTP monitor by ID, including all its history and events |
ICMP (ping) monitors
| Tool | Description |
|---|---|
list-icmp-monitors |
List all ICMP monitors with their current uptime status |
get-icmp-monitor-details |
Get detailed information about an ICMP monitor by ID |
get-icmp-monitor-stats |
Get latency and packet-loss statistics (configurable look-back window) |
create-icmp-monitor |
Create a new ICMP monitor |
toggle-icmp-monitor |
Enable or disable an ICMP monitor |
delete-icmp-monitor |
Permanently delete an ICMP monitor by ID, including all its history and events |
Push (heartbeat) monitors
| Tool | Description |
|---|---|
list-push-monitors |
List all push monitors with their current uptime status |
get-push-monitor-details |
Get detailed information about a push monitor by ID |
get-push-monitor-stats |
Get uptime statistics (configurable look-back window) |
create-push-monitor |
Create a new push monitor |
toggle-push-monitor |
Enable or disable a push monitor |
delete-push-monitor |
Permanently delete a push monitor by ID, including all its history and events |
TCP (port) monitors
| Tool | Description |
|---|---|
list-tcp-monitors |
List all TCP monitors with their current uptime status |
get-tcp-monitor-details |
Get detailed information about a TCP monitor by ID |
get-tcp-monitor-stats |
Get latency and uptime statistics (configurable look-back window) |
create-tcp-monitor |
Create a new TCP monitor |
toggle-tcp-monitor |
Enable or disable a TCP monitor |
delete-tcp-monitor |
Permanently delete a TCP monitor by ID, including all its history and events |
DNS monitors
| Tool | Description |
|---|---|
list-dns-monitors |
List all DNS monitors with their current uptime status |
get-dns-monitor-details |
Get detailed information about a DNS monitor by ID |
get-dns-monitor-stats |
Get latency and uptime statistics (configurable look-back window) |
create-dns-monitor |
Create a new DNS monitor |
toggle-dns-monitor |
Enable or disable a DNS monitor |
delete-dns-monitor |
Permanently delete a DNS monitor by ID, including all its history and events |
Docker monitors
| Tool | Description |
|---|---|
list-docker-monitors |
List all Docker monitors with their current uptime status and container image |
get-docker-monitor-details |
Get detailed information about a Docker monitor by ID |
get-docker-monitor-stats |
Get CPU, memory and uptime statistics of the container (configurable look-back window) |
create-docker-monitor |
Create a new Docker monitor |
toggle-docker-monitor |
Enable or disable a Docker monitor |
delete-docker-monitor |
Permanently delete a Docker monitor by ID, including all its history and events |
Status pages
| Tool | Description |
|---|---|
list-status-pages |
List all status pages with their basic configuration (title, slug, visibility, monitor count, selected categories) |
get-status-page-details |
Get full details of a specific status page including per-monitor uptime status, uptime ratio, and 30-day uptime history. Like on the status pages, only the latest 20 incidents of each monitor are listed, and incidentCount tells how many there were in total |
Maintenance windows
| Tool | Description |
|---|---|
list-maintenance-windows |
List all maintenance windows with their schedule (manual, recurring or one-off) and current active state |
get-maintenance-window-details |
Get full details of a specific maintenance window, including affected monitors and categories, notified integrations, and resolved next start / end |
create-maintenance-window |
Create a new maintenance window (manual, cron + duration recurring, or start + duration one-off) |
toggle-maintenance-window |
Enable or disable a maintenance window via its master enabled switch |
delete-maintenance-window |
Permanently delete a maintenance window by ID |
The maintenanceWindows affecting a monitor (and whether it is currently inMaintenance) are also surfaced on the get-*-monitor-details tool outputs.
Docker hosts and proxies
Both are defined in the YAML configuration only, so they can be listed, but not created through the MCP server. The listed names are what create-docker-monitor accepts in its dockerHost field, and what create-http-monitor and create-tcp-monitor accept in their proxy fields.
| Tool | Description |
|---|---|
list-docker-hosts |
List the configured Docker hosts with their URL, the way Kuvasz authenticates to them, and the Engine API version negotiated so far |
list-proxies |
List the configured outbound proxies with their type (HTTP or SOCKS5), address, and whether Kuvasz authenticates to them |
Integrations
| Tool | Description |
|---|---|
list-integrations |
List all configured integrations with their type and settings |
Application settings
| Tool | Description |
|---|---|
get-app-settings |
Get the current application settings (authentication, data retention, language, metrics export, MCP server, and version info) |
Incidents
| Tool | Description |
|---|---|
list-incidents |
List incidents across all monitor types, optionally filtered by monitor ID, monitor name or incident type, with a configurable look-back window and resolved-flag filter |
get-incident-details |
Get the details of an incident by its type and event ID: its notes, and the integrations that were notified when it started and when it was resolved |
create-incident-note |
Add a note to an incident, with an investigation status, an optional timestamp, and an optional public flag to show it on the status pages. To change a note, delete and recreate it |
delete-incident-note |
Permanently delete an incident note |
The get-incident-details tool and the incident note tools are available from version 4.5.0 on.