LabscoConnect MCP ↗
cfosstoMCP SERVER

Uptime Kuma MCP Open

Read your Uptime Kuma monitors, heartbeats and status pages from an assistant — reads only, nothing can be changed.

by cfossto ↗Observability, Monitoring & Incident ResponseCommunity

LABSCO SUMMARY

Safe to point at production, because it cannot write.

Read-only is the whole design here rather than a limitation to work around: you can hand it your live monitoring instance and ask what is down without any chance of a model editing a monitor. The README still offers a hosted version with write access through GryfAI, but also says GryfAI has since been scrapped. The licence is BSL, free for personal use and for small companies internally, with a stated intent to move to Apache 2.0 later; the author also says an automated test suite is still on the to-do list.

What it is

A Python MCP server that talks to your own Uptime Kuma instance and exposes a read-only slice of it to an LLM client over stdio.

What you get

  • Monitor status, both the whole list and an individual monitor
  • Monitor beats and heartbeats, for looking at what happened rather than only what is happening
  • Notifications, all of them or one at a time
  • Status pages, all or individual, plus status page maintenance
  • Tags, all or individual, and the database size
  • Every one of these is a read — this build cannot create, edit or delete anything

Requirements

Python 3.10+ and either uv or pip. Create a virtual environment, pip install . into it, and set UPTIME_KUMA_URL (default http://localhost:3001), UPTIME_KUMA_USERNAME and UPTIME_KUMA_PASSWORD in the shell or a .env file. The client then launches python -m mcp_uptime_kuma_open.server; if the client runs outside the venv, give it the full path to that interpreter.

Setup effort

Build from source — git clone https://github.com/cfossto/mcp-uptime-kuma-open.git

USE CASES

01

Asking what is down right now

Pull the status of all monitors and have the assistant name the ones that are failing.

02

Reconstructing last night's incident

Read the heartbeats for the affected monitor and line them up against when the alerts fired.

03

Checking the instance itself is healthy

Read the database size and the configured notifications, so a silent alerting channel does not stay silent.

BEFORE YOU INSTALL

What to know first

Requires

  • python on PATH
  • UPTIME_KUMA_PASSWORD in your environment
  • UPTIME_KUMA_USERNAME in your environment

INSTALLATION

Choose how to get started.

This one is built from source rather than installed with a single command.

Direct Install

TERMINALHide code
git clone https://github.com/cfossto/mcp-uptime-kuma-open.git
cd mcp-uptime-kuma-open
python3 -m venv .venv
source .venv/bin/activate
pip install .

Set UPTIME_KUMA_URL, UPTIME_KUMA_USERNAME and UPTIME_KUMA_PASSWORD in your shell or in a .env file in the project root

If your MCP client runs outside the virtual environment, use the full path to .venv/bin/python instead of python in the configuration

MCP Clients

Only the clients this project documents.

Gemini CLI, Claude Code

JSONShow code
{
  "mcpServers": {
    "uptime-kuma": {
      "command": "python",
      "args": [
        "-m",
        "mcp_uptime_kuma_open.server"
      ]
    }
  }
}

The configuration on this page does not set UPTIME_KUMA_PASSWORD and UPTIME_KUMA_USERNAME; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.

Codex

CODEX · TERMINALShow code
codex mcp add uptime-kuma python -m mcp_uptime_kuma_open.server

Claude Desktop

CLAUDE DESKTOP · JSONShow code
{
  "mcpServers": {
    "uptime-kuma": {
      "command": "<YOUR_PATH_TO_ROOT_FOLDER_PROJECT>/mcp-uptime-kuma-open/.venv/bin/python",
      "args": [
        "-m",
        "mcp_uptime_kuma_open.server"
      ]
    }
  }
}

The configuration on this page does not set UPTIME_KUMA_PASSWORD and UPTIME_KUMA_USERNAME; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.