How do you give teammates an AI connection to a service without a stock connector — local .mcpb or hosted remote MCP?
Last updated 2026-08-25 · Confidence: documented — the MCPB spec, Anthropic’s help center and docs, the MCP authorization spec, and Claude Code’s MCP reference; the one-prompt build claim is inferred.
A .mcpb is a one-file install of a local MCP server, credentials pasted at setup, no hosting — but Claude Desktop and Claude Code only. Per-user login needs a hosted remote server implementing OAuth 2.1, which then works on every surface. Alejo recommends trying the local MCP first.
Local: a .mcpb bundle, credentials pasted at install
Section titled “Local: a .mcpb bundle, credentials pasted at install”A .mcpb is a zip of the server plus a manifest.json; mcpb init writes the manifest, mcpb pack builds the file. Node.js is recommended because Claude Desktop ships its own Node runtime; Python and binaries also work.
Secrets go in the manifest’s user_config: a field marked "sensitive": true is masked at install, stored in the OS keychain, and injected as ${user_config.KEY} into the server’s env or args. Each teammate pasting their own key keeps per-person attribution in the service’s audit log.
Install is Settings → Extensions → Advanced settings → Install Extension. Extensions run only in Claude Desktop and Claude Code, never web or mobile; Cowork’s local connectors work through the desktop app only. Team/Enterprise owners can upload and allowlist extensions org-wide.
The server is small: the MCP quickstart defines tools with a @mcp.tool() decorator and calls mcp.run(transport="stdio"). That plus the manifest is what one Claude Code prompt produces.
Remote: hosted server, per-user OAuth, every surface
Section titled “Remote: hosted server, per-user OAuth, every surface”A custom connector is a URL added under Settings → Connectors (Owners add it org-wide on Team/Enterprise) and works on claude.ai, Desktop, Cowork, and mobile. Anthropic’s cloud calls it, so it must be hosted and reachable from Anthropic’s IP ranges.
Per-user login means the MCP authorization spec: the server is an OAuth 2.1 resource server publishing protected-resource metadata, pointing at an authorization server, and validating each bearer token’s audience. Without dynamic client registration you paste a client ID and secret when adding the connector. Stdio servers skip all this and read credentials from the environment.
Claude Code: no bundle needed
Section titled “Claude Code: no bundle needed”Claude Code adds a stdio server with claude mcp add --env API_KEY=... name -- <command>, or a remote one with --transport http <url> plus /mcp to log in; a committed .mcp.json shares it with the repo. See Connector scope for what a connector reaches and Asana access for a worked example.
Sources
Section titled “Sources”- MCPB — MCP Bundles — github.com
- MCPB manifest specification — github.com
- Getting started with local MCP servers on Claude Desktop — support.claude.com
- Desktop extensions — claude.com
- Deploying enterprise-grade MCP servers with desktop extensions — support.claude.com
- When to use desktop and web connectors — support.claude.com
- Use Claude Cowork on web, desktop, and mobile — support.claude.com
- Get started with custom connectors using remote MCP — support.claude.com
- MCP specification — Authorization — modelcontextprotocol.io
- Build an MCP server — modelcontextprotocol.io
- Connect Claude Code to tools via MCP — code.claude.com