
超简单使用A2A和MCP开发DeepSearch和AgentRAG(含源码)
在构建智能代理系统时,如何高效地集成上下文信息并实现代理之间的协同?本文将围绕 A2A (Agent2Agent) 协议和 MCP (Model Context Protocol),带你快速上手 DeepSearch 和 AgentRAG 示例,并讲解如何自定义开发基于 A2A 和 MCP 的工具。
引言
在构建智能代理系统时,如何高效地集成上下文信息并实现代理之间的协同?本文将围绕 A2A (Agent2Agent) 协议和 MCP (Model Context Protocol),带你快速上手 DeepSearch 和 AgentRAG 示例,并讲解如何自定义开发基于 A2A 和 MCP 的工具。
一、核心概念
1. 什么是 MCP?
Model Context Protocol (MCP) 是一个开放协议,旨在标准化应用程序向大型语言模型(LLM)提供上下文的方式。它类似于 AI 应用中的 USB-C 接口,为不同数据源和工具接入 LLM 提供统一标准。主要特点:
- 标准化上下文提供:结构化定义如何将文件、数据库、API 等数据源和工具以统一格式接入模型。
- 灵活架构:采用客户端-主机-服务器模式,支持多实例并发,适用单/多代理场景。
- 安全隔离:在不同安全域内按需开放工具能力,防止数据泄露。
MCP 让 AI 应用更易扩展、更安全、更可维护。
2. 什么是 A2A?
Agent2Agent (A2A) 是 Google 提出的代理互操作协议,支持不同 AI 代理之间的多模态通信、能力发现与安全隔离。核心特性:
- 多模态通信:支持文本、结构化表格、文件、图片等多种数据形式。
- 能力发现与协商:通过 Agent Card(JSON 格式)发布和查询代理能力。
- 安全隔离:代理无需共享内部逻辑,只需开放交互接口。
A2A 适合构建复杂的多代理系统,实现跨平台、跨厂商协同。
3. 优缺点分析
特性 | 优点 | 缺点 |
---|---|---|
灵活性 | 相比固定工作流(如 Dify、Coze),A2A+MCP 更加灵活,可随需扩展工具。 | 对普通用户而言,自定义 MCP 和 Agent 实现门槛较高。 |
多模态 | 支持文本、表格、图片等多种数据形式交互。 | 当代理数据量巨大,工作流会变复杂,可能需要强化学习或微调。 |
安全性 | 代理间安全隔离,不暴露内部实现,保障 IP 和隐私。 | 需额外配置安全策略,增加运维成本。 |
二、快速上手示例
下面以项目中提供的 DeepSearch 和 AgentRAG 两个示例为基础,演示如何使用 A2A + MCP 搭建单/多代理系统。
1. 准备工作
- 克隆示例仓库:
git clone https://github.com/johnson7788/A2AServer.git
- 安装依赖库:
cd A2AServer/backend/A2AServer && pip install .
2. 单代理:AgentRAG
- 启动 AgentRAG 服务:
cd backend/AgentRAGpython main.py --port 10005
\2. 在 mcp_config.json
中,你已看到集成了多个 MCP 工具:
{ "mcpServers": { "RAGTool": { "command": "uv", "args": [ "run", "--with", "fastmcp", "fastmcp", "run", "mcpserver/rag_tool.py" ] } } }}
\3. 启动前端:
cd frontend/single_agent npm run dev
\4. 打开浏览器,输入 http://localhost:5173
(默认端口,请查看你启动的端口),添加 Agent 地址 http://localhost:10005
,开始问答。
### 3. 多代理:DeepSearch + AgentRAG
- 启动 DeepSearch 服务:
cd backend/DeepSearchpython main.py --port 10004
\2. 启动 AgentRAG 服务(同上)。
cd backend/AgentRAGpython main.py --port 10005
\3. 启动 HostAgent 协调器:
cd backend/hostAgentAPI pip install -r requirements.txt python api.py
\4. 启动多代理前端:
cd frontend/multiagent_frontnpm run dev
\5. 在浏览器中打开前端,添加两个代理地址,输入问题即可体验代理协作流程。
\6. 多Agent的调用流程图。
多Agent UI:
- 主页(方便学习和管理Agent,可以查看Agent的交互流程)
2.添加Agent
添加Agent完成的效果
在这里插入图片描述
添加Agent时的效果
\3. 对话,对话时自动委派Agent到对应功能的agent上
问题和Agent的委派流程
\4. 最终的答案效果(中间过程可以隐藏,也可以流式的输出)
三、自定义开发 A2A + MCP 工具
如果你需要在现有框架下创建新的代理或工具,下面是完整指南:
1. 复制模板目录
cp -r backend/DeepSearch backend/MyCustomAgent
目录结构:
MyCustomAgent├── .env # 存储模型 API Key├── main.py # A2A 服务器启动脚本├── mcp_config.json # MCP 工具配置├── mcpserver/ # 自定义 MCP 工具目录│ └── my_tool.py # 自定义脚本└── prompt.txt # Agent 提示文件
如何创建新的 Agent, A2AServer
本教程将指导你如何在现有 AgentRAG 系统中创建一个新的智能 Agent,包括 prompt 编写、MCP 配置和 A2A Server 启动步骤。
第一步:创建1个项目的目录AgentRAG
mkdir AgentRAG
✏️ 第二步:定义 Agent 的 Prompt
编辑或创建 prompt.txt 文件,内容描述 Agent 的角色与工作流程
你是一名擅长复杂问题解答的智能助手。你可以调用检索工具来获取参考内容,并基于检索到的高质量信息回答用户的问题。请遵循以下步骤完成任务:理解用户提出的问题,并根据需要进行分解或重构;使用检索工具查找相关资料,可以进行多次检索,直到找到充分且相关的参考内容;结合检索结果,用自己的语言给出准确、清晰、可靠的答案;如找不到明确答案,也应诚实说明并给出你的分析或建议。
第三步: 创建 mcpserver 目录(如果需要自定义MCP工具,你也可以使用其它已有的MCP工具)
mkdir -p mcpservertouch mcpserver/rag_tool.py
第四步:定义 MCP 工具
# @Desc : eg: RAG检索工具import timefrom fastmcp import FastMCPmcp = FastMCP("RAG检索工具")@mcp.tool()def RAGsearch(query: str) -> str: """ 根据关键词对企业知识库进行搜索 :param query: 搜索的词语和句子 :return: """ # 模拟搜索结果, 真实开发,需要替换成自己的向量检索结果 rag_result = """LNG 是 液化天然气 (Liquefied Natural Gas) 的英文缩写。简单来说,它就是经过冷却至零下约 162 摄氏度 (-260 华氏度) 的液态天然气。你可以把它想象成把气体“浓缩”成液体,这样做有几个重要的好处:体积大大缩小: 液化后的天然气体积只有气态时的约 1/600,这使得储存和运输更加高效和经济。便于长距离运输: 由于体积小,LNG 可以通过专门的 LNG 运输船跨洋运输到没有天然气管道连接的地方。更纯净: 在液化过程中,天然气中的杂质,如二氧化碳、硫化物和水等会被去除,使得 LNG 燃烧时更加清洁,减少污染物排放。""" return rag_resultif __name__ == '__main__': result = RAGsearch(query="LNG") print(result)
第五步, 配置 MCP 工具
测试下工具,然后在配置到 mcp_config.json 中,测试命令: uv run --with fastmcp fastmcp run mcpserver/rag_tool.py 在 mcp_config.json 中,确保工具名称使用 驼峰命名:
{ "mcpServers": { "RAGTool": { "command": "uv", "args": [ "run", "--with", "fastmcp", "fastmcp", "run", "mcpserver/rag_tool.py" ] } }}
第六步:配置你的LLM,创建.env文件
#如果使用deepseek模型,python main.py --provider deepseek --model deepseek-chatDEEPSEEK_API_KEY=sk-xxxx#如果使用openai模型, python main.py --provider openai --model gpt-4oOPENAI_API_KEY=xxx
最后,启动你的Agent
python main.py --port 10006
在前端中使用
- 在单/多代理前端中,添加地址
http://localhost:10006
,即可访问新代理。
结语
本文介绍了使用 A2A 和 MCP 快速构建 DeepSearch、AgentRAG 示例,以及如何自定义开发新的工具。希望能帮助你在 AI 代理开发上事半功倍,欢迎在评论区交流与讨论!
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
更多推荐
所有评论(0)