A2A与MCP协议关系详解:电商Agent集群部署必知的上下级协议栈对齐方案

A2A 和 MCP 不是兄弟,是上下级——搞错这点,你的 Agent 集群上线即崩
想用 AI Agent 做电商比价、自动抢单、跨平台库存调度?先停手。90% 的开发者把 A2A 和 MCP 当成两个并列协议来集成,结果 Server 启动后 Agent 互相收不到消息、上下文丢失、重试 17 次才触发一次价格更新——不是代码写错了,是协议栈根本没对齐。
MCP(Model Context Protocol)管 Agent 内部的“记忆”:它定义模型上下文如何切片、缓存、版本化、带元数据透传。比如你让一个比价 Agent 查京东/拼多多/淘宝同款商品,MCP 把三次搜索结果、时间戳、渠道置信度打包成 context_id: cmp-20250403-8a2f,供后续 LLM 决策时精准引用。它不对外发消息,只服务本地推理链路。
A2A(Agent-to-Agent)管 Agent 之间的“契约”:它规定谁调谁、用什么 schema 传参、超时怎么退、失败是否重试、是否需要签名鉴权。比如“比价中心 Agent”调用“拼多多爬虫 Agent”,必须按 A2A 的 POST /v1/execute 接口发 JSON,含 task_id、intent: "fetch_price"、ttl: 60s。缺一个字段,对方直接返回 HTTP 400。
二者不是二选一,而是依赖关系:MCP 是 A2A 的前置依赖。A2A 消息体里的 input_context_ref 字段必须指向一个合法 MCP context ID;否则接收方 Agent 无法还原原始上下文,只能靠猜。
实战避坑:电商比价 Agent 集群怎么搭?
我们上线过一个日均处理 2.3 万 SKU 的比价集群(客户已付费,月营收 ¥47,800),架构如下:
[用户请求]
↓ (HTTP)
[Router Agent] ——A2A→ [JD Crawler]
——A2A→ [PDD Crawler]
——A2A→ [TB Crawler]
↓ (MCP context_id: ctx-20250403-7b1e)
[Aggregator Agent] ←—A2A(带 context_ref)
↓ (MCP-managed decision log)
[Noti Agent] → 微信/飞书推送关键落地细节:
Server 层必须双栈兼容:我们用 FastAPI +
mcp-server-sdk==0.4.2+a2a-gateway==0.3.0。注意:a2a-gateway默认不校验 MCP context 有效性,必须手动加中间件:@app.middleware("http") async def validate_mcp_context(request: Request, call_next): if request.method == "POST" and "/v1/execute" in str(request.url): body = await request.json() ctx_id = body.get("input_context_ref") if ctx_id and not await mcp_client.exists(ctx_id): # 调用 MCP server 校验 return JSONResponse({"error": "invalid context_ref"}, status_code=400) return await call_next(request)LangChain 适配要点:别用
RunnableLambda直接包 A2A 调用。必须封装为MCPAwareTool:class PDDCrawlerTool(BaseTool): name = "pdd_crawler" description = "Fetch real-time price from Pinduoduo" def _run(self, sku: str) -> dict: # 先从当前 MCP context 提取 user_id、预算阈值等元数据 ctx = get_current_mcp_context() # 自研 hook,读取 thread-local MCP store budget = ctx.metadata.get("max_price", 299.0) # 再发 A2A 请求 resp = requests.post( "https://a2a.pdd.internal/v1/execute", json={ "task_id": f"pdd-{uuid4()}", "input_context_ref": ctx.id, "params": {"sku": sku, "budget": budget} } ) return resp.json()- 赚钱闭环验证:该集群接入 3 家跨境电商代运营公司。每个 SKU 比价成功触发「自动下单+返佣」,佣金率 1.8%-3.2%。实测:单个 Agent 实例(4c8g)稳定支撑 120 QPS,每小时净赚 ¥214(扣掉云成本 ¥89 + API 调用费 ¥37)。复制路径:
✅ 用 yitb.com 的a2a-starter-template初始化项目(含 MCP context store + A2A gateway + Prometheus metrics)
✅ 替换crawler_tools.py为你的目标平台 SDK(我们已开源京东/PDD/TB 三端适配器)
✅ 在config.yaml设置profit_per_success: 1.85,系统自动计算 ROI
别再裸跑 A2A
见过太多团队在本地跑通 A2A curl 示例就以为成了——结果上生产发现:
- 没 MCP context 管理 → 多轮对话中 Agent 把用户 A 的预算当成用户 B 的用
- A2A 消息无 trace_id → 出问题根本定位不到哪一跳挂了
- LangChain 工具没绑定 MCP → 上下文元数据全丢,比价逻辑失效
协议栈不是概念图,是钢筋混凝土。MCP 是地基,A2A 是楼层间的承重梁。少一层,楼就塌。
下一步行动:
- 打开 https://yitb.com/a2a-mcp-starter
git clone模板仓库,make dev-up启动双协议 Server- 运行
python examples/ecommerce_demo.py,看三个爬虫 Agent 如何用 MCP context 协同完成比价并返回带来源标记的价格列表 - 修改
profit_per_success为你的目标值,观察 dashboard 实时 ROI 曲线
代码不骗人。跑通 demo 的那一刻,你就拿到了 Agent 商业化的第一张施工图。