链载Ai

标题: Cursor里很火的 MCP(Model Context Protocol)是什么?长文介绍,收藏起来! [打印本页]

作者: 链载Ai    时间: 3 小时前
标题: Cursor里很火的 MCP(Model Context Protocol)是什么?长文介绍,收藏起来!

大家好呀!今天和大家深入探讨一下在 AI 领域掀起热潮的 Model Context Protocol(MCP)。Anthropic 在 2024 年 11 月发布了 MCP,起初开发者社区反应积极,然而那时很少有人意识到它的全部潜力。转眼间到了 2025 年 3 月,MCP 突然成为了 AI 领域最热门的话题。

这种转变在 Cursor、Cline 和 Goose 等流行的消费级 IDE 正式支持 MCP 时变得尤为明显。随着越来越多的客户端应用程序采用它,服务器端的集成变得愈发重要,其影响力也随之扩大。

然而,尽管备受关注,大家仍然心存疑惑:“MCP 究竟是什么?我应该关注它吗?它真的会成为下一个重大突破,还是只是又一个 AI 炒作呢?”

在本文中,我将为大家揭开 MCP 的神秘面纱,阐明它的用途,并剖析它为何重要。

MCP 是什么

为了让大家更清楚地了解,MCP 既不是像 LangChain 那样的框架,也不是一种工具,它是一种协议,类似于网络的 HTTP 协议或消息传递的 SMTP 协议。

一个更贴切的例子是 LSP(语言服务器协议),它在开发工具生态系统中对添加编程语言支持进行了标准化。同样地,MCP 对将额外上下文和工具集成到 AI 应用程序生态系统中进行了标准化。

它提供了通用规则,允许任何客户端与任何服务器进行通信,无论这些组件是由谁构建的,从而为多样化且可互操作的 AI 生态系统奠定了基础。Anthropic 将其定义为类似于智能体系统的 USB-C 端口。它对 AI 应用程序、大语言模型(LLM)和外部数据源(数据库、Gmail、Slack 等)之间的连接进行了标准化。

机器是客户端,外围设备是工具,而 MCP 就是 Type-C 端口。所以,无论设备或外围设备是谁制造的,它们都能无缝协同工作。

MCP architecture image

MCP 定义了客户端应如何与服务器通信,以及服务器应如何处理工具(API、函数等)和资源(如日志、数据库记录等只读文件)。后面我们会详细介绍这些内容。

为什么我们应该关注MCP

标准化的好处

  1. 统一集成:使用单一协议即可将任何 LLM 连接到任何工具。
  2. 减少开发时间:资源访问和工具执行采用标准模式。
  3. 明确的职责分离:数据访问(资源)和计算(工具)清晰分离。
  4. 一致的发现机制:使用统一的机制来查找可用的功能(工具、资源、提示、根目录、采样)。
  5. 跨平台兼容性:为一个系统构建的工具可在其他系统上使用。

MCP具有革命性吗?

回答是:没有。

没有 MCP 你也能开展工作。它并非具有革命性,但它为原本混乱的智能体开发领域带来了标准化。如果你的应用程序符合 MCP 客户端标准,你就可以连接到任何符合 MCP 客户端标准的服务器。在另一种情况下,作为客户端开发者,你必须根据自己的需求定制服务器,而其他人无法为你的平台进行开发。对于服务器开发者来说也是如此。

例如,在 Cursor 中,如果 MCP 服务器遵循相关协议,你就可以连接到任何 MCP 服务器。

此时,大家对 MCP 的用途或多或少有了一定的了解。现在,让我们更透彻地理解 MCP。

MCP 架构

Model Context 协议由几个关键组件协同工作。以下是 Matt Pocock 在 Twitter 上发布的一张架构图。

MCP diagram

完整的 MCP 架构由四个部分组成:

在上面的图表中,客户端和主机是合并的;为了更清楚地说明问题,我们将它们分开来讲解。

1. 主机(Host)

主机是期望从服务器获取数据的 LLM 应用程序。主机可以是 IDE、聊天机器人或任何 LLM 应用程序。它们负责:

例如 Claude Desktop、Cursor IDE、Windsurf IDE 等。

2. 客户端(Client)

每个客户端都有以下关键职责:

3. 服务器(Server)

服务器是用外部数据和上下文丰富 LLM 的基本构建块。服务器的关键原语包括:

工具由模型控制,而资源和提示由用户控制。模型可以根据给定的上下文自动发现并调用工具。

协议

该协议构成了 Model Context 协议(MCP)架构的基础。它定义了不同组件(主机、客户端和服务器)如何通信。如需更深入的信息,请参考官方的 MCP 规范。

协议层

该协议由几个关键层组成:

在上述五个部分中,基础协议,即 JSON-RPC 消息类型和生命周期管理,对于每个 MCP 实现都至关重要。其他组件可以根据特定应用程序的需求进行实现。

协议的关键部分

1. 消息(Messages)

MCP 的核心是使用 JSON-RPC 2.0 作为其消息格式,为客户端和服务器之间的通信提供了一种标准化的方式。基础协议定义了三种基本消息类型:

  1. 请求(Requests):从客户端发送到服务器或从服务器发送到客户端以启动操作的消息。示例:
{jsonrpc:"2.0";id:string|number;method:string;params?:{[key:string]:unknown;};}
  1. 响应(Responses):对请求的回复消息。
{jsonrpc:"2.0";id:string|number;result?:{[key:string]:unknown;}error?:{code:number;message:string;data?:unknown;}}
  1. 通知(Notifications):不需要响应的单向消息。
{jsonrpc:"2.0";method:string;params?:{[key:string]:unknown;};}

2. 传输机制(Transport Mechanisms)

根据部署需求,该协议可以在不同的传输层上实现:

  1. stdio:通过标准输入/输出流进行通信。
MCP Stdio
  1. 使用服务器发送事件(SSE)的 HTTP
MCP over SSE
  1. 自定义传输(Custom transports):实现可以根据需要创建额外的传输机制。

3. 生命周期管理(Lifecycle Management)

基础协议为客户端和服务器之间的连接实现了结构化的生命周期:

  1. 初始化阶段(Initialization Phase)






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5