The usual failure is not the server. It is putting a URL in the file that only launches subprocesses, or putting an npx command in the connector dialog that only accepts a public HTTPS endpoint.

Claude has two MCP install paths. They look adjacent in Settings. They are not interchangeable.

This is the setup article: how to add an MCP server to Claude.ai and Claude Desktop, how to tell which path you are on, and how to prove the tools actually loaded. It is not a ranking of servers. If you want the job-based shortlist, use the best MCP servers for Claude. Copy-paste snippets for other hosts live on client setup and the configuration cheat sheet.

Checked against Anthropic's custom-connector help and Desktop local-server help on 14 September 2026. The connector sections were re-checked against Anthropic's connector verification, add-a-connector, directory, getting-started, and directory-vs-custom docs on 25 October 2026.

Which path you are actually on

Blue Ethernet cable plugged into a laptop with the link light on
Photo: yakshas / Flickr (CC BY-SA 2.0).

An MCP server is a process that exposes tools over the Model Context Protocol. Claude can talk to one in three ways. Mixing any two of them produces the "I added it and nothing happened" report.

1. Custom connectors (remote). You paste a URL under Customize → Connectors (or Organization settings → Connectors on Team/Enterprise). Claude then reaches that server from Anthropic's cloud, not from your laptop. This is true on claude.ai, Claude Desktop, Cowork, and the mobile apps. The server must be on the public internet. Localhost, a VPN-only host, and a Docker port on your machine will fail here even if curl from the same laptop works.

Anthropic ships this on Free, Pro, Max, Team, and Enterprise. Free plans are limited to one custom connector. Team and Enterprise members cannot add their own URL until an Owner has added it for the org.

2. Local Desktop servers (stdio). You edit claude_desktop_config.json. Claude Desktop launches a command as a subprocess and talks over stdin/stdout. The connection originates on your machine. Filesystem access, a local browser, Docker, and secrets in the environment belong here. These servers are not available in Cowork or on claude.ai. Official walkthrough: Connect to local MCP servers.

3. Desktop extensions (.mcpb). A packaged local server you install from Settings → Extensions, or by opening a .mcpb file. Same local process model as (2), without hand-editing JSON. Directory extensions update automatically. A file you were emailed does not.

Claude Code is a fourth client with its own CLI (claude mcp add). This page does not retread that. The walkthrough is Claude Code MCP setup. If you already connected a remote server on claude.ai and you log into Claude Code with that account, the connector can show up there automatically. For a first Claude setup, stay on Desktop or claude.ai.

A remote MCP server in the useful sense is path 1: Streamable HTTP on a public URL, usually OAuth. Path 2 is the local stdio file. Putting the remote URL in that file will not register a custom connector.

Claude connectors vs custom connectors

In Claude, a connector is how a remote MCP server gets into your chats. It comes from one of two places: Anthropic's Connectors Directory, or a URL you paste yourself.

Directory connectors are MCP servers from Anthropic and third-party developers, listed in Anthropic's directory after review. You find them under Customize → Connectors → Discover. Search by name, open the listing, and click Connect to Claude. The same catalog serves claude.ai, Desktop, mobile, Cowork, and Claude Code. Listed connectors can also appear as Suggested Connectors inside a chat.

Custom connectors are any remote MCP server you add by its URL. Anthropic has not reviewed it. The steps are in the next section.

Anthropic's docs say both kinds run on the same infrastructure, with the same transport, authentication, and tool-calling code paths. Once a connector is connected, the label does not change what it can do. The differences are review and discovery:

Directory connectorCustom connector
How you add itBrowse or search, then Connect to ClaudePaste the server URL
Anthropic reviewYes: screened (Community) or tested (Verified)None
Label in your listCheckmark, or CommunityCustom
Found in-productDirectory search and Suggested ConnectorsNo

Verified, Community, and Custom labels

  • Verified (checkmark): Anthropic tested the connector's tools for quality and compatibility, and it met the Software Directory Policy when reviewed. Anthropic says plainly that this is not a security audit. The developer still controls the tools and can change them later.
  • Community: a third-party connector that Anthropic screened before listing but did not review in depth. Claude shows a reminder before you connect one. New submissions are listed as Community by default. Anthropic may escalate listings it flags as highly useful to Verified review. That is assessed automatically, and there is no application for the checkmark.
  • Custom: one you, or your organization's Owner, added by URL. No review at all.

Two Custom-label quirks. If an Owner adds a URL on a domain that matches a directory listing, it shows that service's name and logo instead of "Custom", yet it is still the exact URL the Owner typed. In the other direction, if a provider moves the endpoint behind its listing (from /sse to /mcp, say), your existing connection keeps working but now shows as Custom. Remove it and re-add it from the directory to move over. Re-adding without removing gives you two connections.

On a Team plan, members who are not allowed to enable connectors see Request on directory listings instead of a connect button. The request goes to the Owners.

DialMCP is not listed in the directory today, so it is a custom connector. Paste https://mcp.dialmcp.com/mcp as shown below.

Add a remote MCP server (custom connector)

This is the path for anything hosted: GitHub's remote server, a SaaS MCP endpoint, DialMCP, a server you deployed yourself.

Pro, Max, and Free

  1. Open Claude on the web or in the Desktop app. Go to Customize → Connectors.
  2. Click + Add, then Add custom connector.
  3. Enter a name (it is the label you will see in the list) and the server URL. For DialMCP that is https://mcp.dialmcp.com/mcp. Keep the /mcp path. Click Continue.
  4. Review the authentication settings Claude detected. Change them only if the server's docs say so (details below).
  5. Click Add, then complete the browser sign-in the server starts.

The dialog layout varies by organization. Some accounts still get the older single screen with a name, a URL, and Advanced settings for an OAuth client ID and secret. Leave those blank unless the server's docs say to fill them. The two-step version asks for these settings:

  • Authentication: Sign in now, Sign in when needed, or No sign in. Pick a sign-in option for any server that uses OAuth. DialMCP does, because every call is tied to the person who verified the number.
  • OAuth client: Use Claude's published identity (Anthropic's recommendation), Register automatically, or Use your own OAuth client. The published identity relies on a Client ID Metadata Document, and Anthropic notes the server must support that method. "Register automatically" uses Dynamic Client Registration instead. DialMCP's authorization server advertises a registration endpoint and does not advertise Client ID Metadata Document support (checked 25 October 2026), so choose Register automatically for it.
  • Request headers (beta, only some organizations see it): fixed credentials such as an API key, up to four headers. Claude sends the value exactly as typed, so a bearer token needs the Bearer prefix. Standard names such as authorization, x-api-key, and x-auth-token are in the list. Any other name needs Anthropic's approval through support. On an OAuth connection you cannot set Authorization yourself. DialMCP needs no headers, so leave this empty.

You can rename a connector or change its URL later. You cannot change its authentication settings. To fix a wrong OAuth or header choice, remove the connector and add it again.

Team and Enterprise

Owners go first:

  1. Organization settings → Connectors.
  2. Add → Custom → Web.
  3. Name the connector, paste the remote MCP URL, and click Continue.
  4. Review the detected authentication and OAuth client settings (and request headers, if your organization has the beta). The choices are the same as above.
  5. Add.

On Enterprise, a member whose custom role includes managing the organization's libraries can add one too. Request headers on an org connector are shared, so everyone who uses it reaches the service with that one credential. Use a credential limited to what members should access.

Members then open Customize → Connectors, find the connector (usually labeled Custom), and click Connect so their account authorizes. The Owner adding the URL does not grant every member the server's data. Each person signs in as themselves.

If the URL happens to match a Connectors Directory listing, Claude may show that service's name instead of "Custom". Anthropic says it is still the URL the Owner typed.

Turn it on in a chat

Configured is not enabled. In a conversation, use the + control, open Connectors, and toggle the server for that thread. You can leave a connector connected and still keep it off in a given chat.

Per-tool control lives on the connector's own page under Customize → Connectors. Under Tool permissions, set each tool or tool group to Always allow, Needs approval, or Blocked. For a server that takes real-world actions, such as placing a phone call, Needs approval is the safer setting.

Then ask something that requires a tool. "What tools do you have from <name>?" is a boring prompt and a good one. If Claude lists tools, the MCP server is in the session. If it apologizes and offers a web search, the toggle is off, the OAuth token expired, or you are in a client that cannot see that connector.

Claude.ai and Desktop time out a connector tool call at 300 seconds. Huge tool results also get capped (about 150,000 characters on those surfaces). If a server hangs past five minutes, that is the host, not your prompt.

Add a local MCP server on Claude Desktop

Use this when the tool has to run on the machine in front of you.

The JSON file

On macOS, click the Claude menu in the system menu bar (not the in-window account menu) → Settings → Developer → Edit Config. That opens or creates:

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

A filesystem server, from the official MCP tutorial, looks like this. Replace username and the directories you actually want to grant:

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

On Windows the same shape uses C:\\Users\\username\\Desktop style paths. The server runs as you. Do not point it at $HOME because you were in a hurry.

Save, then fully quit Claude Desktop and reopen it. Partial reloads leave the old subprocess running.

Prove it loaded

In the chat box, open + → Connectors → Manage connectors (wording has moved around; Developer settings also shows connection status). You should see filesystem and its tools. Logs, if you need them:

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

mcp.log is the connection story. mcp-server-SERVERNAME.log is that server's stderr. For every config key and a fix table for the common failures, see our claude_desktop_config.json reference.

Desktop extensions instead of JSON

If you have a .mcpb (MCP Bundle) or you want something from Anthropic's extension directory:

  1. Settings → Extensions.
  2. Browse the directory and Install, or Advanced settings → Install Extension… and pick the .mcpb.
  3. Fill API keys in the form. Sensitive fields go into the OS keychain, not the JSON file.

Team and Enterprise Owners can allowlist public extensions and upload private .mcpb files for the org. Machine-level enterprise policy can disable extensions entirely; if isDesktopExtensionEnabled is false, the in-app allowlist will not save you.

A local stdio server will never appear as a custom connector on claude.ai. That is not a bug.

Mistakes that look like a dead Claude MCP server

URL in claude_desktop_config.json. That file launches commands. A "url" entry there is the wrong shape for Desktop local, and it does not create a custom connector. Remote DialMCP is Connectors. The npx bridge (npx -y dialmcp-connector) is the stdio shim if you specifically need the JSON file.

Localhost as a custom connector. Anthropic's servers cannot route to 127.0.0.1 on your laptop. Publish the server, or use Desktop local / Claude Code against loopback.

Free-plan second connector. Free allows one custom connector. Remove the one you have before adding another, or upgrade.

Published identity on a server that does not support it. "Use Claude's published identity" is the recommended OAuth client option, and it only works if the server supports Client ID Metadata Documents. If sign-in fails right after Add, this is a likely cause. Remove the connector and re-add it with "Register automatically". Authentication settings cannot be edited in place.

Owner added it, member never clicked Connect. On Team/Enterprise the org-level URL is not a substitute for the member OAuth.

Connector added, toggle left off. The + menu is per conversation.

JSON copied from Cursor or VS Code. Cursor uses mcpServers + url. VS Code has two shapes: servers in .vscode/mcp.json and mcpServers in its newer portable files (VS Code setup). Claude Desktop local wants command / args. Claude Code wants "type": "http" on a URL. The configuration page is the file-shape map. Do not paste across those files.

Expecting a label to mean "safe". Custom connectors are unreviewed. Community connectors were only screened. Anthropic says even the Verified checkmark is not a security audit, and every developer can change their tools after review. Review the OAuth scopes. Do not click Allow always on a server you just found in a gist. Report a malicious server through Anthropic's vulnerability program, asset https://github.com/modelcontextprotocol.

Research mode plus write tools. Advanced research can invoke connector tools without a further click. Anthropic's own guidance: disable write tools before you turn that on. Advanced research also cannot use local MCP servers.

A hosted example: DialMCP

If the job is "Claude should place a real phone call," you do not want a local npx weather clone. You want a hosted remote MCP server that already owns PSTN, disclosure, and opt-out.

DialMCP is that server. Endpoint https://mcp.dialmcp.com/mcp, Streamable HTTP, OAuth 2.1 plus SMS verification of a US or Canadian number. The number you verify is the caller ID. Paste the URL as a custom connector using the steps above. After OAuth, the tools in the tool reference (place_call, get_call, end_call, list_calls) should list in that chat.

If the client cannot do remote MCP at all, use the stdio bridge from install. The calling service is still the hosted URL. The bridge is a transport shim.

Which servers belong in Claude for coding jobs is a different page: best MCP servers. This one is how they get into the product.

Need Claude to place a real phone call? DialMCP is already hosted at https://mcp.dialmcp.com/mcp. Add it as a custom connector and finish SMS verification.

Claude client setup

FAQ

What is the difference between Claude connectors and custom connectors?

Both are remote MCP servers running on the same infrastructure. A directory connector is listed in Anthropic's Connectors Directory, carries a Verified or Community label, and can be found by search and Suggested Connectors. A custom connector is one you add by pasting its URL. Anthropic has not reviewed it, and it shows a Custom label.

Can I add an MCP server to Claude on the free plan?

Yes. Custom connectors work on Free, limited to one. Local Desktop servers and desktop extensions are a Desktop install, not a custom connector.

Why does Claude.ai not see the server I added on Desktop?

If you added it in claude_desktop_config.json, it is local stdio. claude.ai cannot use it. Add the same capability as a custom connector only if it has a public HTTPS URL.

Do I need Node.js?

For directory extensions, no. Claude Desktop ships a Node runtime for those. For a hand-written npx line in claude_desktop_config.json, yes. Node LTS. For a remote custom connector, no local runtime.

Is "Claude MCP server" a kind of server?

It is the search query. The protocol is MCP. The host is Claude. Any MCP server Claude can call is a Claude MCP server in that sense, including ones built for Cursor. The install path is what changes.

Where does Claude Code fit?

claude mcp add --transport http <name> <url> for remote, or a command for stdio. Connectors you already added on claude.ai can appear in Claude Code when you log in with that account. Snippets: client setup.

Further reading