什么是MCP
什么是MCP(Model Context Protocol)
MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
MCP 诞生的背景:解决AI 助理光说不做的障碍
传统的AI 助理(像ChatGPT 或Claude)擅长对话与文字生成,但它们最大的限制是无法直接存取使用者的电脑、资料库或网路服务。例如,当你问AI:「帮我整理我电脑内这些Excel 档案的资料」,它无法直接读取你的电脑档案(不然就是要把档案上传到GPT),只能给你一些Excel 公式建议。实用性上有相当大的隔离,而这种隔离使AI 像是一座孤岛,无法与外界互通。
MCP的出现,就是为了搭建这座「桥梁」。它是一个开放原始码的协定,允许AI 助理安全地存取外部数据,让AI 更像一个真正的助手,而不只是「说话」的机器。例如,MCP 就像是一个智能家居系统的中央控制器,让你的AI 助理能够打开灯光、调整温度,甚至查看冰箱里还有哪些食材,而不只是告诉你「某某冰箱有什么功能」。
再举个例子,假设你是一名企业分析师,想让AI 助理帮你整理SQL 资料库里的销售数据。没有MCP,AI 只能告诉你「SQL 查询语法怎么写」,但有了MCP,AI 可以直接执行SQL 查询,把数据拉出来分析,甚至自动产生报表。这让AI 从一个「建议者」,真正变成一个「执行者」。
整理一下现在AI能做到的,以及有了MCP之后AI进化的比对:
指令 | 有MCP之前 | 有MCP之后 |
---|---|---|
帮我整理销售报表 | AI 只能说:「请给我数据,我帮你分析。」 你还得自己打开Excel 上传。 | AI 通过MCP 连接到你的档案系统,打开Excel,整理数据后生成图表,直接回传给你。 |
帮我写好回覆内容寄信给客户 | 好,已经写好了内容,但我没办法寄给客户。请打开Gmail自己寄吧! | AI 通过MCP 调用Email 服务,自动起草并发送邮件,同时在CRM 中更新客户状态为「已联系」 |
帮我关灯 | 我无法连接到你家的灯具,但你可以自己走到开关前面,把灯关闭。 | AI 通过MCP 连接到智慧家庭系统,执行关灯指令,并回覆:「灯已关闭。」 |
工作原理
MCP 协议采用了一种独特的架构设计,它将 LLM 与资源之间的通信划分为三个主要部分:客户端、服务器和资源。
客户端负责发送请求给 MCP 服务器,服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP 协议能够更好地控制访问权限,确保只有经过授权的用户才能访问特定的资源。
以下是 MCP 的基本工作流程:
- 初始化连接:客户端向服务器发送连接请求,建立通信通道。
- 发送请求:客户端根据需求构建请求消息,并发送给服务器。
- 处理请求:服务器接收到请求后,解析请求内容,执行相应的操作(如查询数据库、读取文件等)。
- 返回结果:服务器将处理结果封装成响应消息,发送回客户端。
- 断开连接:任务完成后,客户端可以主动关闭连接或等待服务器超时关闭。
MCP 如何工作
那我们来介绍一下 MCP 的工作原理。首先我们看一下官方的 MCP 架构图。
MCP 核心架构
MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:
- MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如 Claude Desktop、IDE 或 AI 工具)。
- MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接。
- MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。
- 本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库)。
- 远程资源(Remote Resources):MCP server 可以连接到的远程资源(例如通过 API)。
MCP Client
MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:
- MCP client 首先从 MCP server 获取可用的工具列表。
- 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
- LLM 决定是否需要使用工具以及使用哪些工具。
- 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
- 工具调用的结果会被发送回 LLM。
- LLM 基于所有信息生成自然语言响应。
- 最后将响应展示给用户。
Claude Desktop 和Cursor都支持了MCP Server接入能力,它们就是作为 MCP client来连接某个MCP Server感知和实现调用。
MCP Server
MCP server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:
- 资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
- 工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
- 提示(Prompts):预先编写的模板,帮助用户完成特定任务。
这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。
你可以在 MCP Servers Repository 和 Awesome MCP Servers 这两个 repo 中找到许多由社区实现的 MCP server。使用 TypeScript 编写的 MCP server 可以通过 npx 命令来运行,使用 Python 编写的 MCP server 可以通过 uvx 命令来运行。
通信机制
MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于(SSE Server-Sent Events)的远程通信。
这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。
- 本地通信:通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
- 远程通信:利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。
如何使用 MCP
如果你还没有尝试过如何使用 MCP 的话,我们可以考虑用 Cursor(本人只尝试过 Cursor),Claude Desktop 或者 Cline 来体验一下。当然,我们并不需要自己开发 MCP Servers,MCP 的好处就是通用、标准,所以开发者并不需要重复造轮子(但是学习可以重复造轮子)。
首先推荐的是官方组织的一些 Server:官方的 MCP Server 列表。
目前社区的 MCP Server 还是比较混乱,有很多缺少教程和文档,很多的代码功能也有问题,我们可以自行尝试一下 Cursor Directory 的一些例子,可以参考官方文档。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))