# MCP in Claude Code vs Claude Desktop

> claude mcp add registers a server from the terminal; Claude Desktop edits a JSON config from Settings. Same protocol, two setup flows and one scope trick.

- Canonical: https://guides-ai.pages.dev/guides/mcp-claude-code-vs-desktop/
- Plate 05.04 · Topic: MCP (https://guides-ai.pages.dev/topics/mcp/)
- Published: 02 Sept 2026 · Updated: 06 Sept 2026 · 3 min read
- Source site: guides-ai — https://guides-ai.pages.dev/

Both apps are [MCP clients](/glossary/#mcp-client), so one server works in either without changes. The difference is where the server list lives: **Claude Code takes a CLI command and remembers a scope; Claude Desktop takes a JSON file you open from Settings → Developer → Edit Config.**

## 1. Claude Code: one command

```bash
claude mcp add --transport stdio airtable -- npx -y airtable-mcp-server
```

Registers a local server that Claude Code launches as a child process — everything after `--` is the command to start it. Full walkthrough: [install an MCP server in Claude Code](/guides/install-mcp-server-claude-code/).

A hosted server drops the `--` and takes a URL:

```bash
claude mcp add --transport http notion https://mcp.notion.com/mcp
```

Connects over HTTP instead of spawning a process; add `--header "Authorization: Bearer …"` when it needs a token, and see [remote MCP servers](/guides/claude-code-remote-mcp-servers/) for the OAuth flow.

## 2. Scope is the real difference

`--scope` decides who else gets the server:

| Scope | Stored in | Shared |
| --- | --- | --- |
| `local` (default) | `~/.claude.json`, this project only | no |
| `project` | `.mcp.json` in the repo | yes, via git |
| `user` | `~/.claude.json`, every project | no |

`project` is the one Desktop has no equivalent for: commit `.mcp.json` and every teammate gets the same tools, each approving it once.

## 3. Claude Desktop: a config file behind a button

Open **Settings → Developer → Edit Config**, which opens `claude_desktop_config.json`:

```json
{ "mcpServers": { "airtable": { "command": "npx", "args": ["-y", "airtable-mcp-server"] } } }
```

The same stdio server spelled as JSON. Quit Desktop completely and reopen it — the file is read only at launch.

## 4. Move one you already have

```bash
claude mcp add-from-claude-desktop
```

Imports servers already configured in Desktop so you don't retype them.

## 5. Verify it worked

`claude mcp list` prints every server with a health status, and `/mcp` inside a session opens the panel to authenticate one. In Desktop, open the connectors menu under the message box and pick **Manage connectors**.

**If it fails:** a stdio server needs the `--` separator, server names accept only letters, digits, hyphens and underscores, and a `project`-scoped server stays inert until you approve it interactively. More fixes: [MCP troubleshooting](/guides/claude-code-mcp-troubleshooting/).

---

Sources: [Claude Code MCP docs](https://code.claude.com/docs/en/mcp) and [local MCP servers on Claude Desktop](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop).
