Mcp Server Health Monitor

io.github.dbsectrainer由 GitHub 帳號 dbsectrainer 發布v1.0.1更新於 Nov 4, 2026

Health monitoring for all your MCP servers

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

透過 MCP 協定探測其他 MCP 伺服器,記錄延遲與工具結構變化,並匯出本機 HTML 健康儀表板。

可以做什麼
  • 平行探測所有已設定的 MCP 伺服器(呼叫 list_tools),量測延遲並儲存結果
  • 查看單一伺服器狀態、離線或延遲超過門檻的伺服器,以及含 p50/p95 的原始檢查歷史
  • 比對工具結構雜湊,偵測伺服器版本漂移
  • 註冊或移除用戶端設定中未包含的手動新增伺服器
  • 匯出含狀態、延遲趨勢與上線率迷你圖的單一檔案 HTML 儀表板
適用情境
適合同時執行多個 MCP 伺服器、想確認它們是否真的能回應 MCP 請求而不只是程序仍在運作的情況。可用於排查不穩定或回應緩慢的伺服器、發現更新後工具結構的變化,並保留本機上線率歷史。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js v20.19 或更新版本以及 npm。它會讀取既有的 MCP 用戶端設定檔(Claude Desktop、Cursor、VS Code)進行自動探索,並將歷史存入本機 SQLite 檔案,預設位於使用者主目錄下。選用參數可設定輪詢間隔、延遲門檻、資料庫路徑、常駐模式與啟動寬限期。
安裝前請注意
清單宣告需要名為 YOUR_API_KEY 的必填密鑰環境變數,但 README 並未描述任何外部服務或驗證;對此應保持警覺,未確認用途前不要提供真實密鑰。此伺服器會寫入檔案:SQLite 資料庫、補充伺服器註冊檔,以及在指定輸出路徑時產生的 HTML 儀表板。它也會啟動並探測所監控的其他 MCP 伺服器,常駐模式會在背景持續輪詢。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Server Health Monitor,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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_tools on 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-monitorGeneric uptime monitors
Probe methodMCP list_tools call — tests actual protocolHTTP ping or TCP port check
Schema drift detectionDetects when tool signatures change between versionsNot possible without protocol awareness
Config auto-discoveryReads Claude Desktop, Cursor, VS Code configs automaticallyManual URL entry per server
Data residencyLocal SQLite; no external serviceHealth data stored in vendor cloud
CostFree, self-hostedFree 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:

json
{  "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 via list_tools, measures latency, and stores results. Accepts an optional timeout_ms parameter (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. Requires server_name.
  • list_degraded — filters to servers that are offline or have latency above the threshold. Accepts an optional latency_threshold override.

History (1 tool)

  • get_history — returns raw health check history for a specific server, ordered most-recent first. Requires server_name; accepts optional limit (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.json and merged with auto-discovered servers. Required: name, command. Optional: args, env.
  • remove_server — removes a manually registered server from monitoring. Only affects servers added via configure_server; auto-discovered servers are not affected. Requires name.

Updates (1 tool)

  • check_updates — detects version drift by hashing tool schemas on each probe and comparing against the last stored hash. Returns has_changed, previous_hash, current_hash, and changed_at per 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 optional output_path to 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:

json
{  "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):

bash
npm run build && npm run inspect

CLI mode (scripted / CI-friendly):

bash
# List all toolsnpx @modelcontextprotocol/inspector --cli node dist/index.js --method tools/list
# List resources and promptsnpx @modelcontextprotocol/inspector --cli node dist/index.js --method resources/listnpx @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 argumentsnpx @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.

bash
npm install && npm test

來源:README.md,提交 e9184e3

工具

8

health_check_all

Ping every configured MCP server via list_tools, measure latency, and store results. Returns a summary of all servers.

輸入參數timeout_ms

get_server_status

Get detailed health status for a specific MCP server by name.

輸入參數server_name必填

list_degraded

List all MCP servers that are offline or have latency above the threshold.

輸入參數latency_threshold

check_updates

Compare current tool schemas against last stored schemas to detect version drift across MCP servers.

輸入參數timeout_ms

export_dashboard

Generate a self-contained HTML health dashboard with server status, latency trends, and uptime sparklines.

輸入參數output_path

get_history

Return the raw health check history for a specific MCP server, ordered most-recent first.

輸入參數limitserver_name必填

configure_server

Register a new MCP server to monitor. Servers added this way are stored in a supplementary config file alongside the database and are merged with servers discovered from Claude's config. Use this to monitor servers not present in Claude Desktop's config.

輸入參數envargsname必填command必填

remove_server

Remove a manually configured MCP server from monitoring. Only affects servers added via configure_server — servers discovered from Claude's config are not affected.

輸入參數name必填

版本歷史

2
  1. v1.0.1最新Nov 4, 2026
  2. v1.0.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分