MCP服务器运行状况监视器
npm mcp-server-health-monitor 包
使用协议(而不仅仅是HTTP)的mcp本机运行状况监视。而不是ping端口,它调用 list_tools 在每个服务器上-与您的代理使用相同的握手-因此绿色状态意味着服务器实际上已准备好处理MCP请求。所有运行状况历史记录在SQLite中保持本地;不需要外部监控服务。
关键特性
- 自动发现:读取现有的MCP配置文件(Claude Desktop, Cursor, VS Code),无需额外设置。
- 非侵入性的探测:只打电话
list_tools在目标服务器上-只读,没有副作用。 - 版本漂移检测:跨检查比较工具模式,以检测服务器何时更新。
- 历史趋势:在SQLite中存储延迟历史;P50 /p95是按需计算的,从存储的历史到表面回归,直到它们成为中断。
- HTML仪表板:生成包含每个服务器正常运行时间火花线的独立运行状况指示板。
- 背景调查:作为守护进程运行,因此当您请求健康数据时,它始终是新鲜的。
为什么这优于一般的正常运行时间监视器?
一般的正常运行时间监视器(UptimeRobot, Pingdom, BetterStack)检查端口是否打开或HTTP端点是否返回200。这对MCP服务器来说还不够——服务器可以运行,但无法协商MCP协议或返回一个损坏的工具模式。
| mcp-server-health-monitor | 通用正常运行时间监视器 | |
|---|---|---|
| 探测法 | MCP list_tools 调用-测试实际协议 | HTTP ping或TCP端口检查 |
| 模式漂移检测 | 检测工具签名何时在不同版本之间发生变化 | 没有协议感知是不可能的 |
| 配置自动发现 | 自动读取克劳德桌面,光标,VS代码配置 | 每台服务器手动输入URL |
| 数据居住 | 本地SQLite;无外部服务 | 存储在供应商云中的健康数据 |
| 成本 | 免费的,自托管 | 免费等级有限;为历史/警报付费 |
如果您想知道您的MCP服务器是真正健康的—而不仅仅是“进程正在运行”—这是正确的工具。
需求
- Node.js v20.19或更新版本。
- npm。
开始
在MCP客户端中添加以下配置:
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": ["-y", "mcp-server-health-monitor@latest"]
}
}
}
监视器自动从它注册的同一配置文件中发现其他MCP服务器。不需要额外的设置。
MCP客户端配置
Amp·Claude Code·Cline·Cursor·VS Code·Windsurf·Zed
你的第一个提示
在您的MCP客户端中输入以下内容以验证一切正常:
Check the health of all my MCP servers.
客户端应该返回一个状态表,其中显示每个服务器的当前延迟和运行状况状态。
工具
运行状况检查(3个工具)
health_check_all-通过并行探测所有配置的服务器list_tools,测量延迟并存储结果。接受可选的timeout_ms参数(默认值:5000)。get_server_status-返回每台服务器的详细信息,包括延迟,最后看到的时间,24小时错误计数,最后错误消息和p50/p95延迟百分比。需要server_name。list_degraded—对离线或延迟超过阈值的服务器进行过滤。接受可选的latency_threshold覆盖。
历史(1个工具)
get_history-返回特定服务器的原始运行状况检查历史记录,顺序首先是最近的。需要server_name;接受可选limit(默认值:50,最大值:500)。
服务器注册表(2个工具)
configure_server-注册一个新的MCP服务器进行监控。以这种方式添加的服务器存储在~/.mcp/extra-servers.json并与自动发现的服务器合并。要求:name,command. 可选:args,env。remove_server-从监控中移除手动注册的服务器。只影响通过添加的服务器configure_server;自动发现的服务器不受影响。需要name。
更新(1个工具)
check_updates-通过在每个探测上散列工具模式并与最后存储的散列进行比较来检测版本漂移。返回has_changed,previous_hash,current_hash,changed_at每台服务器。
导出(1个工具)
export_dashboard-生成一个独立的单文件HTML仪表板,带有摘要卡,每台服务器状态表,p50/p95延迟,以及内联SVG正常运行时间火花线。接受可选的output_path写入磁盘。
手动服务器注册
除了从MCP配置文件自动发现之外,您还可以使用 configure_server 工具。写入手动注册的服务器 ~/.mcp/extra-servers.json (与健康数据库一起存储),并与每次探测时自动发现的服务器合并。
Add a server named "my-internal-tool" running with command "node" and args ["/opt/tools/server.js"]
停止监控手动注册的服务器。
Remove the server named "my-internal-tool" from monitoring
从Claude Desktop的配置中发现的服务器不能通过 remove_server -编辑您的MCP配置文件直接删除这些。
配置
--interval / --interval-seconds
轮询每个MCP服务器的频率,以秒为单位。
类型: number
默认值: 60
--latency-threshold
延迟时间(以毫秒为单位),超过该延迟时间服务器被标记为降级。
类型: number
默认值: 1000
--db / --db-path
用于存储运行状况历史记录的SQLite数据库文件的路径。
类型: string
默认值: ~/.mcp/health.db
--daemon
作为后台轮询守护进程运行。健康数据是连续收集的,而不是按需收集。
类型: boolean
默认值: false
--startup-grace-seconds
新启动的服务器被认为不健康之前的宽限期(以秒为单位)。
类型: number
默认值: 10
传递标志 args 属性在JSON配置中:
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": ["-y", "mcp-server-health-monitor@latest", "--interval=30", "--latency-threshold=500"]
}
}
}
上市
验证
在发布新版本之前,请使用MCP Inspector验证服务器,以确认所有工具都正确公开并且协议握手成功。
交互式用户界面 (打开浏览器):
npm run build && npm run inspect
CLI模式 (脚本/ ci友好):
# List all tools
npx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/list
# List resources and prompts
npx @modelcontextprotocol/inspector --cli node dist/index.js --method resources/list
npx @modelcontextprotocol/inspector --cli node dist/index.js --method prompts/list
# Call a tool (example — replace with a relevant read-only tool for this plugin)
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name health_check_all
# Call a tool with arguments
npx @modelcontextprotocol/inspector --cli node dist/index.js \
--method tools/call --tool-name health_check_all --tool-arg key=value
在发布之前运行,以在工具注册和运行时启动时捕获回归。
贡献
探针模块位于 src/probes/. 每个探测必须返回一个 ProbeResult 与 status, latencyMs,以及可选的 message. 将所有探针保持为只读-永远不会在被监视的服务器上触发副作用。
npm install && npm test