JSON syntax and root keys
Detects malformed JSON, arrays used as the root value, missing mcpServers or servers objects, and client-specific root-key mismatches.
Claude Desktop · Cursor · VS Code
An MCP config validator checks your JSON syntax, client-specific root key, server command or URL, transport, arguments, and environment variables. Paste a Claude Desktop, Cursor, or VS Code config below to find actionable errors, view safely formatted output, and download a repair report—all without sending the file off your device.
Free · No account or email · Uses your current config, or a ready-to-use sample if you have not pasted one
Browser-based JSON checker
Select the client whose file you are editing, paste the complete JSON object, and run the check. The validator distinguishes blocking errors from warnings so you know what to fix first.
Free · No registration · Includes diagnostics, corrected JSON, file path, and restart checklist
Errors you can act on
A valid JSON document can still be an invalid MCP configuration. These checks cover both the document structure and the server settings most likely to prevent a client from connecting.
Detects malformed JSON, arrays used as the root value, missing mcpServers or servers objects, and client-specific root-key mismatches.
Checks local stdio server commands, verifies argument arrays, inspects environment-variable value types, and flags configurations with neither a command nor URL.
Reviews HTTP and HTTPS endpoints, recognized transport values, conflicting connection methods, header types, and credentials that may be unsafe to share.
Use the file locations, known-good structures, and diagnostic matrix below after validating. Replace placeholder paths and URLs with values from the server’s own installation instructions.
Open the client-specific file, back it up, then validate the entire JSON object rather than only one server entry.
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.cursor/mcp.json
.vscode/mcp.json
A stdio entry starts a local executable. Keep each argument as a separate JSON array item.
{
"mcpServers": {
"my-local-server": {
"command": "npx",
"args": [
"-y",
"your-mcp-package"
],
"env": {
"API_KEY": "replace-me"
}
}
}
}
A remote entry connects to a URL instead of launching a local process. Use HTTPS for non-local endpoints.
{
"mcpServers": {
"my-remote-server": {
"type": "http",
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer replace-me"
}
}
}
}
Valid JSON is the first gate. Complete these operational checks before assuming the server package is broken.
Match the visible symptom to the earliest check that can confirm or eliminate its likely cause.
| Symptom | Likely cause | What to check |
|---|---|---|
| Unexpected token | Invalid JSON syntax | Look for trailing commas, missing quotes, unescaped backslashes, or unmatched braces near the reported position. |
| Server not listed | Wrong root key or file | Confirm the selected client, exact config file location, and whether the root object is mcpServers or servers. |
| spawn ENOENT | Command not found | Run the command in a terminal, inspect the client’s PATH, or use the executable’s absolute path. |
| Server exits immediately | Bad args or missing env | Check that args is an array of strings and that required environment variables are present. |
| HTTP 401 / 403 | Remote authentication failure | Verify the authorization scheme and token source. Rotate any credential that was exposed publicly. |
| Connection timeout | Wrong URL or transport | Confirm the endpoint, HTTPS certificate, server availability, and whether the client expects HTTP or legacy SSE. |
Three-step workflow
Work from syntax to schema to runtime. This order prevents a missing executable from distracting you while the client cannot parse the file at all.
Choose Claude Desktop, Cursor, VS Code, or Generic so the checker can apply the expected root key and provide the relevant file path.
Paste the complete file. Fix blocking errors first, then review warnings about command, url, args, env, and secrets.
Download the repair report, compare its normalized JSON with your backup, save the intended changes, and fully restart the client before checking logs.
MCP config FAQ
Short answers for the configuration, transport, privacy, and troubleshooting questions developers commonly encounter.
On macOS, the usual location is ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows, it is normally %APPDATA%\Claude\claude_desktop_config.json. Fully quit Claude Desktop before replacing the file, keep a backup, and reopen the app afterward.
mcpServers is a top-level JSON object whose keys are server names. Each value describes how the client should connect, usually through a local command with args, or through a remote url. VS Code configurations may use a top-level servers object instead.
JSON validity only proves the document can be parsed. The client can still reject or ignore it when the root key is wrong, a server value is not an object, neither command nor url exists, or fields such as args and env use the wrong data type.
stdio launches a local process and exchanges messages through standard input and output. HTTP connects to a remote MCP endpoint. SSE is an older remote connection pattern still used by some existing servers. Use the transport documented by the server and supported by your client version.
spawn ENOENT usually means the configured executable cannot be found. Run the command in a terminal, verify it is installed, compare the terminal PATH with the desktop app’s environment, and consider using an absolute executable path. Also check that the command name is not incorrectly placed inside args.
This page performs validation in your browser and does not upload the pasted text. It also warns about values that resemble credentials. Even so, avoid sharing screenshots or downloaded reports containing real secrets, and rotate any credential you believe has been exposed.
No. Clicking a report button immediately generates a Markdown file in your browser using the selected client, current diagnostics, normalized JSON, and restart checklist. If you have not entered a config, the report contains a usable sample configuration.
No. A passing result confirms the checks described on this page, not the availability of an executable, package, network endpoint, credential, filesystem permission, or client-specific feature. After fixing the config, restart the client and inspect its runtime logs.
Generate a Markdown report containing the selected client, file path, validation score, prioritized findings, normalized JSON, and a six-step restart checklist.
Free · No registration · Generated locally from your current result