Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
A Model Context Protocol (MCP) server for Uptime Kuma version 2.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
UPTIME_KUMA_URL, UPTIME_KUMA_USERNAME, UPTIME_KUMA_PASSWORD, UPTIME_KUMA_2FA_TOKEN, UPTIME_KUMA_JWT_TOKEN, UPTIME_KUMA_HEADERS标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"uptime-kuma": {
"command": "npx",
"args": [
"-y",
"@davidfuchs/mcp-uptime-kuma"
],
"env": {
"UPTIME_KUMA_URL": "your-value",
"UPTIME_KUMA_USERNAME": "your-value",
"UPTIME_KUMA_PASSWORD": "your-value",
"UPTIME_KUMA_2FA_TOKEN": "your-value",
"UPTIME_KUMA_JWT_TOKEN": "your-value",
"UPTIME_KUMA_HEADERS": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add uptime-kuma --env UPTIME_KUMA_URL=your-value --env UPTIME_KUMA_USERNAME=your-value --env UPTIME_KUMA_PASSWORD=your-value --env UPTIME_KUMA_2FA_TOKEN=your-value --env UPTIME_KUMA_JWT_TOKEN=your-value --env UPTIME_KUMA_HEADERS=your-value -- npx -y @davidfuchs/mcp-uptime-kuma运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"uptime-kuma": {
"command": "npx",
"args": [
"-y",
"@davidfuchs/mcp-uptime-kuma"
],
"env": {
"UPTIME_KUMA_URL": "your-value",
"UPTIME_KUMA_USERNAME": "your-value",
"UPTIME_KUMA_PASSWORD": "your-value",
"UPTIME_KUMA_2FA_TOKEN": "your-value",
"UPTIME_KUMA_JWT_TOKEN": "your-value",
"UPTIME_KUMA_HEADERS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"uptime-kuma": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@davidfuchs/mcp-uptime-kuma"
],
"env": {
"UPTIME_KUMA_URL": "your-value",
"UPTIME_KUMA_USERNAME": "your-value",
"UPTIME_KUMA_PASSWORD": "your-value",
"UPTIME_KUMA_2FA_TOKEN": "your-value",
"UPTIME_KUMA_JWT_TOKEN": "your-value",
"UPTIME_KUMA_HEADERS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
UPTIME_KUMA_USERNAME env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 DavidFuchs 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:UPTIME_KUMA_URL, UPTIME_KUMA_PASSWORD, UPTIME_KUMA_2FA_TOKEN, UPTIME_KUMA_JWT_TOKEN, UPTIME_KUMA_HEADERS
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.12.1)于19天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Qemu MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Boot and drive QEMU VMs from an AI agent: keys, screenshots, serial. No guest agent.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
A Model Context Protocol (MCP) server for Uptime Kuma *version 2*. Supports stdio and streamable HTTP transports.
Add this to your MCP client configuration:
{
"mcpServers": { "uptime-kuma": { "command": "npx", "args": ["-y", "@davidfuchs/mcp-uptime-kuma@latest"], "env": { "UPTIME_KUMA_URL": "http://your-uptime-kuma-instance:3001", "UPTIME_KUMA_USERNAME": "your_username", "UPTIME_KUMA_PASSWORD": "your_password" } } } }
Keep the @latest suffix. Without it, npx reuses whatever version it cached the first time it ran and never picks up new releases.
Option 1: Docker Run
docker run -d \
--name mcp-uptime-kuma \ -p 3000:3000 \ -e UPTIME_KUMA_URL=http://your-uptime-kuma-instance:3001 \ -e UPTIME_KUMA_USERNAME=your_username \ -e UPTIME_KUMA_PASSWORD=your_password \ davidfuchs/mcp-uptime-kuma:latest \ -t streamable-http
Option 2: Docker Compose
A docker-compose.yml file is provided in the repository. Download it, configure your environment variables, and run:
docker compose up -d
Then configure your MCP client to connect to the endpoint:
{
"mcpServers": { "uptime-kuma": { "url": "http://localhost:3000/mcp" } } }
See Authentication Methods for JWT token and anonymous authentication options.
The endpoint above is unauthenticated. Anyone who can reach port 3000 gets full
read/write control of your Uptime Kuma instance. See
Securing the HTTP Endpoint before exposing it beyond localhost.
*Conversation in LibreChat where the mcp-uptime-kuma server is providing real-time information from Uptime Kuma.*
| Tool | Purpose |
|---|---|
getMonitorSummary | Get a quick overview of all monitors with their current status. Supports filtering. |
listMonitors | Get the full list of all monitors with configurations. Supports filtering. |
listMonitorTypes | Get all available monitor types supported by Uptime Kuma. |
getMonitor | Get detailed configuration for a specific monitor by ID. |
createMonitor | Create a new monitor (requires name and type at minimum). |
updateMonitor | Update an existing monitor's configuration. |
deleteMonitor | Permanently delete a monitor and all its heartbeat history. |
pauseMonitor | Pause a monitor to stop performing checks. |
resumeMonitor | Resume a paused monitor to restart checks. |
| Tool | Purpose |
|---|---|
listHeartbeats | Get status check history for all monitors. |
getHeartbeats | Get status check history for a specific monitor. |
| Tool | Purpose |
|---|---|
listNotifications | List all configured notification channels (Slack, Discord, email, webhooks, etc.). |
addNotification | Create a new notification channel. |
updateNotification | Update an existing notification channel. |
deleteNotification | Permanently delete a notification channel. |
| Tool | Purpose |
|---|---|
listTags | List all tags defined in Uptime Kuma. |
addTag | Create a new tag that can be assigned to monitors. |
deleteTag | Permanently delete a tag (removes it from all monitors). |
| Tool | Purpose |
|---|---|
getMaintenanceWindows | List all maintenance windows, with the monitors each one covers. |
createMaintenance | Schedule a new maintenance window and attach the monitors it suppresses. |
updateMaintenance | Change a maintenance window's schedule, details, or monitor list. |
pauseMaintenance | Switch a maintenance window off (ends a manual window). |
resumeMaintenance | Switch a paused maintenance window back on (starts a manual window). |
deleteMaintenance | Permanently delete a maintenance window. |
| Tool | Purpose |
|---|---|
listStatusPages | List all configured status pages. |
getSettings | Get Uptime Kuma server settings. |
getMonitorSummary and listMonitors support filtering by:
"http", "http,ping,dns")true) or inactive (false) monitors"production", "env=staging")null for top-level monitors (those with no parent). Not recursive — to walk deeper, use each child group's own childrenIDs."0"=DOWN, "1"=UP, "2"=PENDING, "3"=MAINTENANCE)Examples:
getMonitorSummary({ status: "0" }) // All DOWN monitors
getMonitorSummary({ type: "http", maintenance: true }) // HTTP monitors in maintenance getMonitorSummary({ parentId: 12, status: "0" }) // What's down inside group 12 listMonitors({ tags: "production,region=us-east" }) // Monitors with specific tags listMonitors({ parentId: 12 }) // Direct children of group 12 listMonitors({ parentId: null }) // Top-level monitors only
If authentication is disabled on your Uptime Kuma instance, only UPTIME_KUMA_URL is required.
UPTIME_KUMA_URL=http://your-instance:3001
UPTIME_KUMA_USERNAME=your_username UPTIME_KUMA_PASSWORD=your_password UPTIME_KUMA_2FA_TOKEN=123456 # Optional, only if 2FA is enabled
Recommended for 2FA users. Takes precedence over username/password if both are provided.
UPTIME_KUMA_URL=http://your-instance:3001
UPTIME_KUMA_JWT_TOKEN=your_jwt_token
Using the CLI utility (recommended):
npx -p @davidfuchs/mcp-uptime-kuma@latest mcp-uptime-kuma-get-jwt http://localhost:3001 admin mypassword
Using Docker:
docker run --rm davidfuchs/mcp-uptime-kuma:latest get-jwt http://host.docker.internal:3001 admin mypassword
From browser: Open Developer Tools → Storage/Application → Local Storage → find token key.
If Uptime Kuma sits behind a proxy that demands its own credentials — a Cloudflare Zero Trust Access application, oauth2-proxy, an API gateway — set UPTIME_KUMA_HEADERS to a JSON object of headers to send on every request. It combines with any of the methods above, which still handle logging in to Uptime Kuma itself.
For Cloudflare Access, create a service token, add a *Service Auth* policy to the application that allows it, then:
UPTIME_KUMA_URL=https://uptime.example.com
UPTIME_KUMA_HEADERS={"CF-Access-Client-Id":" .access","CF-Access-Client-Secret":" "} UPTIME_KUMA_USERNAME=your_username UPTIME_KUMA_PASSWORD=your_password
In an MCP client's JSON config the value is a string, so the inner quotes need escaping:
"UPTIME_KUMA_HEADERS": "{\"CF-Access-Client-Id\":\"<client-id>.access\",\"CF-Access-Client-Secret\":\"<client-secret>\"}"
mcp-uptime-kuma-get-jwt reads the same variable. A malformed value stops the server at startup with an error naming the offending header; header values are never logged.
Applies to -t streamable-http only. The stdio transport has no listener to protect and takes its credentials from the environment, as the MCP specification prescribes.
Anyone who can reach /mcp has full read/write control of your Uptime Kuma instance, including deleting monitors. Two settings guard it, and both default to permissive so that upgrading cannot break an existing deployment - the server warns at startup in that state.
| Variable | Default | Purpose |
|---|---|---|
MCP_AUTH_TOKEN | unset (no authentication) | Shared secret that callers must present as Authorization: Bearer . Anything else gets 401. |
ALLOWED_ORIGIN | * (no validation) | Comma-separated list of browser origins permitted to call /mcp. A request whose Origin is not listed gets 403. Requests with no Origin header (every native MCP client) are always allowed. |
HOST | 0.0.0.0 | Address to bind. Set to 127.0.0.1 when running locally outside a container. |
PORT | 3000 | Port to listen on. |
TRUST_PROXY | unset (no trust) | Trust X-Forwarded-For from a reverse proxy in front of the server, so the rate limiter keys on the real client IP instead of the proxy's. Accepts a hop count (1), true/false, or an IP/subnet list - see Express's trust proxy docs. |
/health is deliberately left unauthenticated so container healthchecks and load balancer probes keep working. It reports nothing but liveness.
Generate a high-entropy secret - this is a password, and it is compared in constant time, so length is the only thing protecting it:
openssl rand -base64 32
docker run -d \
--name mcp-uptime-kuma \ -p 3000:3000 \ -e UPTIME_KUMA_URL=http://your-uptime-kuma-instance:3001 \ -e UPTIME_KUMA_JWT_TOKEN=your_jwt_token \ -e MCP_AUTH_TOKEN=your_generated_secret \ davidfuchs/mcp-uptime-kuma:latest \ -t streamable-http
Clients then send it as a header:
{
"mcpServers": { "uptime-kuma": { "url": "http://localhost:3000/mcp", "headers": { "Authorization": "Bearer your_generated_secret" } } } }
Origin validation matters separatelyA shared secret stops anyone who cannot present it. It does not stop a website your browser already trusts. Under a DNS rebinding attack a page on evil.example resolves its own hostname
只显示了开头部分;其余内容请在仓库中阅读