Article
VS Code MCP Config: servers, Not mcpServers
VS Code reads .vscode/mcp.json under the key servers. Every other MCP client uses mcpServers. Paste the wrong one and VS Code parses it happily, reports nothing, and never starts the server.
You copied a working MCP config out of Claude or Cursor, pasted it into VS Code, restarted, and nothing happened. No error, no warning, no server in the list. The file is valid JSON and VS Code is perfectly happy with it. The problem is one word, and it is the outermost one.
The Difference, Side by Side
Same server, same command, same arguments. The only thing that changes is the wrapper key.
| Client | Config file | Wrapper key |
|---|---|---|
| GitHub Copilot in VS Code | .vscode/mcp.json | servers |
| Cursor | ~/.cursor/mcp.json | mcpServers |
| Claude Desktop | claude_desktop_config.json | mcpServers |
| Most other config-based clients | varies | mcpServers |
What VS Code Wants
In .vscode/mcp.json, at the root of your workspace. Using MyLinedChart's connector as the example:
{ "servers": { "mylinedchart": { "command": "npx", "args": ["-y", "@mylinedchart/mcp-chart-context"] } } }
Substitute your own server's command and args. The shape of the inner object does not change between clients.
What Everything Else Wants
The same server, for Claude or Cursor:
{ "mcpServers": { "mylinedchart": { "command": "npx", "args": ["-y", "@mylinedchart/mcp-chart-context"] } } }
If you have both editors open, you genuinely do need both files. This is not a case where one config can be shared.
Why It Fails Without an Error
VS Code reads the file, finds valid JSON, and looks for a servers key. There is not one, so it finds zero servers to start. Zero servers is not an error condition. From VS Code's point of view you have configured nothing, which is a perfectly legal thing to do.
So there is no red squiggle, no notification, and no entry in any log saying the key was wrong. The failure looks exactly like the server crashing on startup, which is why people go and debug the server.
- The file is valid JSON, so no parse error appears.
- An unrecognised top-level key is ignored rather than rejected.
- Zero configured servers is a normal state, not a fault.
How to Confirm Which Problem You Have
Before assuming the server is broken, prove VS Code ever tried to start it.
- Check the wrapper key first. It costs five seconds and is the answer most of the time.
- Run the server's command by hand in a terminal. If it starts, the server is not your problem.
- Look for the server in VS Code's MCP server list. Absent means never configured; present but failing means an actual startup error.
- If you installed through a one-click link rather than by hand, this whole class of problem does not apply.
Two Related Traps
While you are in here, two other things fail the same silent way.
First, one-click MCP install links carry their payload as plain URL-encoded JSON. Base64 is accepted by the URL parser and then quietly does nothing, which is the worst available failure: a button that looks like it worked.
Second, the server name travels inside the payload for VS Code, rather than as a separate query parameter the way Cursor does it. A link built to Cursor's shape will not install correctly in VS Code even though it opens.
Where MyLinedChart Fits
MyLinedChart ships an MCP connector that gives an AI agent your live chart: symbols, your drawings, indicator values and the bars on screen. It runs on your machine and the data does not pass through our servers.
The app has a one-click Add to VS Code button that writes the correct key for you, which is the reason to use it over hand-editing. Setup and the other clients: Using GitHub Copilot in VS Code With IBKR Chart Data.
Next Step
Fix the key, restart VS Code, and the server appears. If it still does not, you now know the problem is the server rather than the config, which is a much shorter list to work through.
Connect your AI at MCP toolkit.
FAQ
Why does VS Code use servers instead of mcpServers?
It is a naming choice in VS Code's own MCP configuration format, made independently of the convention Claude Desktop established. Neither is more correct. It only becomes a problem because the two look interchangeable and one of them fails without saying so.
Will VS Code warn me if I use the wrong key?
No, and that is the whole difficulty. The file is valid JSON, an unknown top-level key is ignored rather than rejected, and having zero configured servers is a normal state. Nothing about it looks like a fault.
Can I use one config file for both VS Code and Cursor?
No. They read different paths and expect different wrapper keys, so you need both files. The inner server definition is identical, so it is a copy with one word changed.
Does this apply to Windows Copilot too?
No. This is GitHub Copilot inside VS Code, which supports MCP servers. The Windows taskbar assistant is a separate product that shares the name and does not use these config files.
Sample Structured Chart-Data Exports
Review how chart drawings, annotations, OHLC, volume, and execution context become reusable structured data.

