纯 Python / 零依赖第三方 API / 直接走 Minecraft 原生协议拿数据
GitHub: https://github.com/forgetmelodyXL/mc-monitor| MIT License
如果你开过 Minecraft 服(无论是和小伙伴私服还是社区公服),大概率遇到过同一类问题:
"服是不是挂了?"——只能靠群里有人喊,或者你自己去敲
telnet想看"最近半小时有没有人玩、延迟怎么样",基本靠猜
现成的监控方案要么偏重(Prometheus + Grafana),要么要你把服务端改成某种面板托管模式
所以我写了 MC Server Monitor(mc-monitor):一个轻量到离谱、但功能够用的 MC 服务器监控面板——单文件 SQLite、Flask 前端一体、双击就能跑起来。
它是什么(一句话)
MC Server Monitor 是一个通过 Minecraft SLP / Bedrock Raknet / HTTP(S) / TCP 直连探测服务器状态的监控面板。
不需要装 Bungee/Velocity/Paper 插件,不需要第三方 API Key,不需要改服务端——只要你能连到那个端口,它就能监控。
核心功能(你实际能用上的部分)
1) 多协议探测
Java 版:走标准的 Server List Ping (SLP) 拿 MOTD / 版本 / 在线人数 / 采样玩家
基岩版:Raknet 探测
非 MC 端口也能管:HTTP(S) 健康检查 / 通用 TCP 连通性
这样你可以顺手把配套服务(网站、API、数据库端口存活)也纳入同一面板。
2) 后台定时轮询 + 历史趋势
用 APScheduler 做后台采集(默认 60 秒一次),写进
status_logs前端用 Chart.js 双 Y 轴折线图同时看 在线人数 + 延迟(这个组合其实比单纯"在线/离线"有用得多)
3) 掉线 / 恢复告警(本地优先)
自动检测状态切换 → 弹窗告警 + 历史记录
后续路线里我还规划了 Telegram / 微信 / 邮件推送(Webhook 化是更稳的做法)
4) 用户 & 权限模型(但不重型)
多用户:每人管自己的服务器列表
公开 / 私有:你可以挑几个服放到公共主页给访客查(比如"我们生存服现在几个人")
管理后台:用户管理、服务器管理、注册开关、维护模式
密码用 PBKDF2-HMAC-SHA256 + 随机盐(20 万次迭代),会话 HttpOnly + SameSite=Lax(不是银弹,但在同机小工具里已经负责任)
为什么我选择这样做(设计取舍)
✅ 「零依赖第三方 API」是刻意设计
很多面板为了省事会走某个查询 API,但我更想要:
你给我 IP+端口,我自己探
不绑账号体系、不担心 API 挂掉、不用申请 key
本质就是:把 Minecraft 客户端"多人列表里点一下看到的信息",做成可轮询、可存历史、可可视化的版本。
✅ SQLite + 单文件 db,方便到离谱
mcmonitor.db在项目根目录迁移 = 拷文件
忘记密码 = 删库重跑(admin/admin)
对于私人/小团队场景,这比"先装 PostgreSQL 再搞 migration 再调权限"现实得多。
✅ 最低摩擦力启动(Windows 友好)
提供了三种路径:
快速上手(5 分钟内看到效果)
git clone https://github.com/forgetmelodyXL/mc-monitor.git
cd mc-monitor
pip install -r requirements.txt
python main.py
# 浏览器打开 http://127.0.0.1:5000默认管理员:admin / admin(第一次登录后请一定去管理后台改密码)
如果你想公网访问:
放行 5000 端口
强烈建议前面套一层 Nginx + HTTPS(Let's Encrypt)
README 里给了
systemd服务与 Nginx 反代示例
技术栈(不长,但够用)
架构也很直白:app.py承载路由/SLP/DB/CSRF/告警/迁移,main.py负责启动;模板在 templates/,静态资源在 static/。
我下一步打算做什么
路线图上优先级最高的是这几块(也欢迎反馈/PR):
告警通道外发:Telegram Bot / Webhook / 邮件(可插拔)
WebSocket 实时推送(减少轮询刷新带来的"看起来像静态页"的感觉)
Docker 官方镜像 +
docker-compose一步起i18n(中文/英文至少)
最后
这个项目定位不是"企业级观测平台",而是:
给服主 / 小社区一个 5 分钟能跑起来、不用改服务端、还能看历史趋势和掉线告警 的面板。
如果你也在管 MC 服、或者你公司内网里有某些"没人盯但一旦挂就很尴尬"的服务端口,可以试试把它丢进去当轻量哨兵。
⭐ GitHub:https://github.com/forgetmelodyXL/mc-monitor
Bug / 需求 / PR 都欢迎。