基于MCP协议调用的大模型agent开发03
目录
MCP技术体系介绍
MCP
Function calling
参考来源及学习推荐:
Anthropic MCP发布通告:https://www.anthropic.com/news/model-context-protocol
MCP GitHub主页:https://github.com/modelcontextprotocol
本系列:
https://blog.csdn.net/yuange1666/article/details/147095760?spm=1001.2014.3001.5502
https://blog.csdn.net/yuange1666/article/details/147095853?spm=1001.2014.3001.5502
https://blog.csdn.net/yuange1666/article/details/147127585?spm=1001.2014.3001.5501
https://blog.csdn.net/yuange1666/article/details/147127981?spm=1001.2014.3001.5501
MCP技术体系介绍
MCP
MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司提出的一种开源协议,旨在让AI模型能够无缝连接外部工具和资源,就像一把“万能钥匙”,打通了AI与现实世界的交互通道。MCP发布于2024年11月,但起初并未引起太多关注,随着今年智能体(Agent)技术的爆发式发展,MCP逐渐成为开发者关注的焦点。今年2月,Cursor宣布支持MCP功能,进一步推动了这一协议的普及。
MCP的核心在于标准化(统一范式)。它通过统一的接口,简化了AI模型与外部工具的集成过程,消除了传统方法中需要为每个工具单独配置API的繁琐步骤。这种标准化的设计不仅降低了开发成本,还减少了错误的发生(调用外部工具时兼容性错误等bug),让AI模型能够更高效地与外部系统协作。
MCP的架构分为三层:主机(Host)、客户端(Client)和服务器(Server)。主机是发起任务请求的应用,客户端负责通信,而服务器则提供工具和服务。这种设计让开发者可以灵活地部署本地或远程的MCP服务器,形成一个开放但受控的智能体能力网络。
MCP的潜力不仅在于技术本身,还在于其生态的快速发展。目前,全球已有超过5000种MCP工具,覆盖数据处理、内容生成、系统控制等多个领域。这些工具的标准化和开放性,使得开发者可以轻松构建和测试智能体工作流,推动AI从“会说话”迈向“能干活”的新时代。
可以说,MCP正在成为AI领域的“HTTP协议”,推动大型语言模型(LLM)应用的标准化和去中心化。它不仅让AI模型摆脱了“缸中大脑”的孤岛状态,还赋予了它们“感知世界与行动执行”的真实能力。未来,随着MCP生态的进一步发展,人人都能轻松构建智能体的时代即将到来。
小结一下,MCP解决的最大痛点:降低Agent开发中调用外部工具(function calling)的技术门槛。
能调用外部工具,是大模型进化为智能体Agent的关键,如果不能使用外部工具,大模型就只能是个简单的聊天机器人,甚至连查询天气都做不到。由于底层技术限制,大模型本身是无法和外部工具直接通信的,因此Function calling的思路,就是创建一个外部函数(function)作为中介,一边传递大模型的请求,另一边调用外部工具,最终让大模型能够间接的调用外部工具,开展大模型的能力边界。
例如,当我们要查询当前天气时,让大模型调用外部工具的function calling的过程
MCP是AI领域的一场革命,它让大模型与外部工具的连接变得前所未有的简单和高效。想象一下,就像USB-C接口统一了各种设备的连接方式,MCP也正在成为AI的“通用接口”,让AI模型能够轻松地与外部世界互动。
为什么MCP如此重要?
在MCP出现之前,大模型与外部工具的集成就像一场噩梦。开发者需要为每个工具单独编写复杂的代码,还要为每个工具编写JSON Schema说明,甚至设计特定的提示词模板。这不仅工作量巨大,还容易出错。而MCP的出现,彻底改变了这一切。
MCP通过标准化的接口,让大模型(MCP客户端)和外部工具(MCP服务器)能够无缝协作。开发者只需编写一次工具,就可以在多个项目中复用,极大地提高了开发效率(类似理解为像python这种面向对象的变成,函数式编程使得一段代码在复用时的调用更加简洁高效,甚至一行代码就能搞定)。更重要的是,这种标准化还促进了全球开发者社区的协作,大家可以在GitHub上共享已经开发好的MCP服务器,从查询天气、网页爬取到数据分析、机器学习建模,应有尽有。
MCP如何运作?
MCP采用客户端-服务器架构,AI模型作为客户端,与提供特定功能的服务器进行通信。当AI需要访问外部数据或执行操作时,它会向相应的服务器发送请求,服务器处理后返回结果。这种设计不仅让AI模型能够专注于核心推理能力,还能通过外部工具扩展其功能。
例如,一个客服聊天机器人可以通过MCP实时查询订单状态,或者一个AI助手可以通过MCP分析数据库中的数据。这种灵活性和扩展性,让AI从“会说话的机器人”进化为“能干活的助手”。
MCP的未来:AI的“高速公路”
MCP不仅仅是一个技术协议,它更像是AI领域的“高速公路”,让AI模型和工具之间的数据流动更加顺畅。随着MCP生态的不断发展,开发者可以轻松构建和测试智能体工作流,推动AI从“孤岛”迈向“协作网络”的新时代。
想象一下,未来的AI助手不仅能回答问题,还能直接操作你的日程、管理你的邮件、分析你的数据,甚至帮你完成复杂的任务。这一切都得益于MCP的标准化和开放性。它不仅让AI更强大,也让开发者更高效,让每个人都能轻松构建智能体。
MCP社区的服务示例
MCP 协议如同大模型的 “万能插头”,本地大模型安装相应库支持该协议后,几行代码就能轻松接入海量外部工具,极大降低 Agent 开发门槛,让开发者专注创造性任务。它类似 HTTP 协议,旨在提升大模型 Agent 开发效率。Anthropic 为普及 MCP 协议,提供涵盖 Python、TS、Java 等多语言的 MCP 客户端和服务器开发 SDK,助力开发者快速搭建 MCP 服务器,吸引个人与团队参与生态建设。目前,MCP 协议在全球开发者社区掀起协作热潮,开发者可在 GitHub 分享或使用他人的 MCP 服务器,避免重复开发,加速生态繁荣,催生更多智能应用。
Function calling
Function calling 是一种让AI模型调用外部工具或功能的技术,就像给AI配了一个“万能助手”。当AI需要完成某些任务时,比如查询天气、分析数据或生成图表,它可以直接“打电话”给相应的工具,把任务交给工具处理,然后工具会把结果“回传”给AI。这样,AI不仅能回答问题,还能真正“动手”解决问题。
1.外部函数库准备
自定义函数(Step 1):开发者预先定义好需要大模型调用的外部函数,明确函数功能;
添加 Json Schema 表示(Step 2):为每个自定义函数添加 Json Schema,用于描述函数的输入参数、输出格式等结构,使大模型能理解函数规范;
创建 Tool_List 列表(Step 3):将所有函数的 Json Schema 整合到一个工具列表(Tool_List)中,为后续调用提供规范描述。
2.用户发起请求与模型判断
用户通过 send_messages 触发 client.chat.completions.create,传入 model(模型)、messages(对话消息)、tools(工具列表)。
模型判断是否需要调用外部函数:不需要调用:直接输出 assistant message,content 为模型返回的信息,tool_calls 设为 None。
需要调用:输出 assistant message,content 为 None,tool_calls 包含需调用的函数名和参数。
3.外部函数执行
将 user message 与含 tool_calls 的 assistant message 组合,传递给外部函数库:匹配函数(Step 1):根据 tool_calls 中的函数名,找到对应的自定义函数。
传递参数(Step 2):将 tool_calls 提供的参数传入该函数。
执行函数(Step 3):运行函数并获取返回结果。
封装结果(Step 4):将结果封装为 ToolMessage,格式为 {role: tool, name: 函数名, content: 执行结果, tool_call_id: id}。
4.生成最终答案
将封装好的 tool message 追加到原消息中,再次调用 client.chat.completions.create(传入更新后的 messages)。
模型基于外部函数的执行结果,输出 Final Answer,完成整个流程。