浅谈MCP协议
前置概念
Function Calling(函数调用)
Function Calling由OpenAI等公司推动,允许大语言模型与外部工具连接,将自然语言转换为API调用。这解决了大模型在训练结束,就知识更新停滞的问题。
通过调用外部工具和服务,Function Calling帮助大模型解决了比如今天温度多少度,今天的大盘收盘点数是多少之类的实时性问题。
Function Calling的工作原理可以通过以下几个简单步骤来理解:

以天气查询为例,Function Calling的工作流程大致如下:
第一步,识别需求 :这是一个关于实时天气的问题,需要调用外部天气API。
第二步,选择函数 :从可用函数中选择get_current_weather函数。
第三步,准备参数 :
{
"location": "北京",
"unit": "celsius"
}
第四步,调用函数 :系统使用这些参数调用实际的天气API,获取北京的实时天气数据。
第五步,整合回答 : "根据最新数据,北京今天的天气晴朗,当前温度23°C,湿度45%,微风。今天的最高温度预计为26°C,最低温度为18°C。"
对开发者来说,使用LLM的Function Calling起步相对容易,只需按照API要求定义函数规格(通常JSON模式)并将其随请求发送,模型就可能按照需要调用这些函数,逻辑较直观。
因此,对于单一模型、少量功能的简单应用,Function Calling 实现起来非常直接,几乎“一键”将模型输出对接到代码逻辑中。
然而,它的局限在于缺乏跨模型的一致性:每个LLM供应商的接口格式略有差异,开发者若想支持多个模型,需要为不同API做适配或使用额外框架处理。而且,无状态性 :模型仅生成调用规范,实际执行由外部系统完成。
案例:在GLM-4-Air-250414模型中调用函数
Agent智能体
智能体(AI Agent)的定义多样。一些人认为它是完全自主的系统,可独立完成复杂任务;另一些人则认为它是遵循预定义工作流的实现。目前,基于大语言模型(LLM)的AI Agent被广泛认可。其架构包括基础规划、工具使用等模块,通过感知、规划和行动(PPA)循环实现智能决策。
将Agent视为人工智能大脑,它使用LLM进行推理、计划和采取行动。
- 功能 :具备自主决策能力的AI系统,通过结合LLM的核心推理能力、工具调用(Tools)、记忆(Memory)和规划(Planning)等模块,完成复杂任务。
- 本质 :是一个多组件协同的“代理”,能动态选择工具、迭代执行直至目标达成。

核心特点
- 自治性 :自主决定何时调用工具、如何组合结果。
- 多步迭代 :通过“思考-行动-观察”循环处理复杂问题(如“写一篇行业报告并邮件发送”)。
- 组件架构 :
-
- 规划模块 :拆解任务为子目标。
- 工具库 :集成多种函数/API(搜索、计算、绘图等)。
- 记忆机制 :存储历史交互信息。
# 用户请求:"总结AI最新进展,用图表展示并邮件给团队。"
Agent的执行流程:
1. 调用搜索工具获取最新论文。
2. 调用摘要生成模型提炼关键点。
3. 调用图表生成工具创建可视化。
4. 调用邮件API发送结果。

MCP
1、定义
MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
Function Calling是AI模型调用函数的机制,MCP是一个标准协议,使AI模型与API无缝交互,而AI Agent是一个自主运行的智能系统,利用Function Calling和MCP来分析和执行任务,实现特定目标。
即使是最强大模型也会受到数据隔离的限制,形成信息孤岛,要做出更强大的模型,每个新数据源都需要自己重新定制实现,使真正互联的系统难以扩展,存在很多的局限性。
现在,MCP 可以直接在 AI 与数据(包括本地数据和互联网数据)之间架起一座桥梁,通过 MCP 服务器和 MCP 客户端,大家只要都遵循这套协议,就能实现“万物互联”。
有了MCP,可以和数据和文件系统、开发工具、Web 和浏览器自动化、生产力和通信、各种社区生态能力全部集成,实现强大的协作工作能力,它的价值远不可估量。

2、MCP 与 Function Calling 的区别
- MCP(Model Context Protocol),模型上下文协议
- Function Calling,函数调用
这两种技术都旨在增强 AI 模型与外部数据的交互能力,但 MCP 不止可以增强 AI 模型,还可以是其他的应用系统。

3、工作原理
MCP 协议采用了一种独特的架构设计,它将 LLM 与资源之间的通信划分为三个主要部分:客户端、服务器和资源。
客户端负责发送请求给 MCP 服务器,服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP 协议能够更好地控制访问权限,确保只有经过授权的用户才能访问特定的资源。
以下是 MCP 的基本工作流程:
- 初始化连接:客户端向服务器发送连接请求,建立通信通道。
- 发送请求:客户端根据需求构建请求消息,并发送给服务器。
- 处理请求:服务器接收到请求后,解析请求内容,执行相应的操作(如查询数据库、读取文件等)。
- 返回结果:服务器将处理结果封装成响应消息,发送回客户端。
- 断开连接:任务完成后,客户端可以主动关闭连接或等待服务器超时关闭。

4、通信机制
MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSE(Server-Sent Events)的远程通信。
这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。
- 本地通信 : 通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
- 远程通信 : 利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。
5、FastMCP:构建模型上下文协议(MCP)服务器的快速Python方案
Java开发MCP服务:把SpringBoot项目改造成MCP Server非常简单 - 知乎
Python开发MCP服务:GitHub - langchain-ai/langchain-mcp-adapters
开源的MCP服务项目:MCP servers | Glama
它提供了一种简单且高效的方法来构建MCP服务器,为开发者提供强大的工具和资源,从而帮助他们为LLMs提供上下文信息。
FastMCP的主要特性:
- 快速:高层接口意味着更少的代码和更快的开发速度。
- 简单:构建MCP服务器时,所需的样板代码最少。
- Pythonic:符合Python开发者的直觉,使用起来更自然。
- 完整:致力于提供MCP规格的全面实现(当前某些高级功能仍在开发中)。
- FastMCP正在积极开发中,而MCP规格本身也在不断完善。
Agent2Agent (A2A)
Google 于 2025 年 4 月 9 日发布的 Agent2Agent (A2A) 协议的技术细节.
A2A 是一个开放协议,旨在促进 AI Agent之间的协作,特别适用于大规模、多智能体系统的部署。其设计原则和功能如下:
A2A 基于五个核心原则:
- 拥抱智能体 能力 :支持自然、非结构化的协作模式。
- 利用现有标准 :使用 HTTP、Server-Sent Events (SSE) 和 JSON-RPC,确保与现有系统的兼容性。
- 默认安全 :支持企业级认证和授权,启动时与 OpenAPI 保持一致。
- 支持长期任务 :处理从快速任务到深入研究的任务,提供实时反馈、通知和状态更新。
- 多模态支持 :支持文本、音频、视频流等多模态通信。

MCP 的角色 :MCP 于 2024 年 11 月由 Anthropic 发布,旨在标准化 AI 模型与外部数据源(如数据库、API、文件系统)的连接。它的目标是让 AI 助理能够访问和利用上下文数据,提升响应质量。MCP正在统一不同模型和框架的“函数调用”功能,这催生了一个工具服务商生态系统,大幅降低了智能体与工具/数据的对接复杂度。随着更多框架、服务商和平台采用MCP,这一趋势将持续深化。
A2A 的角色 :A2A协议则解决另一类问题——它是应用层协议,支持智能体以自然模态协作。A2A允许智能体以“智能体”(或“用户”)身份交互,而非作为工具被调用。A2A与MCP互补,共同推动智能体生态发展,并将通过开放协作实现这一愿景。
更多推荐


所有评论(0)