MCP是什么?

mcp是什么

MCP (Model Context Protocol 模型上下文协议)是由Anthropic推出的开源协议,旨在实现大语言模型与外部数据源和工具的集成,用来在大模型和数据源之间建立安全双向的连接。

使用 MCP,Claude 或 ChatGPT 等人工智能应用程序可以连接到数据源(例如本地文件、数据库)、工具(例如搜索引擎、计算器)和工作流程(例如专业提示词),使它们能够访问关键信息并执行任务。

将 MCP 视为用于 AI 应用的 USB-C 端口。正如 USB-C 提供了连接电子设备的标准化方式一样,MCP 也提供了将 AI 应用程序连接到外部系统的标准化方式。

image.png

mcp能做什么

  • 使Agent访问日历和地区,播放天气预报、投递活动信息,充当更加个性化的人工智能助手
  • 根据预设的规范和规则生成代码,生成数据库查询sql
  • 聊天机器人可以连接到企业内的多个数据库,使用户能够使用聊天来获取、分析数据
  • 自动获取git提交记录写周报
  • 各种你能够想象到的功能都可以通过mcp集成在AI应用中

当提到mcp 时不得不提及 function call(函数调用),从功能上来说,mcpfunction call是部分重合的,两者都是对AI应用能力进行拓展,但是其设计理念和拓展能力存在显著差别。

function call最早由openai团队与23年提出并支持,其可以看做是大模型本身的能力,最早支持function call协议的大模型是chatgpt-4,现有的主流大模型基本都已经支持;function call 是一种程序内部的控制机制,旨在通过调用函数执行特定任务,其对AI应用的拓展能力仍然是基于编程的,如果我们想要给一个AI应用添加一个天气查询的能力,就首先需要编码开发一个具有天气查询的方法,然后将这个方法作为工具(tool)传递给大模型由大模型决定何时使用,所以我们可以认为 function call 拓展AI应用是通过 内生 的方式进行的,应用要使用一个能力就必须先具备这个能力。

mcp协议则允许在不改变AI应用本身的情况下,使外部工具“注册” 到AI应用内,AI应用就具备了使用这个工具的能力,这种拓展是通过 外来 的方式进行的。

目前mcp已经成为AI应用能力开发的主流,但这不是说就能够完全替代function callfunction call更适合解决AI应用内控制流和数据传递问题,它更为简单、直接,适合处理应用内部逻辑。两者实际上是互补关系。

mcp的核心概念

MCP 遵循客户端-服务器架构,其中 MCP 主机(Claude Code 或 Cursor等 AI 应用程序)建立与一个或多个 MCP 服务器的连接。 MCP 主机通过为每个 MCP 服务器创建一个 MCP 客户端来实现这一点。 每个 MCP 客户端与其相应的 MCP 服务器保持专用的一对一连接。

MCP架构的主要参与者是:

  • MCP Host:协调和管理一个或多个 MCP 客户端的 AI 应用程序
  • MCP 客户端:维护与 MCP 服务器的连接并从 MCP 服务器获取上下文以供 MCP 主机使用的组件
  • MCP 服务器:为 MCP 客户端提供上下文的程序

例如:当我们在cursor中使用context7时,cursor本身充当的就是MCP主机的角色,cursor会实例化一个MCP客户端对象完成与context7 MCP服务器的连接,并且使用该客户端对象维护与context7 MCP服务器的连接;当我们再使用另一个mcp deepwiki时,cursor又会新建一个MCP客户端对象完成与deepwiki MCP服务器的连接,使用这个新的客户端对象维护与deepwiki MCP服务器的连接;我们上文中提到的外部工具“注册” 到AI应用内 实际上是通过 客户端与服务器的一对一连接进行的。

image.png

需要注意的是,MCP 服务器指的是提供上下文数据的程序,无论它在哪里运行。MCP 服务器可在本地远程运行。

例如,当 Claude Desktop 启动文件系统服务器时,服务器会在同一台机器上本地运行,因为它使用的是 STDIO 传输。这通常被称为 "本地 "MCP 服务器。官方的 Sentry MCP 服务器在 Sentry 平台上运行,并使用Streamable HTTP 传输,这通常被称为 "远程 "MCP 服务器。

从层次上看,MCP由数据层和传输层组成:

  • 数据层:定义了基于 JSON-RPC 的客户端与服务器通信协议,包括生命周期管理和核心基元,如工具、资源、提示和通知。

  • 传输层:传输层管理客户端和服务器之间的通信通道和身份验证。它处理 MCP 参与者之间的连接建立、信息构架和安全通信。

MCP 支持两种传输机制:

  • Stdio 机制:使用标准输入/输出流,在同一台机器上的本地进程之间进行直接进程通信,提供最佳性能,且无网络开销。

  • Streamable HTTP 机制:使用 HTTP POST 发送客户端到服务器的信息,并可选择服务器发送事件(Server-Sent Events)来实现流功能。这种传输方式可实现远程服务器通信,并支持标准 HTTP 身份验证方法,包括承载令牌、API 密钥和自定义请求头。MCP 建议使用 OAuth 获取身份验证令牌。 传输层抽象了协议层的通信细节,使所有传输机制都能使用相同的 JSON-RPC 2.0 消息格式。

总结

mcp 在不对AI应用进行再开发的情况下极大的拓展了AI应用的能力范围,下一篇将介绍如何开发一个自己的mcp。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容