全部文章

MCP 服务器到底是什么?

把营销话术剥掉,MCP 是一个小而无聊的协议。这正是它最好的地方。

发布于 2026年9月22日 · 更新于 2026年10月6日 · 阅读时间 6 分钟

一个语言模型自己读不了你的文件,查不了你的数据库,也记不住昨天。它产出文本。其余的一切——每一个动作、每一次查找——之所以发生,是因为模型之外的某个程序去做了。

在 Model Context Protocol 出现之前,每一条这样的连接都是定制的。如果你想让 Claude 读你的 Notion,同时让 ChatGPT 也读你的 Notion,你得针对两套不同的插件系统写两份集成,而且没有一份能熬过厂商的下一个版本。MCP 就是终结这件事的约定:一个服务器,任何会说这个协议的客户端。

它的大致形状

一共三方。宿主(host)是你真正在用的应用——桌面助手、IDE、聊天界面。客户端(client)住在宿主里,管理一条连接。服务器(server)是你或别人写的那个东西,能力握在它手里:访问文件系统、一个 Postgres 实例、一个日历、一份记忆存储。

它们之间说的是 JSON-RPC 2.0。这不是值得纠缠的细节,但值得知道,因为它意味着整件事是可检查的。你可以读那些消息。不存在某个魔法层,让模型在你看不见的地方「决定」什么。

这个流程是故意做得无聊的:客户端连上,双方交换各自的能力,客户端询问服务器提供什么,从此模型就可以按名字请求其中之一。服务器执行。结果作为文本回到模型面前,供它阅读。

服务器能暴露的三样东西

你会遇到的几乎所有服务器都只用第一样,忽略另外两样。三样都值得理解,因为它们的区别在于由谁来决定。

  • 工具(tools)——模型可以自行决定调用的函数。`search_memory`、`create_issue`、`run_query`。模型读你写的工具描述,自己判断什么时候适用。力量在这里,风险也在这里。
  • 资源(resources)——由*宿主*读取并放进上下文的数据。一个文件、一条记录、一份文档。触发它的不是模型,是应用。自主性更少,可预测性更强。
  • 提示(prompts)——用户刻意挑选的可复用模板。最接近一个斜杠命令。

有一个后果人们往往很晚才发现:工具描述不是文档,它是写给模型的指令。如果某个工具该被调用时却从不被调用,修复的地方通常不在代码——而是这段描述没能告诉模型它属于什么情境。我们正是为了这个原因重写了自己的描述,调用率立刻就变了。

本地还是远程:真正要紧的选择

存在两种传输方式,在两者之间做选择,决定了你的整套配置用起来是什么感觉。

stdio 把服务器作为子进程跑在你自己的机器上。宿主启动一条命令,通过标准输入和标准输出与它对话,退出时把它杀掉。什么都不离开这台设备。对于一切涉及本地文件的事情,这是正确答案,filesystem 和 git 服务器之所以那样工作正是因此。代价是:它只存在于那台机器上。你的笔记本和手机不共享它,而且只有应用活着的时候它才活着。

HTTP 把服务器跑在某个可以访问到的地方。宿主通过网络连接,通常用 OAuth 2.0 认证。于是每台设备看到的是同一个服务器,一个托管服务也可以是其中之一。代价是:你在信任运营它的人,而且你应该知道它跑在哪里——这正是本站另一篇文章的主题。

具体到记忆,这个选择毫无悬念。只存在于一台笔记本上的记忆是一本笔记本。这东西的全部意义,就在于你在另一台设备上打开的助手已经知道了。

一个服务器能对你做什么

MCP 服务器是你授予了行动权的代码。请相应地对待它。

本地服务器以你这个用户的权限运行——你能读的它都能读。远程服务器接收模型发给它的一切,时间一长,那是关于你的大量信息。而工具描述是面向模型的文本,所以服务器能塑造助手的行为方式,而不只是回答它。

安装之前值得问的四个问题:

  1. 我能读到源码,还是这只是个陌生人给的二进制?
  2. 它握有哪些权限——单个目录,还是我的整个家目录?
  3. 如果是远程的:谁在运营它,在哪个国家,我能删除自己的数据吗?
  4. 它写入吗,还是只读?只读服务器的爆炸半径要小得多。

这个生态还年轻,大多由个人出于善意搭建。那和经过审计不是一回事。官方注册表和社区清单是发现工具,不是背书。

什么时候你该自己写一个

门槛很低——一个暴露两个工具的服务器,用 Python 或 TypeScript 写就是一个短文件,协议部分由 SDK 处理。真正的问题是:对于你想要的东西,工具是不是正确的形态。

当助手需要在一个活的系统上*采取行动*,或者去取一些会变化的东西时,通常是。当你只是需要模型知道一段固定的文本时,通常不是——把它粘进去,或者作为资源暴露出来,比教会模型去索取它更简单也更可靠。

如果你想了解细节,那份规范短而好读,这很少见,也说明了这个项目不错的一面。

Pryzm 是一个远程 MCP 服务器,唯一的职责就是记忆:它存下你告诉它的内容,并在之后把相关的部分取回来,在任何会说这个协议的客户端里都是如此。如果你更愿意自己跑一套,有好几个免费的可自托管记忆服务器,我们在对照表里列出了它们。