背景
MCP(Model Context Protocol,模型上下文协议)旨在解决大型语言模型(LLM)与外部数据源及工具集成的问题。由Anthropic公司于2024年11月提出并开源,目标是实现AI模型与现有系统的无缝集成。
解决的问题
- 统一接口:MCP 提供了一个统一的接口,解决了不同数据源和工具之间的兼容问题,使得 AI 应用能够更加灵活地与外部资源进行交互。
- 降低集成成本:开发者不再需要为每种工具或数据源编写单独的集成代码,通过 MCP 协议,AI 模型能够轻松接入多种服务,减少了开发和维护的工作量。
- 双向通信:MCP 协议的双向通信机制使得 AI 应用可以与外部工具和数据源进行更为复杂和智能的交互,为未来的智能化应用提供了更加广阔的可能性。
- 高度扩展性:MCP 支持多种数据传输机制和传输层协议,具有良好的扩展性,能够适应不同的应用需求。
发展历程与时间线
MCP协议的发展经历了几个关键阶段:
-
2024年11月24日:Anthropic首次提出MCP协议,旨在为无法直接修改底层逻辑的Agent(如Cursor、Claude桌面端等)提供工具调用标准
-
2024年12月:技术社区出现首批基于Claude 3.5 + MCP的应用案例,如通过MCP协议实现Claude与本地文件系统、数据库的自动化交互
-
2025年3月初:MCP生态进入规模化应用阶段,企业如Block、Apollo等通过集成MCP实现跨系统数据调度,业务流程响应速度提升数倍
-
2025年3月11日:LangChain联合创始人与LangGraph负责人围绕MCP展开辩论,40%参与者支持MCP成为未来标准
-
2025年3月17日:Anthropic推出MCP协议新传输方案"Streamable HTTP",彻底重构通信机制,解决原HTTP+SSE方案在连接恢复性、服务器负载及双向通信方面的核心瓶颈
-
2025年3月27日:OpenAI宣布支持MCP协议,标志着MCP获得行业广泛认可
MCP Servers主要功能
- 资源暴露:服务器提供给客户端的数据实体,可以是文件、数据库记录等。
- 工具提供:服务器暴露的可执行功能,客户端可以通过调用这些工具完成特定任务。
- 动态通知:当资源发生变化时,服务器可以通过通知机制主动推送更新到客户端。
- 会话管理:处理客户端的连接初始化、能力协商和会话关闭。
协议架构
MCP 采用客户端-服务器架构:
- MCP Host(主机):运行LLM的应用程序,例如Claude 桌面版、IDE 插件或聊天机器人。主机是与外部数据源或工具交互的核心,通常需要从外部获取上下文数据或执行操作。
- MCP Server(服务器):提供特定的功能或数据访问能力。服务器封装与实际数据源的交互逻辑,并对外暴露统一的MCP接口。
- MCP Client(客户端):充当主机和服务器之间的中介,负责将主机的请求转发给服务器,并将服务器的响应返回给主机。每个客户端与一个特定的服务器建立 1:1 的连接。
通过这种架构,MCP 协议消除了传统上每种数据源都需要单独集成的繁琐步骤,使得 AI 应用能够通过统一的接口与各种外部资源进行交互。
- MCP 主机 :通过 MCP 访问数据的 Claude Desktop、IDE 或 AI 工具等程序
- MCP 客户端 :与服务器保持 1:1 连接的协议客户端
- MCP 服务器 :轻量级程序,每个程序都通过标准化的 Model Context Protocol 公开特定功能
- 本地数据源 :MCP 服务器可以安全访问的计算机文件、数据库和服务
- 远程服务 :MCP 服务器可以连接到的 Internet 上可用的外部系统(例如,通过 API)
核心原理
MCP 协议基于标准的客户端-服务器架构,其中 Host、Client 和 Server 分别承担不同的角色。通信过程遵循 JSON-RPC 等通用 Web 协议来实现双向通信。Host 通过 MCP Client 调用 Server 提供的服务或方法(例如读取文件、执行搜索等),而 Server 完成相应操作后将结果返回给 Host。
整个过程采用 JSON 格式的消息进行数据传输,这样做的好处是确保了上下文在多次交互中得以保持,实现了“连续对话”的功能,而不仅仅是一次性 API 调用。
模型如何确定工具选择
模型通过prompt engineering来确定应该使用哪些工具:
- 当MCP Server初始化时,它会获取所有可用工具的描述信息
- 这些工具描述(包括名称、功能说明和参数要求)被格式化成文本形式
- 格式化后的工具描述与用户问题一起作为prompt发送给LLM
- LLM基于这些描述和用户问题进行推理,决定是否需要调用工具及调用哪些工具
- 如果需要调用工具,LLM会输出JSON格式的工具调用请求
工具的描述信息通常直接来自开发者定义的函数名和函数docstring。
ReAct循环与处理机制
MCP实现了ReAct(Reasoning + Acting)循环机制:
- LLM分析用户需求并制定任务计划
- 执行工具调用并获取结果
- 基于结果进行推理并决定下一步行动
- 如果参数不完整或输出结果置信度低,启动用户协同修正流程
- 循环迭代直至任务完成
传输协议
- stdio:通过标准I/O进行通信,服务器运行在本地,数据更安全。
- HTTP with Server-Sent Events (SSE):通过 HTTP 与外部服务进行通信。
相关服务
目前已经有大量服务和应用基于 MCP 实现,例如可以使用 GitHub-MCP,用自然语言提交代码、创建 PR。利用 Figma MCP,让 AI 直接生成 UI 图。接入 Browser-tools-MCP 后,甚至还能让 cursor 根据浏览器控制台中的元素节点和打印的日志进行代码调试。
MCP与其他协议的关系
MCP与A2A协议
MCP和Agent-to-Agent(A2A)协议实际上是互补关系而非竞争关系:
- MCP:连接大模型与外部数据源/工具,提供上下文和工具支持
- A2A:不同智能体之间的通信协议,支持智能体间协作完成复杂任务
两者可以协同工作构建复杂AI系统:
- A2A负责任务分配、状态同步和协作管理
- MCP为单个智能体提供外部资源访问能力
MCP协议内容
xxSpecification - Model Context Protocol
参考文章
一文搞懂 MCP Servers - 虫师 - 博客园
什么是MCP协议?MCP的技术架构与核心原理是什么?MCP封装了哪些协议?_mcp服务封装-CSDN博客