Claude Desktop Extensions vs MCP Servers
Claude Desktop extensions make local MCP servers easier to install, but their convenience comes with client lock-in and real security trade-offs.

Claude Desktop extensions are installable packages for local MCP servers, not a competing technology. Choose an extension for one-click setup inside Claude Desktop; choose a standard local or remote MCP server when portability, centralized updates, or use across several AI clients matters more than installation convenience.
Table of contents
- The short answer
- How Claude Desktop extensions work today
- Step-by-step setup
- Claude Desktop vs Cursor vs Windsurf
- The catch most guides skip
- What to connect first
- How to choose
The short answer
Claude Desktop extensions are MCP servers wrapped in a distributable .mcpb bundle. They remove much of the manual JSON and runtime setup, but they neither replace MCP nor make a server portable to every MCP client.
The bundle contains a local server plus a manifest.json that tells a compatible host how to install, configure, and launch it. The format began as Desktop Extensions (.dxt) and was renamed MCP Bundles (.mcpb); the CLI changed from dxt to mcpb too. The official MCPB repository documents the transition and archive format.
Our view: use an extension for local-machine access in Claude Desktop, especially for nontechnical users. Do not package a cloud API as a desktop extension merely to avoid hosting it. A remote server is easier to update once and share across clients. The curated best MCP servers can help you identify each server's available delivery method.
How Claude Desktop extensions work today
Claude Desktop installs the bundle, collects declared settings, starts the included server locally, and connects to it as an MCP host. Claude then discovers the server's capabilities and presents its tools in conversations.
This remains the normal MCP client-server model. MCP defines a host, a dedicated client connection for each server, and primitives such as tools, resources, and prompts; local servers usually communicate over standard input/output, while remote servers use Streamable HTTP. See the official MCP architecture overview for the protocol boundary.
The extension adds packaging around that boundary. Anthropic's local MCP server guide says extensions support Node.js, Python, and binary servers, and Claude Desktop includes a Node.js runtime. Sensitive fields identified by the publisher are stored through the operating system's credential store.
That convenience prevents common missing-runtime and malformed-JSON failures. A raw server entry remains useful for developers because it is transparent, diffable, and transferable. Check our Claude client page when you need client-specific compatibility rather than packaging guidance.
Step-by-step setup
Install a reviewed extension from Claude Desktop's directory, inspect its tools, and test a read-only action before allowing writes. Use a private .mcpb only when you trust its publisher and can verify its behavior.
- Update and open Claude Desktop. Extensions run locally in the desktop app; an installed local extension will not automatically appear on claude.ai or mobile.
- Open
Settings > Extensions. Select Browse extensions, choose a listing, and click Install. Anthropic describes these listings as reviewed in its Claude Desktop installation guide. Check the publisher, local paths, and external services involved. - Enter the required settings. Prefer a restricted API token and the narrowest folder that completes the job. Do not grant a whole home directory when one project folder is enough.
- Confirm the tools loaded. In a chat, use the
+button and open Connectors to inspect connected servers and tools. If tools are absent, recheck required fields and file paths. - Install a private bundle only when necessary. Open
Settings > Extensions > Advanced settings, find Extension Developer, click Install Extension…, and select the.mcpbfile. Private bundles require manual installation of later versions; directory extensions update automatically by default. - Restart fully if discovery fails. Quit Claude Desktop rather than closing its window. The MCP debugging guide requires a full quit and reopen after local server code changes. Enable debug logging and inspect extension logs before reinstalling.
For an unpackaged local server, manual configuration is the fallback. On macOS the path is ~/Library/Application Support/Claude/claude_desktop_config.json; on Windows it is %APPDATA%\Claude\claude_desktop_config.json. The top-level mcpServers object maps a server label to publisher-documented fields such as command, args, and, when required, env. Copy exact values from the publisher—never guess them. Our MCP server installation guide covers that route.

Claude Desktop vs Cursor vs Windsurf
Claude Desktop is the clear choice for .mcpb installation, while Cursor and Windsurf are standard MCP clients. If one integration must work in all three, prefer a documented remote endpoint or maintain each client's native JSON configuration.
| Dimension | Claude Desktop | Cursor | Windsurf |
|---|---|---|---|
| One-file MCPB install | Yes | Not documented as native | Not documented as native |
| Local servers | Extension or manual config | stdio config | Cascade MCP config |
| Remote servers | Account connectors | Streamable HTTP supported | MCP settings |
| Main custom config | claude_desktop_config.json | ~/.cursor/mcp.json or .cursor/mcp.json | ~/.codeium/windsurf/mcp_config.json |
| Best fit | Local desktop data | Repository tooling | Cascade coding workflows |
| Main portability issue | MCPB packaging | Config translation | Config translation |
Cursor officially supports global and project configuration plus stdio, SSE, and Streamable HTTP transports; its default tool approval can be changed to auto-run. See Cursor's MCP documentation and our Cursor client page before copying a Claude configuration, because locations and fields are client concerns even when the server is identical.
Windsurf exposes MCPs from Cascade and its settings, with custom configuration stored at ~/.codeium/windsurf/mcp_config.json on macOS and Linux. The practical point: MCP is portable at the protocol level, but package installation, approvals, and configuration files are not standardized by MCP.
The catch most guides skip
An MCPB is not an operating-system sandbox. A local extension runs code with your user privileges, so a friendly installer does not guarantee tightly bounded access.
Official Anthropic MCPB development guidance says there is no manifest-level permissions block; the server must implement its own local security. Enterprise allowlists control which bundles users may install, but Anthropic warns that they do not prevent changes to installed local files. See the desktop extension allowlist documentation.
Common failures include:
- A private bundle falls behind because its updates are manual.
- A credential lacks the scope required by a write tool.
- A directory moves, or operating-system privacy controls deny access.
- Tools do not refresh until Claude Desktop fully restarts.
- A team policy overrides user settings or removes an unapproved bundle.
- Another client can run the server but cannot import its MCPB.
Separate local and remote jobs as the workaround. Use MCPB for the local filesystem, desktop apps, localhost, or OS APIs. For cloud services, prefer a provider's remote MCP endpoint with OAuth when available. This trades local installation for centralized patching and cross-device access—a trade MCP Directory would take for most SaaS integrations.
What to connect first
Start with one narrow, observable integration rather than a dozen servers. These three picks cover local context, source control, and production evidence without flooding Claude with overlapping tools.
- Filesystem for one working folder. The official MCP servers repository includes the Filesystem reference server. It is a good first local test: grant a disposable or project directory, ask Claude to list and read files, then test a write only if needed. Use a reviewed extension if available; otherwise follow the repository's exact manual command.
- GitHub for repository work. GitHub maintains the official GitHub MCP Server for issues, pull requests, code, and repository operations. Prefer its remote deployment when it fits your policy. Start with authorization that cannot administer the organization.
- Sentry for evidence-led debugging. Sentry operates an official remote MCP server, showing when not to seek a desktop extension. Error context already lives in a hosted service, so remote authentication and centralized maintenance fit better than another local package. Begin read-only and add issue-management actions later.
How to choose
Choose Claude Desktop extensions for trusted local workflows and remote MCP servers for shared cloud integrations. Avoid private bundles you cannot inspect, broad filesystem grants, and duplicate servers with similar tools.
Our default is one narrowly scoped filesystem extension plus remote GitHub and Sentry connections. It keeps local access local, reduces hosted-service update work, and is easier to reproduce in Cursor or Windsurf. MCP supplies interoperability; deployment choices determine whether you retain it.