MCP Directory

Claude Desktop MCP Configuration: The Exact Setup

One JSON file, one object, one hard restart — and four mistakes that eat an afternoon. Here's the exact Claude Desktop MCP configuration that works.

Hua·June 30, 2026·6 min read
A mesmerizing display of glowing neon blue optical fibers creating a futuristic atmosphere.
Photo by Georgie Devlin on Pexels

Claude Desktop MCP configuration is one file: claude_desktop_config.json, holding a single mcpServers object. Get the path right, get the JSON right, then fully quit and reopen — that sequence is the whole job. Everything below is the exact form, plus the four things that actually break it.

Claude Desktop is stdio-only, which shapes every decision here: it launches each server as a local child process and talks to it over standard input/output. That's not a limitation to fight — it's why roughly 90% of MCP servers run locally over stdio in the first place. Remote servers still work, but through a proxy, covered below.

Where claude_desktop_config.json lives

The config file is per-OS, and Claude will not create it for you — if it's missing, make it yourself.

OSPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

The reliable way to open it: Settings → Developer → Edit Config. That opens (or creates) the correct file in your default editor, so you never have to guess the path. If the Developer tab isn't visible, you're on an old build — update first.

The mcpServers shape

Every entry is a named key under mcpServers with a command and its args. Here's a minimal, correct config running the official Filesystem reference server:

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

Three things to notice. The key ("filesystem") is just a label you choose. npx -y fetches and runs the package without a global install. The trailing path argument is the directory the server is allowed to touch — Filesystem read/writes only inside the directories you pass, so scope it tight.

Servers that need credentials take an env block. The GitHub MCP Server is the common example:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
    }
  }
}

Don't hand-write these from memory. Each server page gives you the exact block, and the config generator merges several servers into one valid file — which matters, because one stray comma invalidates the entire config.

Restart, don't reload

Claude Desktop reads the config once, at launch. Editing the file changes nothing until you fully quit and reopen — on macOS that means Cmd+Q, not closing the window; on Windows, exit from the tray, not the X. This single mistake is behind most "my server isn't showing up" reports. There is no hot reload.

After a proper restart, look for the tools icon in the input box. If your server's tools appear there, configuration succeeded. If not, jump to the four causes below.

Remote servers need the mcp-remote proxy

Claude Desktop has no native remote transport, so a hosted MCP endpoint can't go in as a plain url. You bridge it with the mcp-remote proxy, which runs locally and forwards to the remote server:

{
  "mcpServers": {
    "remote-example": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://example.com/mcp"]
    }
  }
}

This is why the same server can look different across clients — Cursor might take a url directly while Claude Desktop wraps it. If you're deciding whether to run a server locally or reach for the proxy, local vs remote MCP walks the trade-offs. The Claude client setup page shows the exact bridged form per server.

Don't blow the tool budget

More servers is not better. Every server injects its tools into Claude's active set, and tool selection degrades once you're past roughly 40 tools — that's the practical client budget. A server like Context7, which pulls version-specific library docs into the model, earns its slot; a grab-bag of servers you rarely call just crowds the list and makes Claude pick worse tools.

Be deliberate. Three to five focused servers beats a dozen. Browse the best MCP servers by what you actually do, and cut anything you haven't used in a week.

When it's not working — the four usual causes

Nearly every failed Claude Desktop MCP configuration is one of these:

  1. npx not found — Node isn't installed or isn't on Claude's PATH. Install Node; on macOS, launching Claude from Finder can miss a shell-set PATH, so a fresh install to a standard location is safest.
  2. Reloaded instead of restarted — see above. Cmd+Q / tray-exit, then reopen.
  3. Malformed JSON — a trailing comma or unquoted key breaks the whole file silently. Paste from the server page or the generator instead of editing by hand.
  4. Missing env credential — the server needs a token you didn't supply, so it starts and immediately dies. Check the server's auth requirements on its page.

If you're still stuck, the troubleshooting guide has the specific error signatures and fixes. For the full end-to-end walkthrough across clients, see how to add an MCP server.

FAQ

Where is the Claude Desktop MCP configuration file?

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json. Windows: %APPDATA%\Claude\claude_desktop_config.json. The safest way to open it is Settings → Developer → Edit Config, which creates the file if it doesn't exist — Claude won't generate it on its own.

Do I need to restart Claude Desktop after editing the config?

Yes, and a window close or reload is not enough. Claude reads the config only at launch, so you must fully quit (Cmd+Q on macOS, tray-exit on Windows) and reopen. Skipping this is the single most common reason a newly added server doesn't appear.

Is editing claude_desktop_config.json safe?

Yes — it's a plain local JSON file that only tells Claude which server processes to launch. The real risk isn't the file, it's what a server can do: scope filesystem access to specific directories, keep API tokens in the env block, and only install servers you trust. Official reference and vendor servers are the safest starting point.

How do I add a remote MCP server to Claude Desktop?

Claude Desktop has no native remote transport, so you bridge it with the mcp-remote proxy: set command to npx and pass mcp-remote plus the endpoint URL in args. Roughly 90% of servers run locally over stdio and need no proxy at all.

How many MCP servers can I add to Claude Desktop?

There's no hard cap, but tool selection degrades past about 40 tools total, which is the practical client budget. Since the typical server exposes around a dozen tools, three to five focused servers is a better target than a long list you rarely use.

Put this into practice

Browse MCP servers by capability, or check your own setup's tool budget and security.

More essays