The problem
You add an MCP server to your Claude Desktop or Cursor config. It doesn't show up. No error. You stare at mcp_settings.json for 40 minutes.
I've been there. The failure modes are boring and invisible: a typo in mcpServers, a missing package name for npx servers, a command that's not on your PATH, a server that starts but dies during the handshake, tool schemas that are technically valid but broken at runtime.
There is no standard tool to just... check it. So I built one.
mcp-doctor
A zero-dependency, single-file diagnostic engine for MCP server configurations. CLI + browser, no install required.
Paste your config → get a verdict:
npx github:420runingman420-blip/mcp-doctor --stdin < my-mcp-config.json
or open the web tool and paste your JSON:
👉 https://420runingman420-blip.github.io/mcp-doctor/
What it catches
-
mcpServerskey typos (yes, this is the #1 bug I see) - missing/invalid
command,args,urlper server -
npxservers with no@scope/pkgname (a silent no-op) -
envreferenced but not defined patterns - duplicate server entries
-
--livemode: actually spawns the server and completes the MCPinitializehandshake, so you know it not just parses — it talks
Design notes
-
Zero npm dependencies. One
checks.jsmodule shared by the CLI and the browser build. Works on Node 18+. - The checks are plain functions returning
{level, message}— easy to extend, easy to embed in your own CI. - Deterministic output (
--json) for scripting.
Why I made it
MCP configs are the new .env — nobody reads them, everyone breaks them, and debugging is grep-and-pray. I wanted a doctor for them: flutter doctor, bundle doctor, mcp-doctor.
It's MIT licensed: https://github.com/420runingman420-blip/mcp-doctor
Try it
- Copy your
mcpServersblock from Claude Desktop / Cursor / any MCP host - Paste it into the web tool (nothing leaves your browser)
- Run
--liveon the CLI if you want the full handshake
Feedback welcome — issues and PRs on GitHub. If it saved you from a 40-minute stare, a star means a lot.
Top comments (0)