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 does | downloads a file, opens it, clicks install | pastes a URL into a connector form |
| Runtime they need | none; Claude Desktop ships a Node.js runtime | none |
| Reaches their files | yes | no |
| Their data lives | on their disk | on your host |
| Works offline | yes | no |
| Shipping a fix | they download again | you deploy |
| Your cost at zero users | nothing | the host bill |
| Clients that take it | Claude Desktop | every client with a URL field |
| Download size | megabytes; 7,023,082 bytes for the invoice server here | a URL |
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.
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.
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.
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.
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.
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.
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.
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.
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.
All MCP servers and prices · All guides · Buy the bundle $39