mcp -uptime -kuma (英语)
A 类 示范背景协议(MCP) 用于服务器 时间库马 版本 2。支持 stdio 和可流的 HTTP 传输.
特征
- 实时监测:通过Socket访问显示器,心跳,上升时间,以及响应度量. 有即时状态变化通知的IO.
- 亲切地: 默认只返回必要的数据来避免压倒性 LLM 上下文窗口.
- 多重运输:支持stdio(局部)和可流的HTTP(远地)运输.
快速启动
使用 npx( stdio 传输)
将此添加到您的 MCP 客户端配置 :
{
"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"
}
}
}
}
留着 @latest 后缀。 没有它,npx会重新使用它第一次运行时缓存的任何版本,并且永远不会取出新的发行.
使用 Docker( 可流式 HTTP 运输)
选项1: Docker 运行
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
备选案文2:多克作曲
A 类 docker-compose.yml (英语) 文件在仓库中提供。 下载,配置环境变量并运行:
docker compose up -d
然后配置您的 MCP 客户端连接到终点 :
{
"mcpServers": {
"uptime-kuma": {
"url": "http://localhost:3000/mcp"
}
}
}
见 认证方法 用于 JWT 标志和匿名认证选项.
上面的终点是未经认证的. 任何能到达港口的人 3000都满了 读取/写入您的 Uptime Kuma 实例控制 。 见 保护 HTTP 端点 在暴露在本地主机之外之前.
示例对话
对话 自由聊天 地点 mcp-uptime-kuma 服务器提供来自 Uptime Kuma 的实时信息.
可用工具
监视器
| 工具 | 目的 |
|---|---|
getMonitorSummary | 快速综述所有显示器的现状. 支持过滤. |
listMonitors | 获取所有配置显示器的完整列表 。 支持过滤. |
listMonitorTypes | 获取Uptime Kuma支持的所有可用的监视器类型 . |
getMonitorTypeFields | 获得一个显示器类型的所需和可选字段:每个字段的含义和接受,无论是在顶层还是在 typeFields,并应用了默认值. |
getMonitor | 用 ID 获取特定显示器的详细配置 . |
createMonitor | 创建任何类型的新显示器(需要名称、类型和任何类型检查,例如. url 用于 http或 hostname 为平. 包括 HTTP 认证在内的特定类型字段进入 typeFields。 。 。 . |
updateMonitor | 更新现有显示器的配置,包括更改其类型的位置(保持ID和历史). |
deleteMonitor | 永久删除显示器及其所有心跳历史 . |
pauseMonitor | 暂停显示器停止检查 . |
resumeMonitor | 恢复暂停显示器以重新启动检查 . |
心动
| 工具 | 目的 |
|---|---|
listHeartbeats | 检查所有监视器的状态历史 . |
getHeartbeats | 为特定显示器获取状态检查历史 . |
通知
| 工具 | 目的 |
|---|---|
listNotifications | 列出所有已配置的通知频道( Slack, Discord, 电子邮件, webhooks等) . |
addNotification | 创建新通知频道 . |
updateNotification | 更新已有的通知通道 . |
deleteNotification | 永久删除通知通道 . |
标记
| 工具 | 目的 |
|---|---|
listTags | 列出 Uptime Kuma 中定义的所有标记 . |
addTag | 创建一个可以指派给监视器的新标签 . |
deleteTag | 永久删除标签( 从所有显示器中删除) . |
维修
| 工具 | 目的 |
|---|---|
getMaintenanceWindows | 列出所有维护窗口,每个窗口都有监视器. |
createMaintenance | 安排一个新的维护窗口, 并附加它压制的监视器 . |
updateMaintenance | 更改维护窗口的日程、 细节或监视器列表 . |
pauseMaintenance | 关闭维护窗口( 结束手动窗口) . |
resumeMaintenance | 切换暂停维护窗口返回( 启动手动窗口) . |
deleteMaintenance | 永久删除维护窗口 . |
状态页面和设置
| 工具 | 目的 |
|---|---|
listStatusPages | 列出所有已配置的状态页面 . |
getSettings | 获取 Uptime Kuma 服务器设置 . |
特定类型监视器字段
createMonitor 财务报告和审定财务报表 updateMonitor 声明显示器使用最多的字段( e)url, (中文(简体) ), hostname, (中文(简体) ),
port, (中文(简体) ), keyword, (中文(简体) ), interval,.)作为普通论证. 一种特有的东西
监视器放入单个 typeFields 对象 :
createMonitor({ name: "API", type: "http", url: "https://api.example.com/health",
typeFields: { bearer_token: "…" } })
createMonitor({ name: "Broker", type: "mqtt", hostname: "mqtt://broker.example.com", port: 1883,
typeFields: { mqttTopic: "sensors/#" } })
getMonitorTypeFields({ type }) 列出类型需要什么并接受。 田地不开
工具定义:约有85个,工具定义已加载
无论是否创建了监视器. typeFields 仍然是
经验证的——拒绝一个未知名称或差值,建议采用可接受的拼写.
getMonitor 返回显示器顶层的这些字段,因为 Uptime Kuma 保存它们.
换一个,传进去 typeFields。 。 。 .
过滤
getMonitorSummary 财务报告和审定财务报表 listMonitors 支持过滤方式:
- 关键词: 用于模糊匹配显示器路径的空格分隔关键字Name
- 类型: 监视器类型,逗号分隔(例如,
"http", (中文(简体) ),"http,ping,dns"(中文(简体) ) - 活动: 按活动过滤( N)
true)或不活动(false) 监视器 - 维修: 通过维护模式状态过滤
- 标记:标签名称和可选值,以逗号分隔(例如,
"production", (中文(简体) ),"env=staging"(中文(简体) ) - 父目录: 组监视器ID, 返回该组的 直接 孩子们 过
null用于顶级显示器(没有父母的显示器)。 而不是自相残杀——走得更深,使用每个儿童组自己的childrenIDs。 。 。 . - 状态 (只收监控摘要): 心跳状态
"0"都灵,"1"=UP,(美国),"2"等待着,"3"=保养)
实例:
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
认证方法
匿名认证
如果在您的 Uptime Kuma 实例上无法认证, 仅此一项 UPTIME_KUMA_URL 需要时间.
用户名/ 名词认证
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
JWT 托肯认证
建议2FA用户使用. 如果两者都提供,则优先于用户名/密码.
UPTIME_KUMA_URL=http://your-instance:3001
UPTIME_KUMA_JWT_TOKEN=your_jwt_token
获取您的 JWT 脚本
使用 CLI 工具( 建议 ):
npx -p @davidfuchs/mcp-uptime-kuma@latest mcp-uptime-kuma-get-jwt http://localhost:3001 admin mypassword
使用 Docker 键 :
docker run --rm davidfuchs/mcp-uptime-kuma:latest get-jwt http://host.docker.internal:3001 admin mypassword
从浏览器 : 打开开发工具 → 存储/应用 → 本地存储 → 找到 token 键.
认证代理服务器( Cloudflare 访问等)
如果Uptime Kuma 站在一个需要自己证书的代理商后面——一个Cloudflare Zero Trust
访问应用程序, oauth2- 代理, 一个 API 网关—— set UPTIME_KUMA_HEADERS 对 JSON 对象
每个请求都会发送信头. 它与上述任何一种方法结合,这些方法仍然处理
登入到Uptime Kuma本身.
对于 Cloudflare 访问, 创建服务符号, 添加一个 服务 Auth 政策: 允许它,然后:
UPTIME_KUMA_URL=https://uptime.example.com
UPTIME_KUMA_HEADERS={"CF-Access-Client-Id":"<client-id>.access","CF-Access-Client-Secret":"<client-secret>"}
UPTIME_KUMA_USERNAME=your_username
UPTIME_KUMA_PASSWORD=your_password
在 MCP 客户端的 JSON 配置中, 值是一个字符串, 因此内引号需要逃脱 :
"UPTIME_KUMA_HEADERS": "{\"CF-Access-Client-Id\":\"<client-id>.access\",\"CF-Access-Client-Secret\":\"<client-secret>\"}"
mcp-uptime-kuma-get-jwt 读取相同的变量。 一个错误的值在服务器启动时停止
错误命名错误头; 头值永远不会被记录.
仅读模式
只披露报告的工具,而不披露创建、更改、暂停或删除的工具:
UPTIME_KUMA_READ_ONLY=true
写作工具完全没有注册,所以不能被调用,也不能占用空间
谈话。 尚剩13个工具: get… 财务报告和审定财务报表 list… 工具,减
getMonitorTypeFields,只为写作工具服务。 这限制了 MCP 服务器的内容
提供;它不会改变Uptime Kuma账户本身允许做的事情.
保护 HTTP 端点
适用于 -t streamable-http 只有这个 铁道运输没有听者保护
按照《多边协议》的规定,从环境中获取其证书.
任何人谁可以达到 /mcp 拥有您 Uptime Kuma 实例的全读/写控制,
包括删除显示器。 两个设置守护它, 和两个默认允许
升级不能中断已有的部署 - 服务器在启动时在此状态下警告 .
| 变量 | 默认 | 目的 |
|---|---|---|
MCP_AUTH_TOKEN | 未设置( 没有认证) | 共同的秘密 呼叫者必须作为 Authorization: Bearer <token>。任何其它东西 401。 。 。 . |
ALLOWED_ORIGIN | * (无验证) | 允许调用浏览器来源的逗号分隔列表 /mcp要求 Origin 未列出 403。请求无 Origin 头(每个本地的MCP客户端)总是被允许. |
HOST | 0.0.0.0 | 要装订地址 设定为 127.0.0.1 当在容器外运行时. |
PORT | 3000 | 开口听. |
TRUST_PROXY | 未设定( 无信任) | 信托 X-Forwarded-For 从服务器前的倒置代理,因此在真实的客户端IP上的速率限制键而不是代理的. 接受跳动计数( E)1, (中文(简体) ), true编号 :false,或 IP/子网列表 - 见 快递 trust proxy 文档。 。 。 . |
/health 故意留下未经认证的 所以容器健康检查和负载平衡器
探测器继续工作 它只报道活泼.
设置符号
生成一个高通密语 - 这是一个密码, 并不断比较, 所以长度是唯一能保护它的东西:
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
客户端随后作为信头发送:
{
"mcpServers": {
"uptime-kuma": {
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer your_generated_secret"
}
}
}
}
为什么 Origin 单独审定事项
一个共同的秘密阻止了任何无法展示它的人. 它不会停止浏览器的网站
已经信任 。 在DNS重装攻击下 evil.example 解决自己的问题
主机名改为 127.0.0.1,所以浏览器将给本地服务器的请求视为同一来源
- 飞行前没有发生,CORS从不适用. 服务器比较
Origin标头 根据一份预期来源清单发送的单子 是唯一留下的支票,这就是为什么 mCP的规格使得它成为一个必须的而不是应该的.
如果你只使用本地客户,离开 ALLOWED_ORIGIN 未设定的花费你什么; 那些
客户端发送不 Origin 头曰. 如果您使用基于浏览器的客户端, 请列出其来源 :
ALLOWED_ORIGIN=https://librechat.example.com,http://localhost:5173
运行在反向代理后
无 TRUST_PROXY,Express认为每一个请求都是来自代理的IP,所以
速率限制器将您的客户端放入一个共享的100个请求桶并启动
返回的虚假 429一旦他们中任何一个的流量增加.
设定 TRUST_PROXY 以读取
真实客户端 IP from X-Forwarded-For 相反:
TRUST_PROXY=1
只有在您控制的一个代理服务器实际在那里脱去并重新设置时才设置此选项
头曰. 如果服务器也可以直接到达,或者代理通过
随便啦 X-Forwarded-For 它接收到,客户端可以伪造那个信头来获取新鲜的
每个请求都有限价桶,完全击败了限价桶.
信用编辑
读取工具返回 *** 而不是价值本身.
Uptime Kuma 的 socket API 返回配置 paltic - 其网络 UI 口罩证书在 提供时间。 这对浏览器是罚款的,对MCP服务器是罚款的,其输出登陆 在 LLM 上下文窗口中,然后在谈话记录、日志和 同步历史 。 问"我在监视什么?"不应该写一个SMTP的活口令或者一个 第三方 API 密钥输入存储中, 您可能无法控制 .
扣留的:
| 工具 | 无控件 |
|---|---|
listNotifications | 所有的东西 config 除外 type编号 :name编号 :isDefault编号 :applyExisting。所扣的字段名称列于 redactedConfigKeys |
listMonitors, (中文(简体) ), getMonitor | pushToken, (中文(简体) ), basic_auth_pass, (中文(简体) ), bearer_token, (中文(简体) ), oauth_client_secret, (中文(简体) ), radiusPassword, (中文(简体) ), radiusSecret, (中文(简体) ), mqttPassword, (中文(简体) ), rabbitmqPassword, (中文(简体) ), gamedigToken, (中文(简体) ), sshPassword, (中文(简体) ), sshPrivateKey, (中文(简体) ), sshPassphrase密码 kafkaProducerSaslOptions, (中文(简体) ), user:pass@ 内部 rabbitmqNodes, (中文(简体) ), tlsCert编号 :tlsKey编号 :tlsCa, (中文(简体) ), databaseConnectionString, (中文(简体) ), headers, (中文(简体) ), grpcMetadata,加上任何匹配“/通过”的选项 |
listDockerHosts | user:password@ 内置 a dockerDaemon 網址 |
getHeartbeats, (中文(简体) ), listHeartbeats | 任意一列 Uptime Kuma 返回超过已声明的心跳字段(例如:. response,它可以携带一个服务的反应机)被放弃,并且 user:password@ 在状态信件中引用的 URL 中被擦除 |
getSettings | 任何密名字段 Uptime Kuma 返回(例如. steamAPIKey(中文(简体) ) |
getMonitorSummary | 无 - 它没有返回证书开始 |
hostname, (中文(简体) ), port, (中文(简体) ), url, (中文(简体) ), authMethod, (中文(简体) ), oauth_token_url, (中文(简体) ), oauth_scopes 并保留用户名
可见:隐藏有用的配置是编辑功能如何被关闭.
要得到真正的价值,要么通过 includeSecrets: true 电话:
listNotifications({ includeSecrets: true })
或使之能在全球:
UPTIME_KUMA_INCLUDE_SECRETS=true
按呼参数双向胜过环境变量,所以 允许的部署仍可要求一个电话进行修改.
写入 *** 回来是安全的. updateMonitor 财务报告和审定财务报表 updateNotification 恢复存储
当一个字段作为标记到达时值,并报告保存的字段。 这个
问题 updateNotification: Uptime Kuma 替换通知行而不是
合并它,所以没有这个 读取-编辑-写作的往返 将取代工作密码
有三颗星号 如果没有存储值要恢复, 调用失败而非
写一个看起来已经设定而且无法工作的证书.
按键通过设置它们的呼叫返回. createMonitor 返回时
新建推力显示器的指向和调试 URL,以及 updateMonitor 当它改变时做同样的事情
显示器的类型的推, 因为发送器不能被窃听 没有它们。 后读
像其他任何秘密一样 重新编辑信使.
在 URL 中写入的证书获得同样的保护: url 显示器
条目 rabbitmqNodes,则 dockerDaemon 一个插座主机。 A 类 http://***:***@host:2375
从读取工具读取后, 它的用户信息会从存储的 URL 恢复, 而不是坚持
逐字,所以编辑路径或方案而未再入会证并不能抹去.
存储的证书只恢复到主机和存储端口. 发送
http://***:***@another-host 拒绝,而不是恢复,因为那将带来
密码你从来没有显示到 呼叫者选择的地址。 指向显示器或
在新地址的 docker 主机, 传递真实的证书 连同它.
MCP日志通道得到同样的规则. 实时心跳的调试日志报告
仅按长度监视服务状态信息( e)msgLength=...),从不包含内容,因为
该消息可以回放一个嵌入式的目标 URL user:password@ 或部分反应
记录通知会送达客户.
LibreChat 配置
运输:
mcpServers:
uptime-kuma:
command: npx
args: ["-y", "@davidfuchs/mcp-uptime-kuma@latest"]
env:
UPTIME_KUMA_URL: "http://your-instance:3001"
UPTIME_KUMA_USERNAME: "your_username"
UPTIME_KUMA_PASSWORD: "your_password"
serverInstructions: true
可流 HTTP 传输 :
将允许域更新到您在 URL 中使用的任意域( 例如 ), localhost 或者说 host.docker.internal docker 设置 :
mcpServers:
uptime-kuma:
type: streamable-http
url: "http://mcp-uptime-kuma:3000/mcp"
serverInstructions: true
mcpSettings:
allowedDomains:
- 'mcp-uptime-kuma'
捐款
关于开发设置、建筑、测试和项目结构,见 捐款额。 。 。 .
学习更多
警卫
报告弱点,请看 警卫。 。 。 .
免责声明
这是一个个人的,自由的,开源的侧式项目, 提供"现在" MIT 许可证没有任何保证 你安装和运行它 与你所控制的Uptime Kuma实例有关 这个 作者不对任何损害、数据损失、故障时间或其他 使用该物质所产生的后果。 自己冒险使用.
许可证
凭 MIT 许可证。 。 。 .