| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
|---|---|
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | No published path. The documentation lists macOS and Windows only. |
Do not go looking for it in Finder. Open Claude Desktop, go to Settings, click the Developer tab in the left sidebar, and click Edit Config. That opens the file in your editor and creates it first if it does not exist, which is the usual reason a search turns up nothing.
{
"mcpServers": {
"zip": {
"command": "/opt/homebrew/bin/node",
"args": ["/Users/you/mcp-servers/servers/zip/dist/index.js"]
}
}
}
One object, one key, one server. Add a second server as a sibling of "zip", not as a
second mcpServers block. Environment variables go in an "env" object next to
"command".
Relative paths. Everything in this file must be absolute. There is no project directory to resolve against.
A bare command name. "command": "npx" works only if npx sits on the
limited PATH a GUI app inherits. On a machine where node came from nvm or Homebrew, it does not.
which node in a terminal prints the string to paste.
Both disappear if you use a .mcpb bundle instead: Claude Desktop unpacks it, records
it as an extension, and runs it with its own bundled Node. The
latest release has one per
server, 31 in v0.20.0.
| Client | File | Top-level key |
|---|---|---|
| Claude Desktop | claude_desktop_config.json | mcpServers |
| Claude Code | .mcp.json at the repo root, or ~/.claude.json | mcpServers |
| Cursor | .cursor/mcp.json, or ~/.cursor/mcp.json | mcpServers |
| VS Code | .vscode/mcp.json | servers |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | mcpServers |
| Cline | ~/.cline/mcp.json for the CLI; the panel for the extension | mcpServers |
Note the VS Code row. It is the one client that does not use mcpServers, and a config
pasted from anywhere else parses cleanly and contributes zero servers. Every row here was read off the
client's own documentation on 2026-09-02 and is recorded with its source URL in
billing/src/setup.js.
Per-server, per-client pages with the full block to paste are at setup.
It appears in the desktop app only, not on claude.ai. If you are looking at the web app there is no local config file at all; use a hosted server URL instead, which the Claude connector dialog accepts directly.
It has been reported that Claude Desktop replaces a symlinked claude_desktop_config.json with a regular file when it writes, so the link does not survive. Keep the source of truth elsewhere and copy it in.
An "env" object next to "command", holding string values only. Numbers and booleans have to be quoted. For these servers the only one that matters is MCP_LICENSE_KEY, and leaving it out is what runs the free tier.
It is the label the client shows and the prefix it puts on tool names, so keep it short and stable. Changing it later is safe: the servers store their data under a fixed directory in ~/.local/share/mcp-servers/, keyed by the server, not by whatever you called it in the config.
All MCP servers and prices · All guides · Buy the bundle $39