Server management is four commands
claude mcp list shows every configured server, claude mcp get <name> gives one in detail, claude mcp remove <name> deletes it, and claude mcp reset-project-choices clears the approvals you gave to a .mcp.json.
Claude is a host, not a server: it consumes MCP servers rather than publishing one. Commands, scopes, config formats and connector rules below are read from Claude Code's MCP docs and Anthropic's help centre on 2 September 2026.
Interactive examples · No account is connected on this page
Updated
Claude MCP covers three surfaces with three different mechanics. In Claude Code you register a server with claude mcp add, choosing an http, sse, stdio or ws transport and a local, project or user scope. Claude Desktop installs local servers as single-click .mcpb extensions. On claude.ai, Cowork and the mobile apps, a remote server is added as a custom connector.
Pick an example to see which Claude MCP tools a task would call and what the result looks like. Examples are illustrative; nothing on this page connects to Claude.
Adding an MCP server to Claude takes three decisions: the transport the server speaks (http, sse, stdio or ws), the scope that decides who else gets it (local, project or user), and how it authenticates. In Claude Code all three go into one claude mcp add command; Claude Desktop and the apps use extensions and custom connectors instead.
Remote servers are added with --transport http, or --transport sse for the older SSE style, which the docs mark as deprecated. Local servers use --transport stdio, where everything after the -- separator is the command Claude runs. WebSocket servers have no flag of their own; they go in through add-json with a type of ws.
claude mcp add --transport http <name> <url>
claude mcp add --transport sse <name> <url>
claude mcp add [options] <name> -- <command> [args...]The documented examples are worth copying literally, because the shape of each differs. A remote server takes a URL and optional headers. A local one takes environment variables before the separator and the command after it.
claude mcp add --transport http notion https://mcp.notion.com/mcp
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer your-token"
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
-- npx -y airtable-mcp-serverScope is the setting people get wrong. Local is the default and applies to the current project only, stored in ~/.claude.json. User applies to all your projects, stored in the same file. Project writes a .mcp.json in the repository root, which means everyone who clones it is offered the server and has to approve it first.
--scope local # default: current project only
--scope project # shared via .mcp.json in the project root
--scope user # all your projectsProject scope writes this file, and you can also write it by hand. Claude Code expands ${VAR} and ${VAR:-default} inside command, args and env for stdio servers, and inside url and headers for HTTP servers, so the file can be committed without the secrets in it. A missing variable with no default produces a warning and the literal ${VAR} text.
{
"mcpServers": {
"shared-server": {
"type": "http",
"url": "https://example.com/mcp"
},
"secured-api": {
"type": "http",
"url": "https://api.example.com/mcp",
"headers": {
"Authorization": "Bearer ${API_KEY}"
}
}
}
}Run /mcp inside a session to see every server with its status, then pick one and complete the OAuth flow in the browser. The same thing is available from the shell, which is what you want on a machine with no browser. Credentials are cleared with logout.
claude mcp login <name>
claude mcp login <name> --no-browser
claude mcp logout <name>Claude Desktop's route for local servers is Settings > Extensions, then Browse extensions or Install Extension… for a .mcpb package; Anthropic's help centre notes the app ships a built-in Node.js environment, so Node.js installation isn't required. For remote servers, individual Pro and Max users go to Customize > Connectors, press +, then Add custom connector and paste the URL. Team and Enterprise owners add them first under Organization settings > Connectors.
Official documentation: Claude Code MCP docs.
Claude has three places to add a server and each follows different rules. Claude Code runs local commands or remote URLs from ~/.claude.json or a committed .mcp.json. Claude Desktop installs local servers as .mcpb extensions with a built-in Node.js runtime. Custom connectors on claude.ai, Cowork and the apps take only a remote URL and authenticate with OAuth.
| What differs | Claude Code (CLI) | Claude Desktop extensions | Custom connector (claude.ai, Cowork, apps) |
|---|---|---|---|
| How you add it | claude mcp add, or claude mcp add-json for a full config string | Settings > Extensions, then Browse extensions or Install Extension… | Customize > Connectors, then + and Add custom connector |
| Where the server runs | A local command, or a remote URL | Locally, packaged as a .mcpb file | Remotely; a URL is the only input |
| Where the config lives | ~/.claude.json for local and user scope; .mcp.json in the repo for project scope | manifest.json inside the .mcpb package | Your Claude account, not a file on disk |
| Secrets | --env and --header flags, or ${VAR} expansion in .mcp.json | Fields marked "sensitive": true are encrypted with the operating system's secure storage | OAuth at connect time; Claude never sees your password |
| Runtime you have to provide | Whatever the command needs, on your machine | None: the app has a built-in Node.js environment and supports Node.js, Python and binary servers | None; the server's own host runs it |
| Who else can use it | You, or anyone who clones a repo carrying .mcp.json | You, on that machine | Free (one connector), Pro, Max, Team and Enterprise plans |
Read from code.claude.com/docs/en/mcp and support.claude.com on 2026-09-02. Flags and menu paths change between releases; check the docs before pasting a command into a shared runbook.
Beyond claude mcp add, Claude Code ships the commands and settings that make a server manageable: list, get, remove and reset-project-choices, statuses that explain why a connection failed, an import from Claude Desktop, per-server timeouts and deferred loading, OAuth scoping and script-generated headers. It can also run as an MCP server itself with claude mcp serve.
claude mcp list shows every configured server, claude mcp get <name> gives one in detail, claude mcp remove <name> deletes it, and claude mcp reset-project-choices clears the approvals you gave to a .mcp.json.
claude mcp list distinguishes Connected, Needs authentication, Failed to connect with the HTTP status or error code, Pending approval for an unapproved project-scoped server, Rejected, Disabled for this project, and not configured for an empty URL.
claude mcp add-from-claude-desktop pulls servers over from Claude Desktop and lets you pick which ones, instead of retyping every stdio command.
claude mcp serve runs Claude Code itself as an MCP server, which inverts the usual direction: another host consumes Claude Code's tools rather than the other way round.
A server entry accepts an oauth object with clientId, callbackPort, authServerMetadataUrl and scopes, so you can restrict a connection to exactly the permissions it needs rather than everything the provider offers.
headersHelper points at an executable that produces the auth headers, which is how a server behind a short-lived internal token gets connected without a secret sitting in the config file.
timeout sets a hard wall-clock limit per tool call, with a minimum of 1000 ms. alwaysLoad set to false defers connection until the first tool use instead of at startup, which keeps slow servers out of your session start.
Claude Code warns about hidden whitespace in config values, the same server name in multiple scopes pointing at different endpoints, and the reserved names workspace, claude-in-chrome, computer-use, Claude Preview and Claude Browser.
Claude MCP is how Claude, as an MCP host, connects to Model Context Protocol servers. Claude does not publish a server of its own for this; it consumes servers that other vendors and teams publish, and calls their tools during a conversation or coding session.
Where you add a server decides the mechanics. Claude Code takes a command-line entry with a transport and a scope, Claude Desktop installs local servers as .mcpb extensions, and claude.ai, Cowork and the apps accept a remote server URL as a custom connector.
Claude Code can also run as a server itself with claude mcp serve, which is the reverse direction: another host consumes Claude Code’s tools.
Claude Code for command-line and project servers, Claude Desktop for local .mcpb extensions, or a custom connector for a remote URL in claude.ai, Cowork and the apps.
Use claude mcp add with the server’s transport, and choose local, project or user scope deliberately.
Complete OAuth with /mcp, then confirm the server reads Connected in claude mcp list before relying on it.
Add a remote server such as GitHub or Notion with one claude mcp add command, authenticate with /mcp, then ask Claude to read an issue before it edits code. The GitHub MCP guide lists the toolsets that load by default.
Commit a project-scoped .mcp.json so everyone who clones the repository is offered the same servers. Use ${VAR} expansion for tokens and claude mcp reset-project-choices when someone needs to re-approve.
Run claude mcp add-from-claude-desktop and pick which servers to import instead of retyping every stdio command.
Add a custom connector under Customize > Connectors with the server URL. Free plans are limited to one custom connector; Team and Enterprise owners add connectors in Organization settings first.
The questions below cover what people ask most once a server is connected: how a connector differs from an MCP server, whether Claude Desktop needs Node.js installed, which plans can add custom connectors, how to share servers with a team through .mcp.json, whether any server is safe to connect, and what to change when one slows down session start.
Almost nothing, on the wire. Anthropic's docs describe directory connectors as using the same MCP infrastructure as Claude Code, and say you can add any remote server listed in the directory with claude mcp add. Connector is the product word used in the Claude apps; MCP server is the protocol word used in the CLI. The difference that matters is packaging, not protocol.
No. Anthropic's help centre states that Claude Desktop includes a built-in Node.js environment, so Node.js installation isn't required, and that desktop extensions support Node.js, Python and binary MCP servers. Claude Code is different: there, a stdio server runs whatever command you gave it, using whatever runtime is on your machine.
Custom connectors using remote MCP are documented as available on Claude, Cowork and Claude Desktop for Free, Pro, Max, Team and Enterprise plans, with Free users limited to one custom connector. Team and Enterprise owners add connectors under Organization settings > Connectors first, and members then connect individually.
Use project scope. claude mcp add --scope project writes a .mcp.json in the repository root, which everyone who clones the repo is offered and must approve — a server sitting unapproved shows as Pending approval in claude mcp list. Keep secrets out of the committed file by using ${VAR} and ${VAR:-default}, which Claude Code expands in command, args, env, url and headers.
No, and Anthropic says so directly. Claude Code's docs warn to verify you trust each server before connecting it, because servers that fetch external content can expose you to prompt injection risk. The help centre repeats it for connectors: only connect to servers built and hosted by organisations you trust, since malicious MCP servers may include hidden instructions that try to make Claude perform unintended actions.
Two knobs. In .mcp.json, set alwaysLoad to false so the server connects on first tool use instead of at startup, and raise timeout if individual calls are legitimately long. There is also an MCP_TIMEOUT environment variable for the server startup timeout in milliseconds, and MAX_MCP_OUTPUT_TOKENS for capping how much a tool may return.
Once Claude can reach your tools, the open question is which sequence of calls should happen without a human in the loop. That is an agent design problem, not a config problem: deciding the trigger, the order of steps, what gets written back and which actions still need a person to approve them.