← Blog

Claude Desktop MCP: Connectors, Extensions or Config File

October 27, 2026

AI Coding

There are three ways to use MCP in the Claude Desktop app: add a remote server as a custom connector, install a local server as a desktop extension (a .mcpb file), or list a local server by hand in claude_desktop_config.json. Connectors are the easiest and follow your account everywhere. Extensions are one-click local installs. The config file is the manual route for any local server that doesn't ship as an extension, and it's the one that breaks most often.

Here's how the three compare:

MethodWhere the server runsHow you add itBest for
Custom connectorOn the internet; Claude connects from Anthropic's cloudPaste a server URL in the Connectors settingsHosted services such as project tools and SaaS apps
Desktop extension (.mcpb)On your computerInstall from the extension directory, or open a .mcpb fileLocal tools packaged by the developer
claude_desktop_config.jsonOn your computerAdd a command and arguments to a JSON file, then restartAny local server, including ones you build yourself

This guide covers the desktop app only. If you're configuring the command-line tool instead, Claude Code has its own scopes and commands, which we walk through in Claude Code MCP server configuration. For what the desktop app does beyond MCP, see our Claude Desktop overview.

One warning before you start: Anthropic has been reshuffling the app's settings, so a menu label in your build may differ slightly from the ones below. Where Anthropic documents both an old and a new layout, both are given.

Option 1: Add a remote MCP server as a custom connector

Use this when the server lives at a URL, such as https://example.com/mcp. Many SaaS tools now publish one.

According to Anthropic's custom connectors guide, the steps for an individual account are:

  1. Go to Customize > Connectors, select + Add, then Add custom connector. (Older builds put this under Settings > Connectors.)
  2. Give it a name. That's the label you'll see in the connectors list.
  3. Paste the remote MCP server URL and click Continue.
  4. Check the detected authentication settings and pick Sign in now, Sign in when needed or No sign in.
  5. If the server uses an API key instead of OAuth, add it under Request headers.
  6. Click Add.

Then open a chat, click the + button in the message box, and hover over Connectors to see the server and its tools.

Two details catch people out.

The server must be reachable from the public internet. Anthropic's guide says Claude connects to remote servers "from Anthropic's cloud infrastructure, rather than from your local device." A server on localhost or behind your company VPN won't connect unless Anthropic's IP addresses are allowlisted. If your server only runs on your laptop, use Option 2 or 3.

Connectors belong to your account, not your computer. Add one and it's available in Claude on the web too. Local servers from the config file are a separate mechanism and stay on the machine where you set them up.

What about SSE servers?

The current MCP transport specification lists two standard transports: stdio, where the app launches the server as a local process, and Streamable HTTP, where each message is an HTTP request and replies can stream back over SSE. The older standalone SSE transport isn't one of them.

So for "claude desktop mcp sse" setups: a remote URL always goes in as a connector, never in the config file. If a vendor only gives you an old SSE-style endpoint and it won't connect, ask whether they offer a Streamable HTTP endpoint.

Option 2: Install a desktop extension (.mcpb)

Desktop extensions are local MCP servers packed into a single file. Anthropic's local MCP servers guide describes them as single-click installable packages that spare you from editing JSON or managing dependencies.

From the directory:

  1. Go to Settings > Desktop app and click Manage next to Extensions. (Older layout: Settings > Extensions.)
  2. Click Browse extensions and pick an Anthropic-reviewed tool.
  3. Click Install and fill in any required fields, such as an API key.

From a .mcpb file someone sent you:

  1. Open the same Extensions page.
  2. Click Advanced settings and find the Extension Developer section.
  3. Click Install Extension…, select the file and follow the prompts.

Three things make extensions easier than the config file:

  • No Node.js install needed. Claude Desktop ships with a built-in Node.js environment, and extensions can be Node.js, Python or binary servers.
  • Secrets are stored properly. When a developer marks a field as sensitive, Claude Desktop encrypts it with your operating system's secure store: Keychain on macOS, Credential Manager on Windows.
  • Directory extensions update automatically by default. Extensions installed from a private .mcpb file don't; you install the new file yourself.

The format itself is open. The MCPB repository explains that a bundle is a zip archive containing the server and a manifest.json, and that the project was renamed from DXT (Desktop Extensions) to MCPB (MCP Bundles). An old .dxt file you find in a tutorial is the same idea under the previous name.

Treat a .mcpb from an unknown source like any other program you download: it runs on your computer with your permissions.

Option 3: Edit claude_desktop_config.json by hand

This is the original way to add a local server, and still the only way for a server that isn't packaged as an extension.

1. Open the file. The MCP project's guide to connecting local servers says to open Settings from the Claude menu in your system menu bar (not the settings inside the chat window), go to the Developer tab and click Edit Config. That creates the file if it doesn't exist. It lives at:

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

2. Add a server under mcpServers. Each entry has a name, a command and its args. This example from the same guide starts the official filesystem server with access to two folders:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

Replace username with your own. Every folder you list is a folder Claude can read and change, so keep the list short. To add a second server, add another named entry inside mcpServers. Don't paste a second mcpServers block, which is the most common reason a file stops working.

If a server needs an API key, put it in an env object inside that server's entry.

3. Quit Claude Desktop completely and reopen it. Closing the window isn't enough. The app only reads the file on launch.

4. Check it loaded. Click + in the message box, hover over Connectors, then Manage connectors, and look for your server's name and tools. Claude asks for your approval before it uses a tool.

Not sure which server to start with? Our list of the best MCP servers covers the official reference set and the checks worth running before you install anything else. Most are local servers that go in this file.

Claude Desktop MCP logs and troubleshooting

When a server doesn't appear, the logs usually say why. Per the MCP project's debugging guide, Claude Desktop writes them to:

  • macOS: ~/Library/Logs/Claude
  • Windows: %APPDATA%\Claude\logs

Two kinds of file matter. mcp.log covers connections in general and connection failures. Files named mcp-server-SERVERNAME.log hold what each server printed to stderr. On a Mac, tail -n 20 -F ~/Library/Logs/Claude/mcp*.log in Terminal shows the latest lines and follows new ones while you restart the app.

Desktop extensions also show their status on the Extensions page, under Local MCP servers (older layout: Settings > Developer).

The server doesn't show up at all

Work through these in order:

  1. Validate the JSON. One missing comma or an extra bracket and the whole file is ignored. Check it locally, since the file may hold API keys in env. On a Mac, run python3 -m json.tool ~/Library/Application\ Support/Claude/claude_desktop_config.json (or jq . <file> if you have jq); it prints the file if it's valid and the line of the first error if not. On Windows, Get-Content "$env:APPDATA\Claude\claude_desktop_config.json" -Raw | ConvertFrom-Json in PowerShell does the same check. Don't paste the file into an online validator unless you've removed every secret value first.
  2. Use absolute paths. The working directory for a server launched from the config may be undefined, such as / on macOS, so ./data points nowhere. Write /Users/you/data.
  3. Fully quit and relaunch the app.
  4. Run the command yourself. Paste the same command and args into a terminal. If it errors there, it will error in Claude too, and you'll see the message directly.
  5. Read the server's log file for the actual error.

"npx not found" or the wrong Node version

The config method needs Node.js installed for most servers. Unlike extensions, it doesn't use the bundled runtime. Run node --version to check.

If Node is installed and the server still won't start, the app may not be finding it. Servers launched this way inherit only a limited set of environment variables, so a Node installed through a version manager such as nvm can be visible in your terminal but not to Claude Desktop. The fix the debugging guide suggests is an absolute path for command. Run which npx (macOS) or where npx (Windows) and paste the full path in place of the bare npx.

Windows: ENOENT and ${APPDATA} in the error

If a server fails on Windows and the log mentions ${APPDATA} inside a path, the local servers guide's fix is to add the expanded value of %APPDATA% to the server's env key in the config file, then relaunch. If npx still fails, check that npm is installed globally: the folder %APPDATA%\npm should exist.

Tools appear but calls fail

Check the server's log, confirm the server runs without errors on its own, and restart the app. For extensions, Anthropic's guide adds two checks: required fields filled in, and API keys still valid. If you're building your own server, never print to stdout from a stdio server. The protocol uses stdout, and stray output breaks it.

Which plans support Claude Desktop MCP

FeaturePlans, according to AnthropicNotes
Custom connectors (remote MCP)Free, Pro, Max, Team and EnterpriseFree users are limited to one custom connector
Desktop extensionsRuns in the desktop appOn Team and Enterprise, owners decide which extensions members can use and can upload custom ones
claude_desktop_config.jsonRuns in the desktop appLocal to that computer; not available in Claude on the web

The connector row comes from Anthropic's custom connectors guide; the extension row from its local MCP servers guide. On Team plans only owners can add organization-wide connectors, which members then connect from Customize > Connectors. If your work account's Extensions page looks locked down, that's usually an admin policy rather than a bug.

FAQ

Is "Claude Desktop MCP support" available on Linux?

Claude Desktop runs on Linux in beta, and Anthropic's local MCP guide covers Linux too: sensitive extension fields go into your distribution's keychain manager. The MCP project's config guide only lists claude_desktop_config.json paths for macOS and Windows, so on Linux, extensions and connectors are the better-documented routes. Connectors are account-level, so they work wherever you sign in.

Is there an official MCP installer for Claude Desktop?

Desktop extensions are the closest thing. Browse the directory, click Install, and Claude Desktop handles the runtime and settings. Anything else sold as an "MCP installer" is a third-party tool, so check what it changes on your machine before you run it.

Do I need to restart Claude Desktop after every config change?

Yes. The app reads the file only when it launches, so quit it fully, not just the window. The MCP debugging guide gives the same advice when you change a server's code.

Why can't Claude Desktop see the server I added in Claude Code?

They're separate configurations. Claude Code keeps its own MCP settings, and Claude Desktop reads only its own config file, extensions and your account's connectors.

My connectors moved after an update. Did I lose them?

Probably not. Anthropic merged Cowork and chat into one Claude in September 2026, and its announcement says existing connectors and skills carried over. Check Customize > Connectors.

Can I connect Slack or other work apps this way?

Usually as a connector, because most SaaS vendors host the server for you. We cover one example end to end in the Slack MCP server guide.

Key points

  • Remote URL? Add it as a custom connector. It follows your account, is available on every plan (Free accounts get one), and needs a server reachable from the public internet.
  • Packaged local tool? Install it as a desktop extension. No Node.js setup, secrets go in your OS keychain, and directory extensions update themselves.
  • Anything else local? Add it to claude_desktop_config.json, use absolute paths, and quit the app completely before testing.
  • Stuck? Read mcp.log and mcp-server-NAME.log in ~/Library/Logs/Claude or %APPDATA%\Claude\logs, and try an absolute path to npx.

Most of the effort here goes into getting a working environment: the right Node, valid JSON, the right paths, a full restart. If that setup step is where you keep stalling, Taku mirrors an AI setup someone already got working into a desktop workspace, so you can run it without rebuilding their environment first. Taku is in Beta, and the Mac app is available now.