uptime-kuma-mcp-server
Provides tools for interacting with an Uptime Kuma instance, enabling management of monitors (create, edit, delete, pause, resume), retrieval of heartbeats, uptime status, Prometheus metrics, notifications, and status pages.
Click on "Install 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., "@uptime-kuma-mcp-serverCreate an HTTP monitor for https://example.com every 60s and notify via Slack"
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.
uptime-kuma-mcp-server
MCP server for Uptime Kuma — 90k stars, MIT — a fancy self-hosted monitoring tool.
This is Option 1 from the agent-reach research: the top open-source project with no official MCP in the parent org (only a 47-star community fork DavidFuchs/mcp-uptime-kuma). Built with the mcp-builder skill (Anthropic anthropics/skills@mcp-builder, 109K installs) following TypeScript best practices.
Why this repo?
90,788 stars, 793 open issues — highly active, contributor-friendly
No
louislam/uptime-kumaofficial MCP — community gap <0.1% parent sizeSocket.IO primary API (real-time) + REST
/metrics— perfect MCP surfaceUse case:
Claude: "what's down? pause monitors for deploy, create https check for new service"
Related MCP server: IonHour MCP Server
Tools (12) — curated 19% of API surface
Tool | Description | Annotations |
| List with pagination + search | readOnly |
| Get single monitor details | readOnly |
| Create (http/port/ping/keyword/dns/push…) | create |
| Edit existing (merge) | update |
| Delete (destructive) | destructive |
| Pause checks | update |
| Resume | update |
| Recent heartbeats (limit/period) | readOnly |
| Uptime % + avg ping | readOnly |
| Slack/email/etc channels | readOnly |
| Public status pages | readOnly |
| Prometheus | readOnly |
All list tools support limit/offset/search pagination and response_format: markdown|json, CHARACTER_LIMIT=25000 truncation.
Quick start
1. Env
# required
export UPTIME_KUMA_URL=http://localhost:3001
# auth: either JWT token or username+password
export UPTIME_KUMA_TOKEN=eyJ... # from login with Remember Me
# or
export UPTIME_KUMA_USERNAME=admin
export UPTIME_KUMA_PASSWORD=secret
export UPTIME_KUMA_TOTP=123456 # if 2FA enabled
# optional for /metrics REST
export UPTIME_KUMA_API_KEY=uk2_xxxx
export TRANSPORT=stdio # or http
export PORT=30002. Install & build
npm install
npm run build3. Run
stdio (Claude Desktop / Cursor):
{
"mcpServers": {
"uptime-kuma": {
"command": "node",
"args": ["C:/Users/Mehbul Islam/uptime-kuma-mcp-server/dist/index.js"],
"env": {
"UPTIME_KUMA_URL": "http://localhost:3001",
"UPTIME_KUMA_USERNAME": "admin",
"UPTIME_KUMA_PASSWORD": "secret"
}
}
}
}Streamable HTTP (remote):
TRANSPORT=http PORT=3000 node dist/index.js
# → http://localhost:3000/mcp + /healthClaude Code:
claude mcp add --transport http uptime-kuma http://localhost:3000/mcp4. Test with Inspector
npm run inspect
# or
npx @modelcontextprotocol/inspector node dist/index.jsExample prompts
"List my down monitors"
"Create an http monitor for https://example.com every 60s and notify via Slack"
"Pause monitor 5 during maintenance, resume after"
"Show last 50 heartbeats for monitor 3, why did it fail?"
"What's the 24h uptime % for monitor 1?"
"List my status pages"
Architecture
Transport:
StdioServerTransport(local) +StreamableHTTPServerTransport(stateless, per-request, JSON)Auth: Socket.IO
login/loginByTokenflow (mirrors Vue frontendsrc/mixins/socket.js), REST Basic Auth for/metricsValidation: Zod
.strict()with constraints, actionable errorsPagination:
has_more/next_offset, respects limit
Contributing upstream
This server is designed to be proposed to louislam/uptime-kuma as examples/mcp-server or standalone louislam/uptime-kuma-mcp-server. It improves on existing community (47 stars, 230 dl/week) with full pagination, markdown/json, 12 tools vs 5, and HTTP+stdio.
License
MIT — same as Uptime Kuma.
Available Tools
12 toolsuptime_kuma_create_monitorCreate Uptime Kuma MonitorA
Create a new monitor. Returns new monitorID.
Args:
name (required): display name
type: http|port|ping|keyword|dns|push|steam|mqtt|docker (default http)
url/hostname/port/keyword as required by type
interval (default 60, min 20)
notificationIDList (optional): { "1": true }
Use when: "monitor https://example.com every 60s" Don't use for edits (use edit_monitor).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL for http/keyword monitors | |
| name | Yes | Monitor display name | |
| port | No | Port for port monitors | |
| type | No | Monitor type | http |
| keyword | No | Keyword to search for (keyword type) | |
| hostname | No | Hostname for port/ping/dns | |
| interval | No | Check interval seconds (min 20) | |
| maxretries | No | Retries before down | |
| description | No | Optional description | |
| retryInterval | No | Retry interval seconds | |
| notificationIDList | No | Map of notification ID → enabled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already marking this as readOnly=false and idempotent=false, the description's key additional behavioral disclosure is that it returns the new monitorID. It does not contradict the annotations and provides useful extra context that compensates for the missing output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and return value, followed by a terse parameter summary and a single routing note. No sentence is wasted; the argument list uses compact notation that adds value without reproducing the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 11-parameter creation tool with no output schema, the description plus annotations cover the essentials: creation behavior, return value, type-dependent parameters, defaults, and the relationship to edit_monitor. The schema handles the remaining field-level details, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is met. The description adds value by summarizing type-specific parameter requirements ('url/hostname/port/keyword as required by type'), providing defaults for type and interval, and showing the shape of notificationIDList. This goes beyond the schema descriptions without being verbose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create a new monitor,' naming the specific action and resource, and states it returns the new monitorID. This clearly distinguishes it from sibling tools like uptime_kuma_edit_monitor and uptime_kuma_list_monitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit use case ('monitor https://exampl.com every 60s'), covers when to create, and explicitly says not to use it for edits, routing to edit_monitor. That is clear when/when-not guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_delete_monitorDelete Uptime Kuma MonitorADestructiveIdempotent
Delete a monitor and its heartbeat history (destructive).
Args:
monitor_id (int)
Requires confirmation — this is irreversible.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | Monitor ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses that the operation is destructive, irreversible, and deletes heartbeat history as well as the monitor. This goes beyond the destructiveHint annotation by specifying exactly what is destroyed and that confirmation is required. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely compact and front-loads the most critical fact (destructive deletion plus heartbeat history). The Args block is minimal and every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter deletion tool with full schema coverage and annotations covering the safety profile, the description provides everything needed: the target, the side effect, the irreversibility, and the confirmation requirement. No output schema exists, so no return-value details are required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents monitor_id with a description and minimum value, and schema description coverage is 100%. The description merely repeats the parameter with '(int)', adding no meaningful semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete a monitor and its heartbeat history.' This clearly differentiates the tool from siblings like pause, resume, or edit by explicitly naming the destructive scope and the data affected.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the tool name and description, but there is no explicit guidance on when to choose delete over alternatives like pause or edit. The 'Requires confirmation' note is a workflow prerequisite, not a comparative usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_edit_monitorEdit Uptime Kuma MonitorAIdempotent
Edit existing monitor. Only provided fields are updated.
Args:
id (required): monitor ID
name, url, interval, active, description (optional)
Use when: renaming, changing URL/interval.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Existing monitor ID | |
| url | No | New URL | |
| name | No | New name | |
| active | No | Active/paused state | |
| interval | No | New interval | |
| description | No | Description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The key line 'Only provided fields are updated' discloses partial-update/patch behavior, which is important and not available in the annotations. Annotations already indicate this is a non-read-only, non-destructive, idempotent mutation, so the description adds meaningful behavior beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core action, the key patch behavior, the arg summary, and the main use cases all appear in a few short lines. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple partial-update tool, the description covers the main behavior and typical use cases, and the schema fills in parameter details. It could slightly improve by noting whether id is immutable or how this relates to pause/resume, but those gaps are minor given the annotations and sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter well. The description adds global patch semantics with 'Only provided fields are updated,' which clarifies that omitted optional fields will not be reset or changed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits an existing monitor, which is a specific verb and resource. The phrase 'existing monitor' plus 'renaming, changing URL/interval' differentiates it from create, delete, pause, and resume siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a direct 'Use when: renaming, changing URL/interval' section, giving an agent clear context for when to invoke it. It does not explicitly mention alternative tools or exclusion cases, but the provided use cases are enough to route common scenarios correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_get_heartbeatsGet Uptime Kuma HeartbeatsARead-onlyIdempotent
Get recent heartbeats for a monitor (status, ping, msg, time).
Args:
monitor_id
period_hours (1-720, default 24)
limit (1-200, default 50)
response_format
Returns newest-first list. Use when: "show recent checks for monitor 5", "why was it down?"
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max heartbeats to return | |
| monitor_id | Yes | Monitor ID | |
| period_hours | No | Lookback period in hours (1-720) | |
| response_format | No | markdown or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: results are returned newest-first, with a lookback period and limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-line purpose, a brief argument summary, and a clear return/usage note. It is front-loaded with the core action and uses only a few purposeful lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with straightforward parameters and no output schema, the description adequately explains what is returned (newest-first list with status/ping/msg/time) and gives practical query examples. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters. The description repeats parameter names and ranges rather than adding deeper semantic context, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: "Get recent heartbeats for a monitor," and lists the returned fields (status, ping, msg, time). This clearly distinguishes it from sibling tools like list monitors or get metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit example queries that signal when to use it, such as "show recent checks for monitor 5" and "why was it down?". It lacks an explicit exclusion or comparison with sibling tools, but the use cases are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_get_metricsGet Uptime Kuma Prometheus MetricsARead-onlyIdempotent
Fetch Prometheus metrics from /metrics (requires UPTIME_KUMA_API_KEY or username/password).
Returns raw Prometheus exposition format. Useful for AI to parse monitor_status, monitor_response_time.
No params.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation read-only, idempotent, and non-destructive; the description adds genuine extra context by disclosing the auth requirement (API key or username/password) and the raw Prometheus exposition return format. No behavioral surprises are hidden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: endpoint, auth, return format, use case, and parameter count. The most important facts are front-loaded and the whole description is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only fetch with no output schema, the description is complete: it names the endpoint, states the authentication needed, describes the return format, and gives a parsing use case. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema properties are empty, so there is no parameter meaning to add. The explicit 'No params' statement reinforces the schema and leaves no ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fetch Prometheus metrics from /metrics'. This clearly distinguishes the tool from siblings like uptime_kuma_get_monitor or uptime_kuma_get_heartbeats, which target individual monitors or heartbeat history rather than the Prometheus exposition endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for AI to parse monitor_status, monitor_response_time' gives concrete context for when to call this tool. It does not explicitly name alternatives or state when not to use it, but the use case is clear enough for routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_get_monitorGet Uptime Kuma MonitorARead-onlyIdempotent
Get single monitor details by ID.
Args:
monitor_id (int): ID from list_monitors
response_format: markdown or json
Returns all fields (type, url, interval, status, tags). Use when: need edit/delete/pause context.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | Monitor ID (integer) | |
| response_format | No | markdown or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by listing the returned fields ('type, url, interval, status, tags') and framing the tool as a supporting read before mutations. It does not add further details like error behavior, but the annotations lower the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tight, front-loaded with the core purpose, and structured into clear sections: the one-line summary, args, returns, and a usage hint. Every sentence is useful and no filler exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read-only fetch with only two parameters and no output schema, the description covers inputs, output fields, and the decision context. It stops short of addressing not-found or error behavior, which would make it fully complete, but the low complexity and rich annotations make this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds semantic value beyond the schema by noting monitor_id is 'ID from list_monitors,' which tells the agent where to source valid IDs. The response_format parameter is simply restated, matching the schema, so not much extra there.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Get single monitor details by ID.' It distinguishes the tool from sibling list_monitors by specifying 'single' and requiring an ID, so an agent can immediately tell this tool provides item-level detail rather than a collection listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a use case: 'Use when: need edit/delete/pause context.' This gives clear decision guidance. However, it does not explicitly mention when not to use the tool or name alternative tools, such as list_monitors for overviews or get_heartbeats for time-series data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_get_statusGet Uptime Kuma Monitor StatusARead-onlyIdempotent
Get uptime ratio and avg ping for a monitor over a period.
Args:
monitor_id
period_hours (default 24)
response_format
Returns: uptime (0-1), avgPing ms, computed from heartbeats if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | Monitor ID | |
| period_hours | No | Period for uptime calc | |
| response_format | No | markdown or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavior by noting that uptime and avgPing may be 'computed from heartbeats if needed', which hints at a fallback computation path beyond simple stored-value retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a purpose sentence, an Args list, and a Returns line. It contains no fluff, though the Args list partially duplicates the schema's already-available parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description appropriately states the return values (uptime as 0-1, avgPing in ms, and the heartbeat computation note). For a low-complexity read-only tool, this is sufficient context; missing edge-case or error behavior is not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage and documents monitor_id, period_hours, and response_format with types, defaults, and bounds. The description only restates the parameter names and the period_hours default, adding no extra semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation: get uptime ratio and avg ping for a monitor over a period. This is clear and distinct from sibling tools like listing monitors or fetching raw heartbeats, though it does not explicitly name or contrast any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for aggregate uptime/ping queries over a time window, but it gives no explicit when-to-use or when-not-to-use guidance. Sibling tools such as uptime_kuma_get_heartbeats or uptime_kuma_get_metrics are not referenced, so an agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_list_monitorsList Uptime Kuma MonitorsARead-onlyIdempotent
List monitors from Uptime Kuma with pagination and optional search.
Args:
limit (1-100, default 20): max to return
offset (default 0): skip N for pagination
search (optional): filter name/type substring
response_format: markdown (default) or json
Returns paginated list with has_more/next_offset. Use when: "show my monitors", "list http monitors", "what do I monitor?" Don't use when: you need single monitor details (use uptime_kuma_get_monitor).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max monitors to return (1-100) | |
| offset | No | Skip N monitors for pagination | |
| search | No | Filter by name/type substring (case-insensitive) | |
| response_format | No | markdown or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating that results are paginated and include has_more/next_offset, which is not visible in the input schema or annotations. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a one-sentence summary, a concise parameter list, a short return note, and clear usage guidance. Each section earns its place and the most important usage guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by noting the paginated return shape with has_more/next_offset and the response_format option. It provides enough context for an agent to understand what the tool returns, though it does not enumerate monitor fields in the response; this is a minor gap for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters accurately. The description briefly restates limit, offset, search, and response_format, which helps readability but adds no meaning beyond the schema. Baseline 3 is appropriate for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists monitors from Uptime Kuma with pagination and optional search, and the description explicitly distinguishes it from uptime_kuma_get_monitor by noting that single-monitor details should use the sibling tool. The specific verb-resource pair leaves no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Use when' examples ('show my monitors', 'list http monitors') and a direct 'Don't use when' clause naming uptime_kuma_get_monitor provide unambiguous selection criteria. This is exactly the level of guidance needed for an agent to choose between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_list_notificationsList Uptime Kuma NotificationsARead-onlyIdempotent
List notification channels (Slack, email, Telegram, etc.) configured in Uptime Kuma.
Returns id/name/type/active. Use when wiring monitor to notification.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the returned fields and confirms it lists configured channels, but it does not disclose deeper behavior such as pagination, ordering, or response structure beyond the field names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences: what the tool does, what it returns, and when to use it. Every sentence earns its place with no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one optional parameter, the description is complete: it states the resource, the return fields, and the intended use. The output schema is absent, but the described return fields fill that gap adequately, and annotations cover safety semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter, response_format, and the schema already describes it fully with an enum and default ('markdown or json'). The description adds no additional parameter meaning, so the baseline of 3 applies given 100% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'List notification channels ... configured in Uptime Kuma.' It also lists what is returned (id/name/type/active), which makes the operation unmistakable and distinguishes it from sibling monitor-focused tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when wiring monitor to notification' gives a clear, concrete trigger for when this tool is relevant. It does not explicitly name alternatives or when-not-to-use conditions, but the resource distinction is clear enough from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_list_status_pagesList Uptime Kuma Status PagesARead-onlyIdempotent
List public status pages.
Returns id/slug/title/published.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown or json | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful information beyond the annotations by revealing the exact return shape (id/slug/title/published) and restricting the scope to public pages. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: the action is front-loaded and the return fields are stated concisely. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity optional-parameter list tool, the description provides enough context: the action, the scope, and the absence of an output schema is compensated by listing returned fields. The annotation set covers safety and idempotence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, response_format, is fully described in the schema with a default and enum; schema coverage is 100%. The description adds no parameter-level detail, but none is needed because the schema already carries the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a distinct resource ('public status pages'), and it specifies the returned fields (id/slug/title/published). This is enough to distinguish it from sibling tools like uptime_kuma_list_monitors or uptime_kuma_get_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is clear: call this tool to enumerate public status pages. It does not state when not to use it or name alternatives, but the resource is unique among the siblings, so an agent can select it without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_pause_monitorPause Uptime Kuma MonitorAIdempotent
Pause heartbeat checks for a monitor (sets active=false).
Args: monitor_id
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | Monitor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety and mutation profile is known. The description adds the specific behavioral detail that the tool sets active=false, which is helpful, but it does not disclose potential side effects such as whether paused monitors stop all notifications or whether pausing an already-paused monitor errors. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, stating the primary action and exact state change in the first sentence. The 'Args: monitor_id' line is somewhat redundant with the schema, so it does not fully earn its place, but the overall length is appropriate and easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, state-changing tool with rich annotations and a clear sibling set, the description provides enough information for an agent to invoke it correctly. It might benefit from explicitly noting that pausing is reversible via resume_monitor, but the core behavior, parameter usage, and mutation profile are adequately covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single parameter monitor_id with type, minimum, and description, so schema coverage is 100%. The description only repeats 'Args: monitor_id' without adding meaning beyond the schema, which meets the baseline of 3 but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Pause') and resource ('heartbeat checks for a monitor'), and the parenthetical 'sets active=false' makes the operational effect unambiguous. This distinguishes it from sibling tools like delete or edit, because pausing is a reversible state change rather than a destructive or structural modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose is clear enough that an agent can infer when to use it: when a monitor should be temporarily suspended from heartbeat checks. However, the description does not explicitly mention when not to use it, nor does it point to the sibling resume_monitor as the counterpart for re-enabling. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uptime_kuma_resume_monitorResume Uptime Kuma MonitorAIdempotent
Resume a paused monitor.
Args: monitor_id
| Name | Required | Description | Default |
|---|---|---|---|
| monitor_id | Yes | Monitor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, idempotent, non-destructive operation. The description adds the useful precondition that the monitor should be paused, but does not disclose additional behavior such as what happens if the monitor is already running or whether the monitor immediately resumes checking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the core action clearly. The 'Args: monitor_id' line is slightly redundant with the schema, but the overall definition contains no fluff and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with annotations covering idempotency and destructiveness, the description is largely sufficient. It clearly states the action and the required identifier, though it could have added a brief note about the expected behavior or response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with monitor_id described as 'Monitor ID'. The description only repeats 'Args: monitor_id' and adds no meaning beyond the schema, so it earns the baseline score for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Resume') and a specific resource ('a paused monitor'), clearly identifying the tool's action. It is unambiguously distinct from its sibling pause_monitor because it targets the opposite state, so an agent can differentiate the tools without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given about when to use this tool versus alternatives. The phrase 'a paused monitor' implies the tool is for monitors that are currently paused, but the description does not state exclusions or direct the agent to pause_monitor for the opposite operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource/action: monitors are separated into list/get/create/edit/delete/pause/resume, while health data is split into heartbeats, status, and metrics. Notifications and status pages are clearly separate read-only listing tools, so there is little risk of misselection.
All tools follow the same uptime_kuma_ prefix with a consistent verb_noun structure in snake_case: list_monitors, get_monitor, create_monitor, edit_monitor, delete_monitor, pause_monitor, resume_monitor. The naming pattern is uniform and predictable.
Twelve tools is well-scoped for an Uptime Kuma server, covering monitor lifecycle, operational controls, health data, notifications, status pages, and metrics. Each tool fills a distinct role with no obvious redundancy.
Monitor CRUD, pause/resume, heartbeats, uptime status, and metrics provide strong lifecycle coverage for core monitoring workflows. The main gap is that notifications and status pages only have list operations, with no create/update/delete tools, though this is workable for read-oriented usage.
Maintenance
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
Monitor websites, APIs, and servers: create monitors, triage incidents, and query uptime stats.
Uptime monitoring: create and manage HTTP, API, SSL, ping, port and domain checks
Set up uptime monitoring from your editor: create checks, configure alerts, query uptime history.
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to interact with Uptime Agent monitoring system to check uptime status, manage incidents, create new monitors, and analyze downtime through natural conversation.71
- AlicenseNot gradedqualityBmaintenanceConnects AI assistants to IonHour uptime monitoring workspaces to manage projects, monitoring checks, and incident responses. It enables users to view reliability metrics, send heartbeats, and manage status pages through natural language.51MIT
- AlicenseBqualityDmaintenanceEnables unified management of maintenance windows and incidents across Atlassian Statuspage and Uptime Kuma. It allows AI assistants to schedule maintenance, update service statuses, and list monitors through a single MCP-compatible interface.9MIT
- AlicenseAqualityAmaintenanceMCP server for Uptime Kuma that enables monitoring and management of uptime monitors, heartbeats, notifications, tags, and maintenance windows via natural language.3144747MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mehbul/uptime-kuma-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server