MCP Explained
348 points • 7 days ago • Article Link

模型上下文协议(Model Context Protocol,简称 MCP)是一项开放标准,旨在将 AI 应用连接到它们所需的各类工具和数据源。其核心架构包含一个宿主(host),例如 AI 智能体或开发环境,以及一个 MCP 服务器(MCP server)。服务器是一个小程序,用于暴露特定的能力(capabilities)、数据(data)或提示(prompts)。模型本身处于关键位置,它负责决定何时调用这些外部工具,但重要的是:模型从不直接与服务器通信。

这种交互机制以 JSON-RPC 作为底层消息格式,不过 MCP 进一步通过定义具体方法、能力协商以及传输机制来提供更完整的结构。与标准的 REST API 不同,MCP 支持双向通信,使服务器可以反向与宿主进行交互。该协议还会管理这些连接的完整生命周期,包括初始化、持续运行以及关闭;同时集成了诸如用于远程服务器访问的 OAuth 2.1 等安全特性。

从功能上看,该协议为服务器端和客户端划分了不同的功能集。服务器端提供模型可调用的工具(tools)、应用可读取的资源(resources),以及用户可选择的模板(prompts)。与此同时,客户端或宿主端提供诸如采样(sampling)之类的能力:它允许服务器借用模型;还包括用于请求用户输入的引导(elicitation),以及定义服务器允许运行的根目录(root directories)。诸如进度跟踪(progress tracking)和日志记录(logging)之类的工具,确保这些自动化任务保持透明且易于管理。

工作流程按固定步骤展开:AI 应用首先向服务器查询,以发现其可用的工具。随后,这些信息会被传递给模型,使其理解自己可以触发哪些函数。当用户提出请求时,模型会判断需要调用哪一个工具,生成所需的参数(arguments),并指示应用通过服务器执行该工具。服务器完成处理后,将结果返回给模型,模型再整合信息,生成并输出给用户的最终答复。

尽管该协议提供了连接所需的基础框架,但诸如智能工具检索或更复杂的代码生成模式等高级能力仍不在规范范围内,而是由具体实现来完成。此外,MCP 的开发也非常重视安全性,充分认识到工具投毒(tool poisoning)、注入(injection)或钓鱼(phishing)等潜在风险。协议的持续更新不断扩展其能力,未来的迭代将致力于引入更强的扩展,用于提升智能体能力(agent skills)、改进交互式用户界面,以及优化任务管理。

136 comments • Comments Link

- 许多人认为,模型上下文协议(MCP)是一种面向 agents 的标准化 JSON-RPC 接口;但也有批评者觉得,它为简单的请求 / 响应模式平添了不必要的复杂性。

- 交互式、支持多窗格的文档格式因追求"好莱坞式 UX"而遭到批评:它往往不是为了高效、线性地提炼信息,而是让读者更容易感到无所适从。

- 关于 MCP 的实际价值,观点分歧很大:有人把它看作模仿旧行业潮流的"没什么用(nothing burger)",也有人认为它在企业环境中对安全、受限资源的访问至关重要。

- 技术说明文档的"信息密度"偏高且设计不佳,通常被认为是过度依赖 LLM 生成内容、缺少人工监督,以及缺乏基本的教学原则所致。

- 对于非技术用户和受监管的环境,MCP 充当了一座更安全、可授权的桥梁——这往往比让 agents 安装任意 CLI 工具或授予其 shell 访问权限更容易被管理员接受。

- 一个关键技术批评是:MCP 缺少 Unix 风格管道和 CLI 固有的可组合性,因此一些高级用户会把 MCPs 再包装进脚本里,以重新获得链式操作的能力。

- 高级用户还注意到, "harnesses" 往往会隐藏重要的工具元数据,迫使 agents 去猜测参数;在这种情况下,结合良好错误日志记录的简单 execute-script 方法反而更稳健。

- AI 开发的"苦涩教训"表明:随着模型能力提升,更复杂的架构层往往会变得多余,因为 agents 越来越能直接使用原始 APIs 或标准的 CLI 。

- 文档与协议设计常常受制于创建者的"知识诅咒":开发者没有站在目标受众的思维模型和具体疑问上来设计。

- 对许多人来说,最有效的采用方式是让 LLMs 负责搭建样板配置,把协议当作实现细节,而不是一项需要手动完成的集成工作。

这段讨论凸显了一个张力:一方面,人们希望为 AI agents 提供标准化、可安全使用的接口;另一方面,开发者更偏好 CLI 等简单、可组合的工具。批评者认为 MCP 不过是多余的"稀释物(slop)"或带有管理色彩的流行做法;支持者则认为,它提供了标准 APIs 以及那些带 shell 访问权限的 agents 所缺少的必要安全层。归根结底,这场讨论说明:尽管该协议在集成不同企业服务方面确实有现实效用,但它目前的呈现方式往往不足以打动那些重视简洁与清晰,以及认可现有标准工具强大功能的开发者。