一文读懂大模型中的MCP协议到底是啥东东
模型上下文协议(Model Context Protocol,MCP)是由Anthropic公司于2024年11月推出的开源协议,旨在解决大型语言模型(LLM)与外部数据源及工具集成的复杂性,推动AI从“被动问答”向“主动执行”的转变。
模型上下文协议MCP(Model Context Protocol)
模型上下文协议(Model Context Protocol,MCP)是由Anthropic公司于2024年11月推出的开源协议,旨在解决大型语言模型(LLM)与外部数据源及工具集成的复杂性,推动AI从“被动问答”向“主动执行”的转变。
MCP 属于 应用层协议,其设计目标是标准化大型语言模型(LLM)与外部数据源、工具之间的交互,而非关注底层数据传输或网络连接问题。它在技术架构中位于传统网络协议(如 TCP/IP)之上,专注于定义 AI 模型与外部系统之间的通信语义和交互逻辑。类比:类似于 HTTP 在 Web 生态中的角色,MCP 是 AI 领域的“应用层协议”,负责协调模型与工具之间的功能调用和数据交换。
MCP 的核心通信机制基于 JSON-RPC 2.0(JavaScript Object Notation Remote Procedure Call),这是一种轻量级的远程过程调用协议,具有以下特点:
-
标准化格式:使用 JSON 定义请求和响应结构,确保跨平台兼容性。
-
双向通信:支持请求-响应模式,同时预留扩展能力(如流式数据传输)。
-
轻量化:适合高频次、低延迟的 AI 工具调用场景。
MCP 在 JSON-RPC 的基础上进一步扩展,增加了以下功能:
-
动态工具发现:通过
list_tools方法自动获取可用服务列表。 -
安全上下文(Context):传递权限令牌、用户身份等元数据,确保操作可控。
-
多模态支持:协议预留接口,未来可集成图像、语音等非文本数据交互。
本文并未涉及MCP协议相关代码,大家可以参考文章:
一文带大家了解关于MCP 的完整 Hello World 示例-CSDN博客
技术架构与设计理念
MCP 采用 客户端-服务器模型,由三大核心组件构成:
-
主机(Host)
-
承载 AI 模型的应用程序(如 Claude Desktop、IDE 工具),负责发起请求。
-
控制客户端的连接权限,确保数据安全性。
-
-
客户端(Client)
-
嵌入主机中,负责将模型请求转换为符合 MCP 协议的 JSON-RPC 消息。
-
支持同时连接多个服务器,实现多工具协作。
-
-
服务器(Server)
-
轻量级程序,通过标准化接口暴露外部资源(如数据库、API、文件系统)。
-
提供三类核心功能:
-
工具(Tools):执行具体操作(如发送邮件、运行代码)。
-
资源(Resources):提供结构化数据(如数据库查询结果)。
-
提示(Prompts):定义可复用的任务模板
-
-

核心功能与创新点
-
标准化上下文交互
MCP通过定义“原语”(Prompts、Resources、Tools)规范交互流程,例如:-
资源(Resources):提供结构化数据(如数据库内容);
-
工具(Tools):允许AI调用函数(如代码执行、文件操作);
-
提示(Prompts):支持可复用模板,简化任务设计。
-
-
解决传统集成痛点
传统API需为每个数据源编写独立代码(N×M复杂度),而MCP通过统一协议将复杂度降至M+N,开发者仅需一次集成即可适配多工具。 -
安全性与可控性
内置访问控制机制,用户需明确授权敏感操作(如数据库查询),且服务器可独立管理资源,避免API密钥泄露。
协议的核心优势
相较于传统协议(如 HTTP、自定义 API),MCP 的优势体现在以下几个方面:
-
复杂度大幅降低
-
传统方案:每对接一个工具(N)需为每个模型(M)单独开发接口 ⇒ N×M 复杂度。
-
MCP方案:工具和模型各自实现一次协议适配 ⇒ N+M 复杂度。
-
-
动态扩展性
新增工具时,模型无需修改代码即可通过动态发现机制调用。 -
安全性增强
-
通过
context参数传递动态令牌,敏感操作需用户显式授权。 -
服务器独立管理资源,避免 API 密钥泄露风险。
-
-
实时性与双向交互
支持类似 WebSocket 的双向通信,允许服务器主动推送数据(如实时监控价格变动)
与HTTP协议的对比:从“通用通信”到“场景化专用”
| 维度 | HTTP协议 | MCP协议 |
|---|---|---|
| 设计目标 | 通用的客户端-服务器通信(如网页加载、API调用) | 专为大模型与工具/数据的动态交互设计(如数据库查询、代码执行、硬件控制) |
| 交互模式 | 单向请求-响应,需手动管理状态 | 双向实时通信(如WebSocket),支持流式响应和主动推送(如监控数据变化时实时通知模型) |
| 集成复杂度 | 每个工具需单独开发API接口(N个工具×M个模型 ⇒ N×M复杂度) | 统一协议层(N个工具+M个模型 ⇒ N+M复杂度),一次集成支持所有兼容MCP的工具 |
| 安全性 | 依赖开发者自行实现鉴权、访问控制 | 内置安全机制(如权限分级、操作审计、动态令牌),默认隔离敏感操作(如数据库写入需显式授权) |
| 工具发现 | 需额外开发服务发现机制(如Swagger文档) | 原生支持动态工具发现(模型可主动查询可用工具列表及参数格式) |
典型场景对比:
-
HTTP场景:开发者需为每个数据库、API编写适配代码,模型需硬编码调用逻辑。
-
MCP场景:模型通过
list_tools()动态获取工具列表,调用时仅需符合协议格式,无需关心底层实现。
实际案例:MCP vs HTTP
任务:通过自然语言“分析上周销售数据并邮件周报给团队”调用工具链。
| 步骤 | HTTP实现 | MCP实现 |
|---|---|---|
| 1. 语义解析 | 模型需硬编码如何拆解任务(如先查数据库再发邮件) | 模型调用plan_actions()自动生成工具调用序列 |
| 2. 数据库查询 | 需单独调用SQL API,处理连接池、分页等细节 | 调用query_database(sql),协议自动处理分页和超时 |
| 3. 生成图表 | 需将结果传给另一图表API,手动转换数据格式 | 调用generate_chart(data),协议规定输入为MCP标准数据格式 |
| 4. 发送邮件 | 需调用邮件服务API,处理附件上传、收件人列表 | 调用send_email(content, attachments),协议内置附件编码 |
| 总代码量 | 200+行(含错误处理、格式转换) | 50行(仅描述工具调用顺序) |
未来演进方向
-
协议升级
2025 年计划采用 Streamable HTTP 替代 HTTP+SSE,提升高并发场景性能。 -
多模态扩展
支持连接 AR 眼镜、脑机接口等新型硬件,实现更丰富的交互形式。 -
去中心化生态
结合区块链技术实现分布式工具注册与发现,避免中心化垄断。
结论
MCP 作为 AI 领域的“应用层协议”,通过标准化交互语义和降低集成复杂度,推动 LLM 从“问答工具”向“行动代理”演进。其基于 JSON-RPC 的设计兼顾灵活性与效率,而开源策略则加速了生态共建。随着 Streamable HTTP 等技术的引入,MCP 有望成为下一代 AI 基础设施的核心组件。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)