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.
Which path you are actually on
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.
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
- Open Claude on the web or in the Desktop app. Go to Customize → Connectors.
- Click +, then Add custom connector.
- Paste the server URL. For DialMCP that is
https://mcp.dialmcp.com/mcp. Keep the/mcppath. Do not add an API key field. DialMCP has none; extra headers can break the OAuth handshake. - Optional: Advanced settings for a pre-registered OAuth Client ID and secret. Skip this unless the server's docs tell you to fill it.
- Click Add, then complete the browser sign-in the server starts.
Anthropic's docs also describe a beta for request-header auth (API keys, bearer tokens) on custom connectors. It is rolling out; do not assume you have it. If the server speaks OAuth, use OAuth.
Team and Enterprise
Owners go first:
- Organization settings → Connectors.
- Add → Custom → Web.
- Paste the remote MCP URL. Optional OAuth client credentials.
- Add.
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.
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.
Desktop extensions instead of JSON
If you have a .mcpb (MCP Bundle) or you want something from Anthropic's extension directory:
- Settings → Extensions.
- Browse the directory and Install, or Advanced settings → Install Extension… and pick the
.mcpb. - 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. The second Add will fail or replace. Remove one, or upgrade.
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 uses a servers key in mcp.json, not settings.json. 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 Directory review to mean "safe". Custom connectors are unverified services. Anthropic says so in the help article. 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.
FAQ
Can I add an MCP server to Claude on the free plan?
Yes. Custom connectors work on Free. You get one. Local Desktop servers and directory extensions are a Desktop install, not a connector slot.
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.