MCP 分发
如何向客户演示 MCP 服务器
今天最好的情况是这样:潜在客户安装别人的助手、登录,然后在那里添加你的服务器——你做了打包就是一次点击,没打包就是手改配置文件。把服务器托管到互联网上并不能改变这一点,它只是公开了一个端点。客户仍然需要一个客户端、一个模型,以及一个属于你的首屏。
今天分发一个 MCP 服务器是什么样子
大多数 MCP 服务器都以本地进程起步。客户端通过 stdio
启动它们——服务器是一个子进程,在 stdin 和 stdout 上讲 JSON-RPC。Claude Desktop、Cursor 和 Conduit 都是这样。在云的意义上没有什么需要部署。客户端
就是部署本身。
Claude Desktop 已经把自己这一侧简化了很多:打包成 .mcpb 桌面扩展的本地服务器可以在
Settings → Extensions 中一键安装,远程服务器则可以作为自定义连接器添加。手写配置如今是留给未按这种方式
打包的服务器的退路——给出一段用于
claude_desktop_config.json:
{
"mcpServers": {
"your-product": {
"command": "npx",
"args": ["-y", "@you/mcp-server"]
}
}
}
你把它贴进 Slack 会话或一份 PDF。潜在客户要安装 Node,安装 Claude Desktop(macOS、Windows,以及面向 Ubuntu 和 Debian 的 Linux 测试版),在各平台不同的路径下找到配置文件,在不破坏 JSON 的前提下粘贴进去,彻底退出应用——关掉窗口还不够——再重新打开。把服务器打包成扩展能省掉其中大部分步骤,能打包就该打包。但无论走哪条路,剩下的部分都还在:登录 Anthropic,挑一个自己付费的模型,再到别人的应用里从工具列表中找你的服务器。
如果服务器是远程的,做法会变,但格局不变。你发布一个 Streamable HTTP 的 URL——Render、Fly.io、FastMCP Cloud、Smithery,或者一台 VPS——然后对方把它粘贴到 that 一个支持远程 MCP 的客户端里。托管回答的是“另一台机器能否访问这个进程”。它没有回答“一个不懂技术的潜在客户是否有应用、有模型,并且有理由把它打开”。
为什么“把配置发给他们就行”行不通
潜在客户不是开发者
在 Application Support 文件夹里编辑 JSON 文件、安装 npx、以及因为 Windows 需要 npx.cmd 而去调试 ENOENT——对写这个服务器的人来说,这是很平常的一个周二。但作为与买家的第一次会面,这并不合理。一键安装的扩展格式已经消除了其中大部分麻烦,这是实打实的改进——但那一次点击,仍然发生在买家必须先安装并登录的别人的应用里,而剩下的步骤你无法掌控。
你的产品出现在竞争对手的客户端里
就算成功了,潜在客户打开的也不是你的产品。他打开的是 Claude、ChatGPT 或 Cursor。你的工具只是别人品牌之下、别人窗口之中的一个条目,旁边还摆着他早已连接的其他东西。你把演示预算花在了另一家公司的新用户引导漏斗上。他记住的会是自己已经付费的那个助手,而不是你请他粘贴的那个连接器。
模型和首屏都不由你决定
Claude Desktop 只与 Claude 对话。你没法把演示指向更便宜的模型,没法指向为隔离机房准备的本地 Ollama,也没法指向那个恰好很会调用你工具的模型。你没法设定系统提示词、空状态,或标题栏里的名字。对方最先看到的是 Anthropic 的产品。如果工具 本身就是产品,这个位置很不利。
几种方案的比较
把 MCP 工具摆到潜在客户面前有三种方式。托管服务器是前两行里的一列,而不是第四个选项——URL 仍然需要一个客户端。
| 方式 | 潜在客户的配置负担 | 谁的品牌 | 谁的模型 | 对话由谁保存 |
|---|---|---|---|---|
| 托管式聊天或组件 | 打开一个 URL。阻力最小。 | 如果前端是你做的,就是你的。 | 你在服务端接上的那个。 | 通常是你。你处在对话路径上,所以数据处理协议会在概念验证之前被提出来。 |
| Claude Desktop + 扩展或连接器 | 安装 Claude 并登录,打包为 .mcpb 扩展的一键安装——未打包的仍需手改 JSON。 |
Anthropic 的。 | 只有 Claude。 | Anthropic。对话保存在他们的服务器上,而不是潜在客户的磁盘上;远程自定义连接器由 Anthropic 的云端发起连接,而不是从潜在客户的机器上发起。 |
| 由对方安装的桌面客户端 | 安装应用,在设置里添加你的连接器(取决于客户端,也可能是一个 JSON 文件)。 | 客户端的,除非你重新品牌化。 | 该客户端支持的那些提供商。 | 如果客户端是本地优先且不做代理,就在对方机器上。不过模型提供商仍然会看到你发过去的提示词。 |
如果潜在客户绝不会安装软件,而你也愿意待在数据路径上,就选托管式聊天。如果他本来就住在 Claude Desktop 里,而你只需要证明工具存在,就选 Claude Desktop。如果演示本身就是产品,就选桌面客户端:你的工具、你选的模型,跑在一台你不必照看的机器上。
改为交付你自己的客户端
Conduit 是一个开源的桌面 AI 客户端。它在 Windows、macOS 和 Linux 上通过本地 stdio 和远程 streamable HTTP 使用 MCP。潜在客户下载安装包,添加一个提供商密钥(或者指向 Ollama),然后在连接器页面添加你的服务器——填命令和参数,或者一个 URL。如果你的远程服务器已发布到官方 MCP 注册表,他还可以按名称搜索并一键添加。连接器运行在他自己的机器上,不经过我们。
如果你的服务器是远程的,并且已发布到 官方 MCP 注册表, ,那么潜在客户什么都不用输入:他在连接器页面按名字搜索你的产品,一键添加即可。Conduit 会把注册表筛选为发布了 streamable HTTP 远程端点的服务器,对只支持 SSE 的条目会给出理由并拒绝,而不是等到后面才失败。如果服务器需要认证,它使用 OAuth 2.1——潜在客户在浏览器中登录,令牌保存在他自己的操作系统密钥链里,既不会进入界面,也不会到你手上。
仅此一点,这就已经是一场不同于 Claude Desktop 的演示了。对方不会被锁定在一个模型家族里,可以完全在本地运行。除非服务器把某个工具标记为只读,否则它会先询问。对话留在他磁盘上的 SQLite 里。模型请求从他的机器直接发往他配置的提供商。中间没有 Conduit 的服务器——正因如此,仅仅使用 Conduit 作为客户端,并不会让 you 你成为这段对话的处理者。
有两个限制,直说:第一,除非你在那份副本的 设置 → 品牌 中改掉名字,或者从源码构建一个打包好的 OEM 版本,否则对方安装的仍然是 Conduit 。第二,除非你的服务器在注册表里,否则连接器还是要他自己输入;而无论哪种情况,构建产物都不会在出厂时就指向它——这一层打包能力今天还不是一个可下载的安装包。 白标页面 是为同时需要这两者的人准备的计划。本页描述的正是那个计划要解决的分发问题。
今天已经交付的内容
与白标页表格相同的状态,缩减到一次演示真正需要的部分。
| 能力 | 状态 |
|---|---|
| 适用于 Windows、macOS 和 Linux 的桌面客户端 | 已提供 |
| 带同意机制的本地 stdio 与远程 streamable HTTP MCP | 已提供 |
| 在设置中添加连接器——无需 JSON 文件 | 已提供 |
| 17 家提供商,包括 Ollama 和 LM Studio | 已提供 |
| 本地优先存储、自带密钥、无代理 | 已提供 |
| 运行时品牌化——设置 → 品牌 | 已提供 |
| GitHub 上未签名的安装包 | 已提供 |
从 brand.md | 从源码提供的抢先体验 |
| 出厂即连接到你的连接器的构建 | 开发中 |
| 经过操作系统代码签名与公证的构建 | 开发中 |
安装包没有经过操作系统代码签名,因此 Windows SmartScreen 和 macOS Gatekeeper 会在首次启动时发出警告。请在对方点击之前先告知,或者和他一起从源码构建。详情见 安装文档.
常见问题
我能否在不让用户编辑 JSON 的情况下分发 MCP 服务器?
可以。在 Conduit 中,MCP 服务器在连接器页面添加:本地 stdio 服务器填命令和参数,远程 streamable HTTP 服务器填一个 URL。更好的做法是:如果你的远程服务器已发布到官方 MCP 注册表,潜在客户按名字搜索、一键添加即可,完全不用输入 URL,需要认证时用 OAuth 登录。目前仍然不存在的,是一个出厂时就接好你连接器的构建——那属于打包层,还在开发中。
在 Windows 上有支持 MCP 的 Claude Desktop 替代品吗?
在 Windows 上有多个支持 MCP 的桌面客户端。Claude Desktop 是参考实现,只与 Anthropic 的模型通信。Conduit 是一个开源替代品,可在 Windows、macOS 和 Linux 上运行,能连接 17 家提供商(包括本地的 Ollama 和 LM Studio),并通过本地 stdio 和远程 streamable HTTP 使用 MCP。它的安装包尚未经过操作系统代码签名,因此首次启动时 SmartScreen 会发出警告。
我可以用自己的品牌交付一个 MCP 客户端吗?
部分可以。今天在标准安装的 Conduit 上,就能通过 设置 → 品牌 改名字、换标志和配色。打包好的 OEM 安装包目前是面向设计伙伴、从源码提供的抢先体验。交付一个已经连接到你 MCP 服务器的构建仍在开发中——你无法从 GitHub 下载一个已接好线的品牌安装包。
演示 MCP 服务器需要签数据处理协议吗?
这取决于对话和工具调用去了哪里。把提示词存到你服务器上的托管式聊天演示,通常会让你成为那段对话的处理者。本地优先的桌面客户端把对话留在潜在客户的机器上,模型请求也从他的机器发往提供商;Conduit 不在这条路径上。如果你的 MCP 服务器本身就是一个接收工具参数的托管服务,那是另一条路径,仍然可能需要协议。以上不构成法律意见。
把 MCP 服务器托管起来,等于把它送到客户面前了吗?
不等于。托管只是公开了一个其他 MCP 客户端可以调用的 Streamable HTTP URL。送到客户面前是客户端的问题:他仍然需要一个支持 MCP 的应用、一个模型,以及一个首屏。没有客户端的公开 URL,是一个没人来连的连接器。
如果这场演示只有做成带品牌、已接好线的构建才成立, 请阅读白标状态 and 并发起一个设计伙伴讨论.