MCP Vitals runs the real MCP handshake — initialize, then tools/list — every minute from outside your infrastructure. It catches schema drift, auth failures and timeouts a plain HTTP ping sails right past.
An independent 2026 scan found ~52% of public remote MCP endpoints were dead or silently broken. A status-200 ping can't tell the difference. The MCP handshake can.
Set it up like a patient intake: admit the server, watch its vitals, get paged when they drop.
Paste your MCP endpoint — HTTP or SSE, public or behind a token. No agent to install on your side.
initialize → tools/list, from outside your infra. We record latency, tool count and the full tool schema.
Slack, Discord or webhook the second vitals drop — plus an embeddable badge that shows live health.
A real initialize → tools/list handshake every check, not a TCP or HTTP ping that only proves the door opens.
We diff your tool schemas between checks and flag the moment a tool changes shape or disappears.
Slack, Discord or webhook, fired the second a check fails — so you hear it before your agents choke on it.
A live badge for your README or site that reads current health straight from the last handshake.
Every check is kept — uptime percentages and latency trends you can look back through over time.
Run the same check once in your pipeline. Exit 0 on pass, 1 on fail, 2 on error — open source, no account.
$ npx mcpvitals check https://acme-tools.mcp.dev → initialize ........... ok 128 ms → tools/list ........... ok 7 tools · schema matched ✓ healthy — exit 0
The open-source CLI runs the identical MCP handshake once and exits 0, 1 or 2 — drop it straight into a workflow and fail the build when a tool vanishes. The hosted monitor renders the same result as a live badge: