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
Asking what is down right now
Pull the status of all monitors and have the assistant name the ones that are failing.
Reconstructing last night's incident
Read the heartbeats for the affected monitor and line them up against when the alerts fired.
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
TERMINAL
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
JSON
{
"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 · TERMINAL
codex mcp add uptime-kuma python -m mcp_uptime_kuma_open.serverClaude Desktop
CLAUDE DESKTOP · JSON
{
"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.
A self-hosted homelab dashboard that also answers agents: a read-only MCP server rides in the same container on port 9810, with 19 named tools covering hosts, containers, GPUs, disks, costs and alerts.
Interact with the Honeybadger API for error and uptime monitoring.
Answer whether the site was down last night, from Pulsetic's own monitor history.
Operate Drumbeats cron/uptime monitors, incidents, and HTTP/SSL/DNS checks from any AI client.