Claude Desktop MCP: The Config File, Extensions and Connectors
Updated October 31, 2026
Claude Desktop MCP works three ways: edit claude_desktop_config.json to run local servers, install a desktop extension (.mcpb) in one click, or add a remote server as a connector. On a Mac the config file lives at ~/Library/Application Support/Claude/claude_desktop_config.json, and on Windows at %APPDATA%\Claude\claude_desktop_config.json.
Most GitHub READMEs still send you straight to the JSON file. That's often the slowest of the three. Check for an extension or a hosted URL before you open the config file.
The first two run servers on your own computer and only work in the desktop app. Connectors talk to servers on the internet and work across Claude's apps. (The Claude MCP servers page explains local vs remote in full.)
Which one to use
| Config file | Desktop extension | Connector | |
|---|---|---|---|
| Server runs | On your computer | On your computer | On the internet |
| Setup | Edit JSON, restart the app | Click Install | Paste a URL or pick from the directory, sign in |
| Needs Node.js installed | Usually (for npx servers) | No, Claude Desktop bundles it | No |
| Works outside Claude Desktop | No | No | Yes |
| Updates | You | Automatic for directory extensions | The server's owner |
If you're not a developer and the server has an extension, use the extension. If it has a URL, use a connector. The config file is for everything else, and for developers who like seeing exactly what runs.
Run a local server from claude_desktop_config.json
Here's the official route, using the Filesystem server from the MCP docs as the example.
Open the file
- Click the Claude menu in your computer's menu bar (not the settings inside the chat window) and choose Settings.
- Open the Developer tab in the left sidebar.
- Click Edit Config. Claude creates the file if it doesn't exist yet.
Where the file lives:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Add a server
Each server goes under mcpServers, with a name, a command and its args. This one gives Claude two folders on a Mac:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Desktop",
"/Users/yourname/Downloads"
]
}
}
}
The folders at the end are the only places the server can reach. But inside them it runs with your user account's permissions, so it can do any file operation you can. List fewer folders rather than more.
A second server is another entry next to filesystem in the same mcpServers object. Servers that need an API key usually take it in an env block.
Restart and check
Quit Claude Desktop completely and reopen it. Closing the window isn't enough, because the app reads the file only at startup.
Then click the + ("Add files, connectors, and more") at the bottom-left of the message box, hover over Connectors and click Manage connectors. Your server should be listed with its tools. Claude asks for your approval before each file action.
Install a desktop extension (.mcpb)
Desktop extensions are local MCP servers packaged as single .mcpb files you install like a browser extension. You skip the JSON entirely, and you don't need Node.js, because Claude Desktop includes its own. They can run Node.js, Python or binary servers.
From Anthropic's directory:
- Go to Settings → Desktop app and click Manage next to Extensions. (On older versions it's Settings → Extensions.)
- Click Browse extensions and pick one. These are Anthropic-reviewed.
- Click Install and fill in any settings it asks for, like an API key.
For a .mcpb file someone sent you, go to the same Extensions screen, open Advanced settings, find the Extension Developer section and click Install Extension.
API keys and other sensitive fields are stored in your system's keychain: Keychain on macOS, Credential Manager on Windows, your distribution's keychain manager on Linux. Directory extensions update automatically, and ones you installed from a file need a new file. On Team and Enterprise plans, owners can turn public extensions off and push their own.
Add a remote server as a connector
If a server gives you an https:// address, it goes in as a connector, not in the config file. The official guide for that file only covers local commands.
In the desktop app it lives under Customize → Connectors, behind the + Add button. Paste the URL into the custom connector dialog and follow it through. The custom connector guide has every step and what each sign-in option means.
But connectors behave differently from the other two in two ways. They live on your Claude account rather than this computer, so the same connector is there on claude.ai and in Claude Code. And the server has to be reachable from the internet, for reasons the custom connector guide explains.
A worked example: a WordPress site from Claude Desktop
Say you want Claude Desktop to make changes on your WordPress site. Nothing about that lives on your computer, so it's a connector. Using Kitepod as the example (a free remote MCP server plus a WordPress plugin), you install the plugin, click Connect in wp-admin, then add https://kitepod.com/mcp as a custom connector and sign in.
You never touch the config file or install Node.js. Then:
Change the tagline on my site to "Small-batch bread, baked daily" and show me a preview first.
More on the WordPress side on the WordPress MCP page.
What goes wrong
Work through these in order when a config-file server won't show up:
- Quit Claude Desktop completely and reopen it. A closed window doesn't count.
- Check the JSON is valid. A trailing comma is the usual culprit.
- Check every path is absolute, not relative.
- Run
node --versionin a terminal. Most config-file servers need Node.js fornpx. - Run the server's command yourself in a terminal to see the real error.
- Read the logs. On macOS they're in
~/Library/Logs/Claude, on Windows in%APPDATA%\Claude\logs, and on Linux in~/.config/Claude/logs.mcp.logcovers connections, and eachmcp-server-NAME.logholds that server's own output. On a Mac,tail -n 20 -f ~/Library/Logs/Claude/mcp*.logfollows them live.
On Windows, an ENOENT error that mentions ${APPDATA} means you should add the expanded APPDATA path to the server's env block, as the MCP docs show. If npx still fails, install npm globally with npm install -g npm.
If an extension's tools are missing, update Claude Desktop, restart it, and check its required settings are filled in.
And if a server works here but not on claude.ai, nothing's broken. Local servers stay on this computer.
Finer points
Where is claude_desktop_config.json?
~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows and ~/.config/Claude/ on Linux. Settings → Developer → Edit Config opens it and creates it if it's missing.
Do I need Node.js for Claude Desktop MCP?
For most config-file servers, yes. For desktop extensions and connectors, no.
Can I move my Claude Desktop servers to Claude Code?
Yes. Run claude mcp add-from-claude-desktop and pick the servers to import. It works on macOS and WSL, and server names containing spaces get skipped.
Does Claude Desktop MCP work on Linux?
Yes. The MCP project's guide lists Claude Desktop for Linux, with the config at ~/.config/Claude/claude_desktop_config.json and logs in ~/.config/Claude/logs, and Anthropic's extension docs cover Linux keychain storage.
And when a server has neither an extension nor a URL, the JSON file is still there, and it still does the job.