VS Code MCP Server Not Showing: Causes and Fixes
When an MCP server does not show up in VS Code, the config file usually was never read at all. The single most direct cause is the top-level key: .vscode/mcp.json uses servers, not mcpServers, so a config copied from Claude Desktop, Cursor, or Zed is silently ignored. If the wrapper is right, the problem is one layer down: a JSON syntax error, a server that registered but never started, or tools that only appear in Copilot Chat’s agent mode.
Symptoms this page covers
MCP: List Serversshows nothing, even though .vscode/mcp.json exists.- The server is listed but stays stopped or fails to start.
- The server runs, but its tools never appear in Copilot Chat.
- A config that works in Claude Desktop or Cursor does nothing in VS Code.
Possible causes, ordered by evidence strength
- Wrong top-level wrapper (provable statically). VS Code reads only
servers. AnmcpServersorcontext_serversblock is valid JSON but belongs to a different client family, so VS Code ignores it. This is an official-schema fact and the doctor flags it as a blockingcompatibility.wrong-wrapperfinding — demonstrated below. - JSON syntax errors (provable statically). A trailing comma, a comment, or an unescaped Windows backslash makes the whole file unparseable, and every server disappears at once. Zed tolerates comments and trailing commas (JSONC); VS Code does not.
- The file is not where VS Code looks (officially documented, partly version-dependent). The workspace file must be exactly
.vscode/mcp.jsonat the workspace root. The user-level file is created through the “MCP: Open User Configuration” command; its on-disk location changes between versions, so treat it as version-dependent and prefer the workspace file. - The server registered but never started (visible in the client). A server can parse fine and still fail to launch — a missing executable produces a
spawn ENOENTin the server’s output channel. That is a runtime problem, covered by thespawn ENOENT / npx not found guide. - Tools are hidden by the UI mode (officially documented). VS Code exposes MCP tools only inside Copilot Chat agent mode. In ask or edit mode a perfectly healthy server looks absent.
A pasted log line like “server not showing” is only a low-confidence hint: it matches restart pending, scope mismatch, and silent load failure alike. The causes above are ordered so you check what can be proven first instead of trusting a single symptom.
Broken example: the mcpServers wrapper
Broken .vscode/mcp.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
]
}
}
}What the doctor reports for this exact input
Client vscode on windows → status blocking_error · rule: compatibility.wrong-wrapper
- The config uses the "mcpServers" wrapper, which belongs to Claude Desktop / Claude Code / Cursor / Windsurf / Cline (the "mcpServers" family). The selected client (VS Code) expects "servers".
The corrected config
This is the exact output of this site’s generator for VS Code at build time — the top-level key isservers and the stdio entry carries an explicittype:"stdio". (VS Code’s official field table markstype required, while the official minimal stdio example omits it; the generator emits it for clarity, and omitting it is not treated as an error.)
{
"servers": {
"github": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
]
}
}
}How to fix it
- Open
.vscode/mcp.jsonand rename the top-levelmcpServerskey toservers. Keep any top-levelinputs[]array where it is. - Paste the file into the MCP Config Doctor with client set to VS Code — syntax errors and wrapper mistakes surface before you touch the editor again.
- Run “Developer: Reload Window” — a brand-new mcp.json is not always picked up on its own.
- Run “MCP: List Servers” and start the server if it is stopped.
- Open the server’s output channel (View > Output, then pick the server) and read any launch errors; a
spawn ENOENTthere is a PATH problem, not a config-schema problem.
Verify inside VS Code
- “MCP: List Servers” shows the server and it reaches the running state.
- Copilot Chat is in agent mode, and the tools picker lists the server’s tools.
- The output channel for the server shows a clean startup — no ENOENT, no non-zero exit.
What static checks cannot prove
A schema-valid mcp.json proves only that the text is parseable and matches the VS Code schema you checked it against. It does not prove the file sits at a path VS Code actually reads or that the current VS Code instance has loaded it — confirm that with “MCP: List Servers” inside VS Code. Static checks also cannot prove the server binary exists, that VS Code’s PATH finds it, that a token is valid, or that the server’s tools work in agent mode. Those are runtime facts — confirm them with the verification steps above, in VS Code itself.
Official source
VS Code documentation: MCP configuration— the servers wrapper, the inputs[]feature, and agent-mode visibility. (Verification method for this source: search_snippet, indexed official-page excerpts — see the compatibility matrix sources.)
Frequently asked questions
Why is my MCP server not showing in VS Code?
Work through three layers. First, the file: .vscode/mcp.json must use a top-level "servers" object - a config copied from Claude Desktop or Cursor uses "mcpServers" and is ignored entirely, and any JSON syntax error also unloads every server. Second, the server: run "MCP: List Servers" from the Command Palette - if the server is listed but stopped, start it and read its output channel for launch errors. Third, the UI: MCP tools only appear inside Copilot Chat agent mode, so a running server still looks invisible in ask or edit mode.
Does VS Code use mcpServers or servers in mcp.json?
VS Code uses a top-level "servers" key in .vscode/mcp.json. "mcpServers" is the wrapper for Claude Desktop, Claude Code, Cursor, Windsurf, and Cline; VS Code does not read it. Pasting an mcpServers config into .vscode/mcp.json leaves the server list empty with no visible error.
Where is the user-level MCP config in VS Code?
Open the Command Palette and run "MCP: Open User Configuration"; VS Code creates or edits the user-level file for you. Its on-disk location has changed between versions, so the workspace file .vscode/mcp.json is the authoritative, shareable option and the user-level path is best treated as version-dependent.
Do I need to reload VS Code after editing mcp.json?
Editing the file usually triggers a prompt to restart affected servers, but a brand-new mcp.json is not always picked up on its own. Run "Developer: Reload Window", then "MCP: List Servers" to confirm the server registered. If it still does not appear, validate the JSON for syntax errors and check that the top-level key is "servers".
Setting up VS Code from scratch? Read theVS Code MCP config guide. Server starts but dies immediately? Seespawn ENOENT / npx not found. Comparing formats across clients? Check theMCP client compatibility matrix.