Home · Guides

Two ways to ship an MCP server to someone who will not open a terminal

A bundle is a file they double-click. A hosted URL is a line they paste. Both were walked end to end from a stranger's position on 2026-09-08, with no repository access and no credentials, and both work. The write-up of that walk is docs/NEW_USER_E2E_R1.md in this repository.

Bundle (.mcpb)Hosted URL
What the user doesdownloads a file, opens it, clicks installpastes a URL into a connector form
Runtime they neednone; Claude Desktop ships a Node.js runtimenone
Reaches their filesyesno
Their data liveson their diskon your host
Works offlineyesno
Shipping a fixthey download againyou deploy
Your cost at zero usersnothingthe host bill
Clients that take itClaude Desktopevery client with a URL field
Download sizemegabytes; 7,023,082 bytes for the invoice server herea URL

What the bundle path actually looks like

Measured on 2026-09-08 by fetching the public release asset and booting it the way the client does: invoice.mcpb came back HTTP 200 at 7,023,082 bytes, unzipped, answered initialize with {"name":"mcp-invoice","version":"0.21.0"} and listed 13 tools. No install step, no npm, no path configuration.

The size is the price. A bundle carries the server and its whole dependency tree, because the point is that nothing is resolved on the user's machine. The 32 bundles in this repository's v0.21.0 release total 222,294,768 bytes, a mean of 6.6 MB each. Compare that with a package reference, which is a line of JSON and a resolution failure waiting for someone whose PATH is different from yours.

What the hosted path actually looks like

GET /mcp/connect returned HTTP 200 with 36 ready-to-paste URLs, one per hosted server, and a POST to one of them with no headers and no key returned 13 tools. The token sits in the URL path, so there is nothing to type into an advanced settings box. On Claude.ai and Claude Desktop connectors that matters more than it sounds: the add-connector form asks for a name and a URL, and its advanced section is for OAuth client credentials, not for a bearer token.

Hosting has one consequence people underrate. Every user's data is now your problem: your storage, your retention policy, your breach. The servers here answer that by holding a 30-day data space per anonymous token, refreshed on every write, and by saying so on the page that mints the token. A local bundle needs no such policy because there is nothing of theirs on your side.

Which to choose

Bundle when the server's value is the user's own machine: their spreadsheets, their invoices, their photos, their local database. Also when the tool must work on a plane, and when you do not want to be the custodian of anything.

Hosted when the server's value is something only you can reach: your API, your dataset, your model, your rate limit. Also when you expect to fix bugs weekly, because the alternative is asking every user to download 7 MB again.

Both is common and cheap if the handlers are transport-agnostic. In a paginated sample of the official registry on 2026-09-08, 97 of 2,211 servers declared both a remote endpoint and an installable package. The 30 servers here do both from one codebase; what differs is where the data sits, not the tool implementations.

The path most tutorials show, and why it is the weakest of the three

A command: "npx" entry with a package name is the most-copied MCP install line and the most fragile. It needs a Node.js runtime the client can find, network access at launch, and a package that resolves. Two of those fail routinely under a desktop client, which passes on only a limited, platform-dependent subset of environment variables to a subprocess. spawn npx ENOENT returned 1,428 results in GitHub's issue search on 2026-09-08.

It is still the right default for developers, who have a terminal and will read an error. It is the wrong default for the person you are trying to reach with a download link.

The measured caveat

Neither path is a distribution strategy. Everything above works today for a stranger, and this site still measured 22 unique visitors in fourteen days. A working install path removes a reason not to start; it does not create the visit. Registry entries and directory listings did that here, and one channel accounted for 9 of those 22.

Questions

Can a bundle be installed anywhere except Claude Desktop?

Not as a double-click. Other clients take a command and args, so the same server ships to them as a path to a built file or a package. The bundle format solves the no-terminal case for one client, which is the client most non-developers are using.

Does a hosted server have to require a login?

No, and requiring one costs you most of the people who would have tried it. The endpoints here answer an unauthenticated POST and meter by an anonymous token minted in one GET. Authentication becomes necessary when the data behind the server is worth stealing.

How big is too big for a bundle?

The constraint is patience, not a documented limit. The bundles here run around 6.6 MB on average with a full dependency tree, which downloads in seconds. If yours is much larger, the dependency tree is the thing to look at rather than the format.

Which one gets picked when both are offered?

Unmeasured here, and worth being honest about. This project offers both on every product page and has no data separating which one strangers choose, because the counts are too small to say anything.

Related

All MCP servers and prices · All guides · Buy the bundle $39