How to Add an MCP Server to Claude Desktop
Custom connectors for hosted servers, one-click desktop extensions, and claude_desktop_config.json for everything else.
There are three ways to connect an MCP server to Claude Desktop, and which one you use depends on the server, not on you. A hosted server goes in as a custom connector. A packaged local server installs as a desktop extension in one click. Any other local server goes in the claude_desktop_config.json file. This guide covers all three and how to tell which applies.
If you already know the server you want, its page in our MCP server directory says whether it's hosted or local and gives the exact settings to paste.
Which route to use
| The server is... | Use | Plans |
|---|---|---|
| Hosted by the vendor, with OAuth or no sign-in | Custom connector | Pro, Max, Team, Enterprise |
| In Anthropic's extensions directory | Desktop extension | All desktop users |
Local, run with npx, uvx or docker | claude_desktop_config.json | All desktop users |
Hosted is the easiest to live with: nothing runs on your machine, the vendor keeps it updated, and the same connector works in Claude on the web and on your phone.
Route 1: add a hosted server as a custom connector
- Open Settings → Connectors.
- Click Add custom connector at the bottom of the list.
- Give it a name and paste the server's URL, for example
https://mcp.notion.com/mcpfor Notion. - Click Add, then Connect, and sign in on the vendor's page when it opens.
On Team and Enterprise plans an owner adds custom connectors in the organisation's admin settings, and members then connect their own accounts.
Custom connectors support OAuth and servers with no sign-in. They don't let you type an API key into a header. If a server's page says it needs an API key header, use its local setup below instead, or connect it through Claude Code, Cursor or VS Code.
Route 2: install a desktop extension
Desktop extensions (.mcpb files) are local servers packaged so they install like browser extensions. Claude Desktop ships its own Node.js runtime, so you don't need to install anything else.
- Open Settings → Extensions.
- Click Browse extensions and pick one from the directory.
- Click Install and fill in any settings it asks for, such as an API key or a folder to allow.
If a vendor gives you a .mcpb file directly, install it from Settings → Extensions → Advanced settings. On Team and Enterprise plans, owners can turn public extensions off, publish their own to the team, and keep an allowlist.
Route 3: add a local server in the config file
For any local server that isn't packaged as an extension:
- Open Settings → Developer from the Claude menu in your system menu bar (not the settings inside the chat window) and click Edit Config.
- That opens
claude_desktop_config.json:- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- Add the server under
mcpServers:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/you/Documents"
]
}
}
}
- Save, then fully quit Claude Desktop and open it again. Closing the window isn't enough.
To add a second server, add another entry inside the same mcpServers object. Keys go in an env block:
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@brave/brave-search-mcp-server", "--transport", "stdio"],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY"
}
}
}
}
Unlike desktop extensions, config-file servers use the npx, uvx or docker on your machine, so you need Node.js, uv or Docker installed as the server requires.
Check it's working
In a new chat, click the + button (Add files, connectors and more) at the bottom left of the message box, hover over Connectors, and choose Manage connectors. Your server should be listed with its tools. Claude asks for your approval before it uses a tool, and you can allow a tool once or always.
Common problems
The server doesn't appear after editing the config. Check the JSON is valid (a missing comma is the usual culprit), make sure paths are absolute, and fully quit and reopen the app.
It appears but fails to start. Run the same command in a terminal, for example npx -y @modelcontextprotocol/server-filesystem ~/Documents. Whatever error it prints is the real problem. Claude Desktop's own logs are in ~/Library/Logs/Claude on macOS and %APPDATA%\Claude\logs on Windows, with a mcp-server-NAME.log file per server.
Windows says it can't find ${APPDATA}. Add the expanded path to the server's env block, for example "APPDATA": "C:\\Users\\you\\AppData\\Roaming\\", and make sure npm is installed globally.
No "Add custom connector" button. Custom connectors need a paid plan, and on Team and Enterprise only owners can add them.
A note on trust
A local server runs with your user's permissions, so it can do anything you can do on your machine. Stick to servers maintained by the vendor or the MCP project where you can, and only give a filesystem server the folders it needs. Every page in the directory says who maintains the server. For why this matters in a business setting, see what could go wrong with AI automation.
Ready to implement these concepts in your organization? Our team can guide you through the entire MCP integration process.
Schedule a Consultation