mcp-server-health-monitor
MCP-native health monitoring that probes MCP servers using the list_tools protocol handshake, detects version drift, stores history in SQLite, and generates an HTML dashboard.
README
MCP Server Health Monitor
npm mcp-server-health-monitor package
MCP-native health monitoring that speaks the protocol, not just HTTP. Instead of pinging a port, it calls list_tools on each server — the same handshake your agent uses — so a green status means the server is actually ready to serve MCP requests. All health history stays local in SQLite; no external monitoring service required.
Tool reference | Configuration | Contributing | Troubleshooting
Key features
- Auto-discovery: Reads your existing MCP config files (Claude Desktop, Cursor, VS Code) with no extra setup.
- Non-intrusive probing: Only calls
list_toolson target servers — read-only, no side effects. - Version drift detection: Compares tool schemas across checks to detect when a server has been updated.
- Historical trends: Stores latency history in SQLite; p50/p95 are computed on-demand from stored history to surface regressions before they become outages.
- HTML dashboard: Generates a self-contained health dashboard with uptime sparklines per server.
- Background polling: Runs as a daemon so health data is always fresh when you ask for it.
Why this over generic uptime monitors?
Generic uptime monitors (UptimeRobot, Pingdom, BetterStack) check whether a port is open or an HTTP endpoint returns 200. That's not enough for MCP servers — a server can be running but failing to negotiate the MCP protocol or returning a broken tool schema.
| mcp-server-health-monitor | Generic uptime monitors | |
|---|---|---|
| Probe method | MCP list_tools call — tests actual protocol |
HTTP ping or TCP port check |
| Schema drift detection | Detects when tool signatures change between versions | Not possible without protocol awareness |
| Config auto-discovery | Reads Claude Desktop, Cursor, VS Code configs automatically | Manual URL entry per server |
| Data residency | Local SQLite; no external service | Health data stored in vendor cloud |
| Cost | Free, self-hosted | Free tier limited; paid for history/alerts |
If you want to know that your MCP servers are genuinely healthy — not just "the process is running" — this is the right tool.
Requirements
- Node.js v20.19 or newer.
- npm.
Getting started
Add the following config to your MCP client:
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": ["-y", "mcp-server-health-monitor@latest"]
}
}
}
The monitor auto-discovers other MCP servers from the same config file it is registered in. No additional setup required.
MCP Client configuration
Amp · Claude Code · Cline · Cursor · VS Code · Windsurf · Zed
Your first prompt
Enter the following in your MCP client to verify everything is working:
Check the health of all my MCP servers.
Your client should return a status table showing each server with its current latency and health state.
Tools
Health checks (3 tools)
health_check_all— probes all configured servers in parallel vialist_tools, measures latency, and stores results. Accepts an optionaltimeout_msparameter (default: 5000).get_server_status— returns per-server detail including latency, last seen time, 24-hour error count, last error message, and p50/p95 latency percentiles. Requiresserver_name.list_degraded— filters to servers that are offline or have latency above the threshold. Accepts an optionallatency_thresholdoverride.
History (1 tool)
get_history— returns raw health check history for a specific server, ordered most-recent first. Requiresserver_name; accepts optionallimit(default: 50, max: 500).
Server registry (2 tools)
configure_server— registers a new MCP server to monitor. Servers added this way are stored in~/.mcp/extra-servers.jsonand merged with auto-discovered servers. Required:name,command. Optional:args,env.remove_server— removes a manually registered server from monitoring. Only affects servers added viaconfigure_server; auto-discovered servers are not affected. Requiresname.
Updates (1 tool)
check_updates— detects version drift by hashing tool schemas on each probe and comparing against the last stored hash. Returnshas_changed,previous_hash,current_hash, andchanged_atper server.
Export (1 tool)
export_dashboard— generates a self-contained single-file HTML dashboard with summary cards, per-server status table with p50/p95 latency, and inline SVG uptime sparklines. Accepts an optionaloutput_pathto write to disk.
Manual server registry
In addition to auto-discovery from MCP config files, you can register servers that are not in your Claude Desktop config using the configure_server tool. Manually registered servers are written to ~/.mcp/extra-servers.json (stored alongside the health database) and merged with auto-discovered servers on every probe.
Add a server named "my-internal-tool" running with command "node" and args ["/opt/tools/server.js"]
To stop monitoring a manually registered server:
Remove the server named "my-internal-tool" from monitoring
Servers discovered from Claude Desktop's config cannot be removed via remove_server — edit your MCP config file directly to remove those.
Configuration
--interval / --interval-seconds
How often to poll each MCP server, in seconds.
Type: number
Default: 60
--latency-threshold
Latency in milliseconds above which a server is marked as degraded.
Type: number
Default: 1000
--db / --db-path
Path to the SQLite database file used to store health history.
Type: string
Default: ~/.mcp/health.db
--daemon
Run as a background polling daemon. Health data is collected continuously rather than on-demand.
Type: boolean
Default: false
--startup-grace-seconds
Grace period in seconds before a newly started server is considered unhealthy.
Type: number
Default: 10
Pass flags via the args property in your JSON config:
{
"mcpServers": {
"health-monitor": {
"command": "npx",
"args": ["-y", "mcp-server-health-monitor@latest", "--interval=30", "--latency-threshold=500"]
}
}
}
Listings
- Listed on the MCP Registry — search for
mcp-server-health-monitor. - Listed on MCP Market — search for
mcp-server-health-monitor.
Verification
Before publishing a new version, verify the server with MCP Inspector to confirm all tools are exposed correctly and the protocol handshake succeeds.
Interactive UI (opens browser):
npm run build && npm run inspect
CLI mode (scripted / CI-friendly):
# 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
Run before publishing to catch regressions in tool registration and runtime startup.
Contributing
Probe modules live in src/probes/. Each probe must return a ProbeResult with status, latencyMs, and an optional message. Keep all probes read-only — never trigger side effects on monitored servers.
npm install && npm test
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。