The top-level key is servers. Every other client here uses mcpServers. A
config pasted from a Claude Desktop or Cursor README parses as valid JSON, contributes zero servers,
and gives you no error to read. It is the most expensive one-word mistake in this whole area.
| This workspace | <workspace>/.vscode/mcp.json |
|---|---|
| Every workspace | The user profile mcp.json, opened by the MCP: Open User Configuration command |
{
"servers": {
"spreadsheet": {
"command": "/opt/homebrew/bin/node",
"args": ["/Users/you/mcp-servers/servers/spreadsheet/dist/index.js"]
}
}
}
MCP: Add Server in the command palette walks through it and asks whether the target is Workspace or Global, which is less error-prone than writing the file. MCP: List Servers shows the state of each entry, and is where you look when tools do not appear.
VS Code asks you to confirm you trust the server and its capabilities before it starts. Nothing runs until you answer. If a server seems to be doing nothing at all, check for an unanswered prompt before you check anything else.
An inputs array holds them, referenced from a server entry as
{input:id} with a dollar sign in front. That keeps a key out of a file you might commit.
For these servers the only variable that exists is MCP_LICENSE_KEY, and leaving it out is
what runs the free tier, so most people need no inputs array at all.
One platform note from the documentation: "sandboxEnabled": true is macOS and Linux
only.
It reads a workspace .mcp.json rather than .vscode/mcp.json. If you are
in it, the file you carefully edited is not the file being read, and there is no message saying so.
Check which one you are running before debugging the config.
Open orders.xlsx and show me the open orders over 5 units, sorted by amount.
Paste this into Claude with the server connected.
The spreadsheet server reads xlsx, xlsm, xlsb, ods, csv and tsv, guesses the header row on messy
exports, and answers with a safe expression language that runs no eval. Free covers read, query, stats
and find on files up to 5,000 rows, and writes up to 500 rows with a refusal rather than a truncated
file above that. From data/facts.json.
Per-server VS Code pages with the exact block for each of the 30 servers are under
setup/vscode. The client facts on this page were read off the VS Code
documentation on 2026-09-02 and are recorded with their source URL in
billing/src/setup.js.
Workspace when the server is part of how this repository is worked on and you want it committed. User when it is your own tooling and you want it everywhere. Both are read.
Either the trust prompt is unanswered, or the process exited. Run the same command and args in a terminal: a server that starts prints a banner and waits, and one that exits shows you the reason on stderr. With these servers the usual cause is a dist directory that was never built.
The MCP configuration is at the editor level rather than per chat participant. What varies by client is whether agent-style tool calling is available in the mode you are in, so check the mode you are chatting in if the server is running and the tools are still not offered.
Yes, and it avoids the build step entirely. mcp/connect on this site mints a free anonymous token and prints an HTTPS URL per server, with the token already in the path so there is no header to configure.
All MCP servers and prices · All guides · Buy the bundle $39