跳转至

什么是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 架构图。

Internet

Your Computer

MCP Protocol

MCP Protocol

MCP Protocol

Web APIs

Host with MCP Client
(Claude, IDEs, Tools)

MCP Server A

MCP Server B

MCP Server C

Local
Data Source A

Local
Data Source B

Remote
Service C

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 的一些例子,可以参考官方文档。

MCP introduction

捐赠本站(Donate)

weixin_pay
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))