Home · Guides

MCP servers in VS Code

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.

The file

This workspace<workspace>/.vscode/mcp.json
Every workspaceThe 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.

The trust prompt

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.

Secrets

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.

The newer Agent Host

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.

Something to do once it works

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.

Questions

Workspace file or user file?

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.

MCP: List Servers shows my server as stopped.

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.

Does GitHub Copilot need to be configured separately?

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.

Can I use a remote server URL instead?

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.

Related

All MCP servers and prices · All guides · Buy the bundle $39