MCP install guides
How to add an MCP server to the client you actually use. Each guide covers where the config lives, the JSON to paste, how to pass credentials safely, and what to check when a server does not show up.
- How to add an MCP server to Claude Desktop — Claude Desktop reads a single JSON file at startup. Add your server to it, restart, and the tools appear in your next conversation.
- How to add an MCP server to Claude Code — Claude Code adds MCP servers from the command line, and lets you choose whether a server is yours alone, shared with the project, or available everywhere.
- How to add an MCP server to Cursor — Cursor reads MCP servers from a JSON file, either globally for every project or checked into a single repository.
- How to add an MCP server to VS Code — VS Code reads MCP servers from a workspace file and can prompt for secrets instead of storing them — the one client where you should not paste a token into the config.
- How to add an MCP server to Windsurf — Windsurf keeps its MCP servers in a single config file and surfaces them in Cascade once you refresh.
Config file, per client
| Client | Config file | Top-level key |
|---|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json | mcpServers |
| Claude Code | .mcp.json | mcpServers |
| Cursor | ~/.cursor/mcp.json | mcpServers |
| VS Code | .vscode/mcp.json | servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | mcpServers |
Frequently asked questions
Is the MCP config the same for every client?
Nearly. Claude Desktop, Claude Code, Cursor and Windsurf all use an mcpServers object keyed by server name, with command, args and optional env. VS Code uses the same entry shape under a servers key instead.
Do I need to restart my client after adding an MCP server?
For Claude Desktop, yes — quit fully and reopen. Cursor and Windsurf can reconnect from their MCP panel, and Claude Code picks up a server as soon as claude mcp add returns.
Can one MCP server be used by several clients at once?
Yes. A server is just a process started by the client, so each client starts its own copy from its own config. The same command works in all of them.