支持私有云部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


深入解析模型上下文协议(MCP)

发布日期:2025-03-19 04:54:28 浏览次数: 1514 来源:异度部落格
推荐语

模型上下文协议(MCP)在编程领域的应用日益增多,本文为你揭开其神秘面纱。

核心内容:
1. MCP的起源与核心概念解析
2. MCP整体架构及其组成部分
3. MCP Host和MCP Client的功能与工作机制

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

概述

随着 Cursor 等智能编程工具的崛起、Manus 产品的推出,以及 Claude Sonnet 等大语言模型在编程领域能力的显著提升,MCP 逐渐引起了技术社区的广泛关注与重视。本文将深入浅出地介绍 MCP 的核心概念,并结合具体场景探讨其实际应用价值。

什么是 MCP?

MCP(The Model Context Protocol,模型上下文协议)是一个开放协议,由 Anthropic 在 2024 年 11 月提出。MCP 能够实现 LLM 应用与外部数据源和工具之间的无缝集成。无论是在构建一个 AI 驱动的 IDE、增强聊天界面,还是创建自定义 AI 工作流,MCP 都提供了一种标准化的方式,将 LLM 与所需的上下文连接起来。 可以把 MCP 理解为 Agent 世界的 转接头

2456f8e57cfcf4c02f49964bddeba6e1.png

MCP 整体架构

MCP 遵循 client-server 架构,对于一个 Agent 而言可以连接多个 MCP Server。整体架构包含 4 部分:

  • MCP Host:通过 MCP 访问数据的 AI 工具的程序,如 Claude Desktop、集成开发环境(IDE)或 Agent 等
  • MCP Client:与 MCP Server 保持 1:1 连接的协议客户端
  • MCP Server:轻量级程序,通过标准化的 MCP 暴露特定功能,包括工具(Tools)、外部资源(Resources)和提示词模版(Prompts)等。
  • MCP Protocols:定义 MCP Client 和 MCP Server 之间的通信方式
81b16e8ec94283df1df07d99ca0eefa9.png

MCP Host

MCP Host 可以是任何需要访问外部数据的 LLM 应用/Agent。它们负责:

  • 初始化和管理多个 MCP Client。
  • MCP Client-MCP Server 生命周期管理。
  • 处理用户授权。
  • 管理跨 MCP Client 的上下文聚合。

MCP Client

每个 MCP Client 负责:

  • 专用连接:每个 MCP Client 与 MCP Server 保持一对一的有状态连接。这种专用连接模式确保了通信界限清晰,并实现安全隔离。
  • 消息路由:MCP Client 负责处理所有双向通信,高效地在 MCP Host 和所连接 MCP Server 之间传递请求、响应和通知。
  • 能力管理:MCP Client 通过维护服务器的可用工具、资源(上下文数据)以及提示模板等信息,监控并管理所连接 MCP Server 的能力。
  • 协议协商:在初始化阶段,MCP Client 会与 MCP Server 协商协议版本和相关能力,以确保 MCP Host 与 MCP Server 之间的兼容性。
  • 订阅管理:MCP Client 维护对 MCP Server 资源的订阅关系,当这些资源发生变化时,负责处理并分发相应的通知事件。

MCP Server

MCP Server 是为 LLM 提供外部数据和上下文的基础构建单元。MCP Server 的关键组成包括:

  • 工具(Tools):工具是可执行的函数,使得大语言模型能够与外部应用进行交互,其作用方式类似于传统 LLM 调用中的函数。例如,一个名为 LIST_FILES 的工具,接收目录名称作为参数,执行后会获取该目录下的文件,并将结果返回给客户端。此外,工具也可以是对外部服务的 API 调用,例如 Gmail、Slack 和 Notion 等。
  • 资源(Resources):资源包括文本文件、日志文件、数据库结构定义、文件内容以及 Git 历史记录等,可以为 LLM 提供额外的上下文信息。
  • 提示模板(Prompt Templates):预定义的模板或指令,用于指导 LLM 的互动行为。

工具由模型自主控制,而资源和提示模板则由用户进行控制。模型能够根据给定的上下文自动发现并调用所需工具。

MCP Protocols

所有的 MCP Protocol 必须遵循 JSON-RPC 2.0。目前协议定义的类型有:

  • Requests:执行操作的消息,必须包含唯一的 ID 和方法名。
  • Responses:返回的消息,必须包括 Request 中的 ID。
  • Notifications:单向消息无需返回,必须不包含 ID。

关于协议的更多内容可以参考:https://spec.modelcontextprotocol.io/specification/2024-11-05/

Function Calling vs MCP

主要区别如下:

Function Calling 由特定的大模型服务提供商(如 OpenAI 的 GPT-4)引入的功能。它允许模型根据输入,生成特定格式的函数调用请求。应用程序接收到该请求后,执行相应的操作,并将结果返回给模型。这种机制使模型能够主动请求外部功能的执行,但并不强制要求使用特定的通信协议或格式。

MCP 是在 OpenAI 的 Function call 和 GPTs 之后提出的,可以说 Function call 为 MCP 提供了灵感和基础功能。MCP 是一种开放协议,旨在通过标准化的接口,实现大型语言模型与外部数据源及工具的无缝集成。它规定了上下文与请求的结构化传递方式,确保消息传递的标准化和一致性。MCP 的设计初衷是通过本地运行服务器来确保用户数据的安全性,避免将敏感信息直接发送给 LLM。

主要区别:

  • 层级定位:Function Calling 更侧重于模型的具体实现和特性,是特定大模型厂商提供的独特功能。而 MCP 则是一个更底层、更通用的标准,相当于为所有人提供的“公共基础设施”。
  • 通信方式:Function Calling 的通信格式并不固定,可能根据不同厂商的实现而有所不同。而 MCP 要求通信格式遵循 JSON-RPC 2.0 标准,确保消息传递的标准化和一致性。
  • 依赖关系: 两者并不互相包含,也没有谁必须依赖谁。应用可以选择在 MCP 之上通过特定机制(包括 Function Calling)与模型交互,也可以在 MCP 范式下使用其他不基于 Function Calling 的方式与模型或数据源交互。

参考资料

  • Model Context Protocol Introduction
  • Model Context Protocol Specification
  • 给 MCP 祛魅
  • MCP 与 Function Call 区别 - 蝈蝈俊 - 博客园

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询