VS Code MCP Config Validator
Paste your .vscode/mcp.json to validate the servers shape, the type enum, and per-transport requirements. Runs in your browser.
Your config never leaves your browser. No upload. No login.
Paste your
.vscode/mcp.jsonYour config never leaves your browser
0 chars
Paste your .vscode/mcp.json above to run deterministic checks.
Or click to see how it works.
What this validator checks
- •JSON syntax + line/column on errors
- •UTF-8 BOM, smart quotes, trailing commas
- •Top-level
serverskey (NOTmcpServers) - •Required
type: stdio / http / sse - •type=stdio requires
command - •type=http/sse requires
url - •Env-var values must be strings
- •Windows backslash escapes in paths
- •Insecure HTTP for non-local URLs
- •API key / token leak detection
- •Duplicate / case-conflict server names
- •Common command typos (npx, uvx, node, python)
Why this exists
VS Code Copilot's MCP support uses a different schema from Claude Desktop's — the top-level key is servers (not mcpServers), and every entry needs an explicit type field.
The most common failure mode after copying a config from a tutorial: the snippet was written for Claude Desktop or Cursor, has mcpServers instead of servers, and VS Code silently ignores it. The validator surfaces this in one paste.
Frequently asked
Why does VS Code use "servers" instead of "mcpServers"?▼
VS Code Copilot's MCP support uses the top-level key `servers`. This is a deliberate naming difference from Anthropic's claude_desktop_config.json schema. If you paste a Claude Desktop config into VS Code's mcp.json, it won't load — VS Code looks under `servers`, not `mcpServers`. The validator catches this immediately.
Where is VS Code's mcp.json on my system?▼
Workspace level: .vscode/mcp.json in your repository root (applies to that workspace). User-profile level: edit via Cmd/Ctrl+Shift+P → "MCP: Open User Configuration". The exact OS path for the user-profile file isn't documented in VS Code's docs — use the command palette to open it. Both files share the same schema.
What "type" values does VS Code accept?▼
Three: "stdio" (local subprocess), "http" (Streamable HTTP), and "sse" (Server-Sent Events). The `type` field is required on every server entry. type="stdio" requires a `command` field; type="http" or type="sse" requires a `url` field. The validator checks both the enum value AND that the matching transport field is present.
How do I use input variables (${input:token}) in VS Code mcp.json?▼
VS Code's mcp.json supports input variables via a top-level `inputs` array. Each input entry has an `id`, `type` (e.g. "promptString"), and optional `description` + `password: true`. Reference inputs anywhere a string is accepted as ${input:id}. Useful for prompting for API keys at first use without storing them in the file. See VS Code's official MCP docs for the full inputs schema.
Does VS Code MCP need GitHub Copilot enabled?▼
Yes — MCP server support is part of GitHub Copilot's chat experience in VS Code. Without an active Copilot subscription, mcp.json is ignored. (For non-Copilot MCP support in VS Code, look at extensions like Continue.dev or Cline.)
Can I share my Claude Desktop or Cursor config with VS Code?▼
Not directly — three migrations are needed: (1) rename the top-level key from `mcpServers` to `servers`; (2) add a `type` field to every server entry ("stdio" for command-based, "http" or "sse" for url-based); (3) input variables use VS Code's `${input:id}` syntax instead of plain placeholders. The validator flags missing `type` so you'll see the changes needed.
Is my config sent to your server?▼
No. The validator runs entirely in your browser as JavaScript. Your config — and any API keys it contains — never leaves your machine. Open DevTools → Network while validating to confirm: zero outbound requests.
Spotted a check we should add?
Open an issue on the directory, or browse the 2,000+ MCP servers for ones with known good configs you can copy.