Anthropic的Model Context Protocol标准化了AI app与工具的接口,分离Host/Client/Server三角色,实现一次编写到处复用。
在 MCP 出现之前,每次将 AI 应用接入工具,都必须量身定制。每个应用都要为它想访问的每个工具手写连接器:M 个应用 × N 个工具 = M×N 份胶水代码,而且彼此无法复用。Model Context Protocol(MCP)是 Anthropic 于 2024 年推出的一项开放标准,它把这团乱麻从 M×N 简化为 M+N。你可以把它理解为「AI 工具领域的 USB-C」;而真正让我对这个概念形成具体认识的,是为实际的消息流构建了一个可视化工具。它的结构如下。
这里有三种角色,而且这些命名很容易让人混淆,所以先明确下来:
Host——AI 应用本身,例如 Claude Desktop、IDE 或自定义 Agent。模型由它承载。
Client——Host 内部的连接器,与某一个 Server 保持 1:1 连接。每个 Server 对应一个 Client。
Server——独立进程,通过统一协议暴露某种能力,例如文件系统、GitHub 或数据库。
只需编写一次 Server,所有 MCP Host 都能使用它。只需编写一次 Client,它就能与所有 Server 通信。这种复用能力——为 Claude Desktop 构建的 Server,无须修改就能用于 IDE 和定制 Agent——正是 M+N 模式带来的全部收益。
不只是 Tools。MCP Server 可以声明三种能力类型,它们之间的区别在于由谁控制:
Tools——模型可以调用的操作(write_file、run_query)。由模型控制。
Resources——通过 URI 定位的只读数据(file:///path、某一行数据)。由应用控制。
Prompts——用户可以选择的可复用模板。由用户控制。
Client 通过 tools/list、resources/list、prompts/list 发现这些能力,再通过 tools/call 或 resources/read 使用它们。
每条消息都是一个普通的 JSON-RPC 2.0 信封。一次性的生命周期握手(initialize)会建立连接;随后通过一轮发现流程(tools/list)告诉 Host 当前有哪些能力可用;之后,每当模型需要使用工具时,就会重复执行调用循环:
1. initialize host ↔ server handshake, capabilities exchanged (once)
2. tools/list client asks what the server offers (once)
3. user asks a question
4. model decides to call a tool
5. tools/call client → server, real code runs
6. result server → client → model
7. model writes the answer
发现流程只执行一次;此后,只要模型决定调用工具,Host 就会直接发出 tools/call。对于本地 Server,传输方式是 stdio;对于远程 Server,则使用 HTTP——无论采用哪种传输方式,上层协议都完全相同。
这是人们经常忽略的一点。MCP 并不会取代普通的 function-calling。模型依然会像过去一样,输出结构化的工具调用。MCP 标准化的是这次调用周围的一切:如何发现工具、如何传输请求,以及如何返回结果。Function-calling 是模型在说「用这些参数调用这个函数」;MCP 则是实现互操作的底层管道,让同一个工具无需重新编写胶水代码,就能被任何应用访问。正因如此,同一个 MCP Server 可以直接接入 Claude Desktop、IDE 和你自己的 Agent——工具定义只需编写一次,协议会把它带到各个应用中。
从 M×N 简化到 M+N,不只是让算式看起来更整洁——它改变了工作由谁来完成。在旧模式下,如果你构建了一个新的 AI 应用,就需要为用户想使用的每个工具编写连接器;如果你构建了一个新工具,则需要为每个应用编写连接器。无论哪一方,其工作量都会随着另一方的增长而增加。
在 MCP 模式下,工具作者只需编写一个 Server,工作就完成了——当前及未来的所有 Host 都可以访问它。应用作者只需编写一个 Client,就能直接获得现有的整个 Server 生态。网络效应由此进入正确的方向:每增加一个 Server,所有 Host 的能力都会增强;每增加一个 Host,所有 Server 的价值都会提升,而任何人都不需要为此重新编写胶水代码。
因此,这套心智模型其实很简单:Host 为每个连接运行一个 Client;每个 Client 通过 JSON-RPC 与 Server 通信;Server 会声明 Tools、Resources 和 Prompts;发现能力使用 */list,调用能力使用 */call。把 M×N 个定制连接器变成 M+N 个可复用连接器,你得到的将是一个生态系统,而不是一堆一次性的适配器。选择一个 Server,然后逐步观察每一条 JSON-RPC 消息如何在线路上传输:
https://dev48v.infy.uk/ai/days/day51-model-context-protocol.html
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。