Guides

Why an MCP Server Loads in Cursor and Not in VS Code

Cursor's mcp.json uses mcpServers. VS Code's .vscode/mcp.json uses servers. The same JSON is valid and invisible. Here is the file each client reads, and a free checker.

Cursor logoCursorMicrosoft logoMicrosoftAnthropic logoAnthropicGitHub logoGitHub
Editorial policy

Key takeaways

  • Cursor logoCursor reads mcpServers in .Cursor logocursor/mcp.json. VS Code's editor file, .vscode/mcp.json, reads servers. A Cursor logoCursor file pasted into the editor file is valid JSON and a server that never appears.
  • VS Code's configuration reference, checked 13 Nov 2026, says new Copilot configs should use mcpServers in a workspace .mcp.json or in ~/.copilot/mcp-config.json. It says the Copilot harness does not read .vscode/mcp.json directly.
  • The free checker at /tools/mcp-config-generator names the wrong key, then writes a fixed file. The paste is not stored.

You paste a working Cursor config into VS Code, restart, and the server is not in the list. There is no error that names the key. The JSON is valid. The client is looking at a different key.

Cursor reads mcpServers. VS Code's editor file reads servers. Those are not aliases. The MCP config generator writes the file for the client you pick, and the checker flags a Cursor file that was pasted into .vscode/mcp.json.

Which key does each client read?

The key in the file you opened, not the key in the README you copied.

Cursor's MCP page, checked 13 Nov 2026, puts servers under mcpServers in .cursor/mcp.json or ~/.cursor/mcp.json. The help page says the two files merge and the project name wins, and it says to restart Cursor after you save.

VS Code's configuration reference, checked the same day, splits the product in two:

  • The editor file, .vscode/mcp.json, uses servers, plus an inputs array when a secret should be prompted instead of written down.
  • A new Copilot config uses mcpServers in a workspace-root .mcp.json, or in ~/.copilot/mcp-config.json when COPILOT_HOME is unset. The page says the harness does not read .vscode/mcp.json directly. Eligible editor entries can be forwarded. A file that needs ${input:...} is not forwarded.

So a Cursor file can be the right shape for the new Copilot file and the wrong shape for .vscode/mcp.json. If you do not know which VS Code file you opened, the server's absence is not a mystery. It is the wrong object.

Claude Desktop and Claude Code also use mcpServers. Claude Desktop's file is claude_desktop_config.json. Claude Code's project file is .mcp.json. Windsurf's Cascade file is mcp_config.json, again with mcpServers. Sharing one blob across those apps only works when you are sharing the key, and even then the fields differ. Claude Code rejects a url that has no type. Cursor's remote example has a url and no type. Copying either file into the other is how a server goes quiet.

What does the broken file look like?

This is a Cursor-shaped file. Point the checker at VS Code's editor file and it fails the key before it fails anything else.

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Desktop"]
    }
  }
}

The editor file wants this:

{
  "servers": {
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/username/Desktop"]
    }
  }
}

The field table marks type as required on that editor entry. Cursor's stdio table also marks type as required, while several examples on Cursor's page omit it. The generator includes "stdio" for both, and the note on the file says why.

If the new Copilot file is the one you meant, keep mcpServers and do not add inputs. The reference says input prompts are editor-only. Use ${NAME} there. The editor file uses ${env:NAME} or ${input:id}.

How do you confirm the server loaded?

Look at the client's own list. A missing name is a failed load.

  • Cursor: save, restart, and look for the server. The help page's instruction is the restart.
  • VS Code: run MCP: List Servers in the session you think is connected. code --add-mcp writes the editor file, not the portable Copilot file.
  • Claude Code: claude mcp list, or /mcp in the session. A project server asks for approval the first time. A url with no type is skipped. The message on that page tells you to add type.
  • Claude Desktop: quit the app completely. The local-server guide says the file is read on startup. Then open the connector list and look for the name.

The generator prints the path for macOS, Windows, and Linux next to the file. Paste a config you already have into Check a config. A wrong key, a url with no type, npx without -y, a relative path, a Windows npx that is not wrapped the way the reference-servers README describes, a duplicated name, and a hardcoded token each get a sentence. The score starts at 100 and drops for each error and warning. The fixed file does not echo a token. Nothing you paste is stored.

What an MCP server is, as a protocol object, is the glossary entry. How many reference servers the project maintains, which is not the registry count, is How many official MCP servers are there?.

Sources

  1. 1Cursor logoCursor, Model Context Protocol (checked 13 Nov 2026)
  2. 2Cursor logoCursor, MCP integrations (checked 13 Nov 2026)
  3. 3VVS Code, MCP configuration reference (checked 13 Nov 2026)
  4. 4Claude Code logoClaude Code, Connect Claude Code to tools via MCP (checked 13 Nov 2026)
  5. 5MMCP, Connect to local MCP servers (checked 13 Nov 2026)

Guides

AgentCore runtime V2 is now the default: P75 under 2s, CPU at $0.1276

New Amazon Bedrock AgentCore runtimes use the next-generation runtime by default in 19 regions as of November 12, 2026. A fully busy 10-minute session at 1 vCPU and 2 GB is $0.0269 on V2 rates and $0.01807 on V1 rates. Set platformVersion and confirm it.

November 13, 2026 · 18 min read

Guides

Can one tool JSON serve OpenAI, Claude, and MCP?

On November 13, 2026 the prompt checker took six official tool examples. 0 passed a second API. The Agents SDK schema the docs print also fails OpenAI strict mode, at 199 tokens. MCP's get_weather was 90.

November 13, 2026 · 10 min read