Both apps are MCP clients, 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
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.
A hosted server drops the -- and takes a URL:
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 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:
{ "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
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.
Sources: Claude Code MCP docs and local MCP servers on Claude Desktop.