MCP distribution

How to demo an MCP server to a customer

Today the best case is: they install someone else's assistant, sign in, and add your server there — one click if you packaged it, a hand-edited config file if you did not. Hosting the server on the internet does not change that; it only publishes an endpoint. The customer still needs a client, a model, and a first screen that is yours.

What distributing an MCP server looks like today

Most MCP servers start as a local process. The client launches them over stdio — the server is a child process, talking JSON-RPC on stdin and stdout. Claude Desktop, Cursor, and Conduit all do this. There is nothing to deploy in the cloud sense. The client is the deployment.

Claude Desktop has made its own side of this much easier: a local server packaged as a .mcpb desktop extension installs in one click from Settings → Extensions, and a remote server can be added as a custom connector. The hand-written config is now the fallback for anything not packaged that way — a snippet for claude_desktop_config.json:

claude_desktop_config.json
{
  "mcpServers": {
    "your-product": {
      "command": "npx",
      "args": ["-y", "@you/mcp-server"]
    }
  }
}

You paste that into a Slack thread or a PDF. The prospect installs Node, installs Claude Desktop (macOS, Windows, and a Linux beta on Ubuntu and Debian), finds the config file at a different path per platform, pastes without breaking the JSON, fully quits the app — closing the window is not enough — and relaunches. Packaging the server as an extension removes most of that, and if you can package it, you should. What neither route removes is the rest: they sign into Anthropic, pick a model they pay for, and look for your server in a list of tools inside somebody else's app.

If the server is remote instead, the recipe changes but the shape does not. You publish a Streamable HTTP URL — Render, Fly.io, FastMCP Cloud, Smithery, a VPS — and they paste that into a client that speaks remote MCP. Hosting answers “can another machine reach this process?” It does not answer “does a non-technical prospect have an app, a model, and a reason to open it.”

Why “just send them the config” fails

The prospect is not a developer

Editing a JSON file in an Application Support folder, installing npx, and debugging ENOENT because Windows wanted npx.cmd is a reasonable Tuesday for the person who built the server. It is not a reasonable first call with a buyer. One-click extension formats have taken most of that pain away, and that is a real improvement — but a click is still a step you are asking a buyer to perform inside an app they had to install and sign into first, and the steps that remain are the ones you do not control.

Your product appears inside a competitor’s client

When it works, the prospect did not open your product. They opened Claude, or ChatGPT, or Cursor. Your tools are a line item under someone else’s brand, in someone else’s window, next to whatever else they already connected. You spent the demo budget on another company’s onboarding funnel. They will remember the assistant they already pay for, not the connector you asked them to paste.

You control neither the model nor the first screen

Claude Desktop talks to Claude. You cannot point the demo at a cheaper model, a local Ollama instance for an air-gapped room, or the model that happens to call your tools well. You cannot set the system prompt, the empty state, or the name in the title bar. The first thing they see is Anthropic’s product. That is a bad position if the tools are the product.

The options, compared

Three ways to put MCP tools in front of a prospect. Hosting the server is a column inside the first two rows, not a fourth option — a URL still needs a client.

Approach Setup burden on the prospect Whose brand Whose model Who holds the chat
Hosted chat or widget Open a URL. Lowest friction. Yours, if you built the frontend. Whatever you wired on the server. Usually you. You are in the chat path, which is why a DPA comes up before the PoC.
Claude Desktop + extension or connector Install Claude and sign in, then one click for a packaged .mcpb extension — or hand-edit JSON for anything unpackaged. Anthropic’s. Claude only. Anthropic. Conversations live on their servers, not the prospect’s disk, and a remote custom connector is reached from Anthropic’s cloud rather than from the prospect’s machine.
Desktop client they install Install the app, add your connector in Settings (or a JSON file, depending on the client). The client’s, unless you rebrand it. Whichever providers that client supports. On their machine, if the client is local-first and does not proxy. The model provider still sees prompts you send it.

Pick the hosted chat when the prospect will never install software and you are willing to sit in the data path. Pick Claude Desktop when they already live there and you only need to prove that the tools exist. Pick a desktop client when the demo is the product: your tools, a model you chose, on a machine you do not have to supervise.

Shipping your own client instead

Conduit is an open-source desktop AI client. It speaks MCP over local stdio and remote streamable HTTP, on Windows, macOS, and Linux. The prospect downloads an installer, adds a provider key (or points it at Ollama), and adds your server on the Connectors page — command plus arguments, or a URL — and a remote server published to the official MCP registry can be found by name and added in one click. The connector runs from their machine, not from ours.

If your server is remote and published to the official MCP registry, the prospect does not type anything at all: they search your product by name under the Connectors page and add it in one click. Conduit filters the registry to servers that publish a streamable HTTP remote, and refuses SSE-only entries with a reason rather than failing later. If the server needs authentication, it speaks OAuth 2.1 — the prospect signs in through their browser, and the token is stored in their OS keychain, never in the interface and never with you.

That is already a different demo than Claude Desktop. They are not locked to one model family. They can run fully local. A tool asks before it runs unless its server marks it read-only. Conversations stay in SQLite on their disk. Model requests go from their machine to the provider they configured. There is no Conduit server in the middle, which is why using Conduit as the client does not, by itself, make you a processor of the chat.

Two limits, stated plainly. First, they are still installing Conduit unless you change the name in Settings → Branding on that copy, or you build a packaged OEM from source. Second, unless your server is in the registry they still type the connector in themselves, and either way the build does not arrive already pointed at it — that packaging layer is not a downloadable installer today. The white-label page is the programme for people who need both. This page is the distribution problem that programme exists to finish.

What ships today

The same status as the white-label table, shortened to what a demo actually needs.

CapabilityStatus
Desktop client on Windows, macOS, and LinuxShipping
MCP over local stdio and remote streamable HTTP, with consentShipping
Add a connector in Settings — no JSON fileShipping
17 providers, including Ollama and LM StudioShipping
Local-first storage, bring-your-own-key, no proxyShipping
Runtime branding — Settings → BrandingShipping
Unsigned installers on GitHubShipping
Packaged OEM installer from brand.mdEarly access from source
Build pre-wired to your connectorsIn development
OS code-signed and notarized buildsIn development
You cannot hand a prospect a branded, pre-wired installer from GitHub. You can hand them a stock Conduit build, add the connector in Settings with them, and rename the window for the call. If the demo needs to open as your product with your servers already connected, that is the design-partner path, not a download button.

Installers are not OS code-signed, so Windows SmartScreen and macOS Gatekeeper warn on first launch. Tell the prospect that before they click, or build from source with them. Details are in the install docs.

Questions

Can I distribute an MCP server without asking users to edit JSON?

Yes. In Conduit, MCP servers are added on the Connectors page — a command and arguments for a local stdio server, or a URL for a remote streamable HTTP one. Better: if your remote server is published to the official MCP registry, the prospect searches it by name and adds it in one click, typing no URL at all, and signs in over OAuth if it needs auth. What still does not exist is a build that arrives with your connector already wired — that is the packaging layer, and it is in development.

Is there a Claude Desktop alternative that supports MCP on Windows?

Several desktop clients speak MCP on Windows. Claude Desktop is the reference client and only talks to Anthropic's models. Conduit is an open-source alternative that runs on Windows, macOS, and Linux, connects to 17 providers including local Ollama and LM Studio, and speaks MCP over local stdio and remote streamable HTTP. The installers are not OS code-signed yet, so SmartScreen will warn on first launch.

Can I ship an MCP client under my own brand?

Partially. Conduit can be renamed, re-logoed, and recoloured in Settings → Branding on a stock install today. Packaged OEM installers are early access from source for design partners. Shipping a build that is already connected to your MCP servers is in development — you cannot download a pre-wired branded installer from GitHub.

Do I need a data processing agreement to demo an MCP server?

It depends on where the conversation and the tool calls go. A hosted chat demo that stores prompts on your servers usually makes you a processor of that chat. A local-first desktop client keeps the conversation on the prospect's machine and sends model requests from their machine to the provider; Conduit is not in that path. If your MCP server is itself a hosted service that receives tool arguments, that path is separate and may still need a DPA. This is not legal advice.

Is hosting my MCP server the same as getting it in front of a customer?

No. Hosting publishes a Streamable HTTP URL that other MCP clients can call. Getting it in front of a customer is the client problem: they still need an app that speaks MCP, a model, and a first screen. A public URL without a client is a connector with nobody to connect.

Download Conduit

Weighing the clients themselves rather than the distribution problem? Conduit vs Claude Desktop compares them row by row. If the demo only works as a branded, pre-wired build, read the white-label status and start a design-partner thread.

Claude Desktop details on this page — one-click .mcpb extensions, remote custom connectors, and the platforms it runs on — were checked against Anthropic's installation, local MCP server, and custom connector documentation, checked 7 September 2026. If something has changed since, their documentation is right and this page is wrong — tell us.

Related