Skip to main content

Guides / AI assistants and MCP

How to connect MCP servers to Claude Desktop

Claude Desktop connects to MCP servers in two ways: a remote server is added as a custom connector under Settings, Connectors, by pasting its URL, and a local server is declared in claude_desktop_config.json, reached through Settings, Developer, Edit Config, followed by a full restart of the app. Extensions from the built-in directory are a third, one-click route for local servers that have been packaged for it.

Remote servers: add a custom connector

Open Claude Desktop, go to Settings, then Connectors, and click Add custom connector. Give it a name, paste the server URL, and confirm. Custom connectors using remote MCP are available on the Free, Pro, Max, Team and Enterprise plans; a Free account is limited to one custom connector. On Team and Enterprise plans an organization owner adds the connector in the organization settings first, and members then enable it from their own Connectors page.

Servers that support OAuth ask you to sign in and approve scopes in the browser the first time you use them; nothing else is needed. An optional Advanced settings section takes an OAuth client ID and secret for servers that require a pre-registered client, which most public servers do not. For HostTracker's server the URL is https://mcp.host-tracker.com/mcp; it uses OAuth with dynamic client registration, so the connector holds only the scopes you approve, and there is no key to paste.

Connectors run from Anthropic's side rather than from your machine, so they cannot reach a server on your local network, and they are the same mechanism that claude.ai and Cowork use. The config file described next is the local counterpart.

Local servers: edit claude_desktop_config.json

Open Settings, choose the Developer tab, and click Edit Config. That opens the configuration file in your editor, creating it if it does not exist yet. The file lives at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and at %APPDATA%\Claude\claude_desktop_config.json on Windows; on the Linux beta, use the Edit Config button rather than guessing a path. Each server is an entry under mcpServers with the command to start and its arguments:

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

Save the file, then quit Claude Desktop completely and start it again; a window close is not enough, because the servers are launched when the app starts. On Windows the runtime the command relies on, such as Node.js for npx, has to be installed and on the PATH that the desktop app sees, so a server that runs fine in a terminal but not from the app is usually a PATH difference.

To see that a server loaded, click the "Add files, connectors, and more" icon at the bottom left of the message box, hover Connectors, and open Manage connectors; the server is listed there with its tools. Older documentation calls this the hammer icon, and the troubleshooting page still uses that name in one heading.

Extensions from the directory

Settings, then Extensions, then Browse extensions shows a curated directory of local servers packaged as extensions, which install with a single click and update themselves. A downloaded bundle installs through Install Extension by choosing the file; these bundles use the .mcpb format, which replaced the earlier .dxt name, and can wrap Node.js, Python or binary servers. Privately distributed bundles do not auto-update and have to be reinstalled by hand after a change.

Where the logs are when nothing shows up

Claude Desktop writes a general connection log and one log per server. On macOS they are under ~/Library/Logs/Claude/ as mcp.log and mcp-server-NAME.log; on Windows under %APPDATA%\Claude\logs. The per-server file carries the server's own error output, which is where a missing module, a bad path or a rejected credential is spelled out. If the file is empty the app never managed to start the command at all, which points back at the PATH or at a JSON syntax error in the config file.

One app, two surfaces

Claude Desktop now includes a Code tab that runs Claude Code inside the application, alongside the Chat tab. Servers declared in claude_desktop_config.json are available in both the chat surface and local Code tab sessions, next to those from ~/.claude.json and a project's .mcp.json; when the same name exists in both places, the Code tab takes the desktop file's definition. The standalone command-line Claude Code does not read the desktop file. If you set up servers in the desktop app first and want them in the terminal, claude mcp add-from-claude-desktop imports them on macOS and Windows Subsystem for Linux, as described in how to add an MCP server to Claude Code.

A remote monitoring server as the first connector

A remote server is the quickest way to confirm the connector flow works, since there is nothing to install and the answer is checkable. Add HostTracker's server as a custom connector, sign in when prompted, and ask Claude whether a site you know is up; the reply should cite a check run from HostTracker's checkpoints in named locations rather than a guess. The MCP server page lists all 65 tools and the scopes each one needs, from instant checks to status-page updates.

Monitor this permanently

Get alerted the moment it breaks: HostTracker checks from 300+ locations and notifies you by email, SMS, Slack, Telegram and more.

HostTracker features

More in this section: AI assistants and MCP