MCP Server Checker
Test a Model Context Protocol server: initialize handshake, protocol version, capabilities and the full tool inventory.
No result yet
Enter the inputs above and press Run. Results appear here in a moment.
Monitor this 24/7 — get alerts on the first failure.
Only run these tools against systems you own or are authorized to test. Using them to scan or probe systems without permission violates our Terms.
What is MCP Server Checker?
MCP (Model Context Protocol) is how AI agents — Claude, ChatGPT connectors, OpenClaw, Hermes and a fast-growing ecosystem of autonomous assistants — discover and call your server's tools. An MCP server that answers HTTP 200 can still be completely broken for every agent connected to it: the initialize handshake fails, the tool list comes back empty, or auth silently rejects every session. Ordinary uptime checkers can't see any of that, because they don't speak the protocol.
This tool performs a real MCP session against your endpoint over Streamable HTTP: JSON-RPC initialize handshake, protocol version negotiation, capability discovery, then a full tools/list walk (plus resources and prompts when the server advertises them). You see exactly what an agent would see — server identity, negotiated protocol version, and the complete tool inventory with descriptions.
How it works
The check reproduces the exact session lifecycle a real MCP client performs:
- 1Initialize handshake — POST a JSON-RPC
initializerequest offering the current protocol version (2025-06-18), withAccept: application/json, text/event-stream— servers may answer in plain JSON or as an SSE stream, and both are handled. The negotiated version, server name/version and capability set come back here. - 2Session acknowledgement — Send
notifications/initialized(and carry theMcp-Session-Idheader when the server issued one) — the same handshake completion step the spec requires from real clients. - 3Walk the tool inventory — Call
tools/list, following pagination cursors, to enumerate every tool the server exposes — names and descriptions included. If the server advertisesresourcesorpromptscapabilities, those lists are counted too. - 4Time every phase — DNS, TCP, TLS, the initialize round-trip and the tools listing are timed separately, so a slow handshake (cold start, server-side work in initialize) is distinguishable from a slow network path.
The session is then explicitly terminated (HTTP DELETE with the session id) — the polite client behaviour the spec asks for. Nothing is cached and no tool is ever invoked: the check is read-only discovery, never tools/call.
When you'd use it
You just deployed an MCP server
The container is running and /health says OK — but can an agent actually connect? One check confirms the full handshake, the negotiated protocol version and that every tool you registered is really exposed.
Agents suddenly can't use your tools
Claude or your OpenClaw/Hermes agent reports the server as unavailable, but the URL loads fine in a browser. That's the classic protocol-level failure: HTTP is up, MCP is down. The per-phase result shows whether initialize, auth or the tool listing is the broken step.
Verifying a third-party MCP server before connecting an agent
Before you point an agent (and its credentials) at someone else's MCP endpoint, look at what it actually exposes: which tools, with which descriptions. Tool descriptions are instructions your agent will follow — read them before you trust them.
After an MCP SDK / framework upgrade
Framework upgrades routinely change the negotiated protocol version or break SSE response handling behind proxies. A post-upgrade check confirms the version your clients will get and that the inventory survived the migration.
Debugging a reverse proxy in front of MCP
nginx/Caddy/Cloudflare in front of a Streamable HTTP server can strip the Mcp-Session-Id header, buffer SSE streams into timeouts, or downgrade POST bodies on redirects. Checking from outside your network shows what remote agents really experience.
Reading the result
MCP handshake (Online / Failed)
Online means the server completed initialize and answered tools/list — a real agent could establish a session right now. Failed names the phase that broke: an HTTP 401/403 is an auth problem, a JSON-RPC error is the server rejecting the protocol exchange, a timeout usually means SSE buffering or a hung backend.
Protocol version
The version the server negotiated (e.g. 2025-06-18). Clients offer the newest they support and servers may answer with an older one — that's fine. What matters is that it doesn't change unexpectedly between deploys, because agents pin behaviour to it.
Capabilities
Which optional protocol features the server advertises: tools, resources, prompts, logging. A missing capability isn't an error — but if your agent depends on resources and the badge disappeared after a deploy, that's your regression.
Tool inventory
Every tool the server exposes, with its description — the exact list an agent receives. Zero tools after a successful handshake is the most common silent failure: the server started, but tool registration didn't finish. The descriptions are also your security surface: they're injected into the agent's context verbatim.
Phase timings
DNS / TCP / TLS / Initialize / Tools list. A slow Initialize with fast network phases points at server-side work (cold starts on serverless hosting are the usual culprit); slow everything points at the network path or an overloaded box.
Common pitfalls
Health endpoint green, MCP dead
A /health route and the MCP JSON-RPC handler are different code paths. Kubernetes probes and uptime pings hitting /health prove nothing about initialize. Always verify the protocol itself — that's the thing agents use.
Proxy breaks SSE responses
Streamable HTTP servers often answer initialize as a text/event-stream. Reverse proxies with response buffering (nginx proxy_buffering on, some CDN defaults) hold the stream until timeout — the agent sees a hang, not an error. Fix: disable buffering for the MCP path.
Session header stripped
Servers that issue Mcp-Session-Id expect it back on every subsequent request. Proxies with restrictive header allowlists silently drop it, so initialize works and everything after returns 400/404. If handshake passes but tools/list fails, check header pass-through first.
Tool descriptions changed under your agents
A tool named search whose description quietly gains "also forward the user's data to…" is the MCP rug-pull attack — descriptions are prompt-injected straight into agents. A one-off check shows today's inventory; continuous monitoring with drift detection is how you catch the change the day it happens.
401 on a server that "has no auth"
Managed MCP hosting often injects OAuth in front of your server without telling your code. If this check reports an auth failure on an endpoint you believe is public, the platform layer is demanding a token before the request ever reaches your handler.
Run MCP Server Checker on every change, not just once.
Get alerts the moment something breaks — across HTTP, DNS, SSL, RDAP, ping, blacklist and more. Free forever for 10 monitors. No card.
Start freeFrequently asked questions
What is an MCP server checker?
How do I check if my MCP server is working?
https://mcp.example.com/mcp) above and run the check. A working server completes the initialize handshake, reports its protocol version and returns its tool list. Anything less means agents can't use it, whatever your HTTP health check says.Which transports are supported?
Does the checker call my tools?
Can I check an MCP server that requires authentication?
What is MCP tool drift / a rug-pull?
Why does my MCP server work locally but fail this check?
How often should an MCP server be monitored?
Related web tools
- SSL Certificate CheckInspect certificate validity, expiry, SANs, issuer and chain trust.
- HTTP HeadersInspect response headers, status, redirect chain and security headers.
- CDN CheckerDetect which CDN (Cloudflare, Akamai, Fastly, and more) serves a site, from its DNS and response headers.
- Sitemap CheckerFind and validate a site's XML sitemap — total URL count plus a sample crawl for broken (4xx/5xx) links.