协议性能比较工具

该项目通过Python脚本和轻量级Flask服务器,比较Agent-to-Agent(A2A)和Model Context Protocol(MCP)两种协调策略在延迟、成功率和消息复杂度方面的性能。

  • by akashkr-971
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 akashkr-971/MCP-vs-A2A-Comparison

使用说明

代理到代理(A2A)与模型上下文协议(MCP)

该项目对两种协调策略进行了基准测试-- 代理人对代理人(A2A) 通信vs 模型上下文协议(MCP) 基于工具的执行——使用共享的数值数组数据集。每个协议处理相同的输入,并在生成摘要响应之前计算统计数据(最小值、最大值、平均值、计数)。

实验运行 完全手动 使用Python脚本和轻量级Flask服务器。不需要框架或编排系统。


📁 项目结构

.
├── a2a_experiment.py
├── a2a_worker_agent.py
├── a2a_results.json
│
├── mcp_experiment.py
├── mcp_tool_server.py
├── mcp_results.json
│
├── dataset_generator.py
├── common_dataset.json
│
└── README.md

🎯 实验目标

目的是评估 延迟, 成功率,以及 消息复杂度 之间:

✅ A2A协议

协调器代理直接向工作代理发送任务。 每个请求两次消息交换。

✅ MCP协议

单个编排器按顺序调用两个工具:

  1. analyze_data
  2. generate_summary

这两种协议都使用相同的数据集和相同的逻辑来计算统计数据和摘要。


📌 1.数据集生成

在运行任何实验之前,生成共享数据集:

python dataset_generator.py

这创造了 common_dataset.json,其中包含两个实验使用的30个随机数字数组。

参考: 数据集生成器脚本


📌 2.运行A2A实验

步骤1——启动Worker Agent(Agent B)

python a2a_worker_agent.py

这将在以下位置启动Flask服务器:

http://127.0.0.1:5002/process_task

worker计算统计数据并为每个请求生成摘要。 参考: 工人实施


步骤2——运行A2A实验脚本

python a2a_experiment.py

协调员:

  • 负载 common_dataset.json
  • 将每个数字数组作为任务发送给worker
  • 接收摘要
  • 记录成功、延迟和消息计数

结果保存到:

a2a_results.json

参考: A2A实验协调员 参考: A2A结果样本


📌 3.运行MCP实验

步骤1--启动MCP工具服务器

python mcp_tool_server.py

这暴露了两个工具:

/analyze_data
/generate_summary

每个工具都是一个单独的端点。 参考: MCP工具服务器


步骤2——运行MCP实验脚本

python mcp_experiment.py

脚本:

  • 加载相同的数据集
  • 依次调用MCP工具
  • 记录请求指标
  • 将结果保存到:
mcp_results.json

参考: MCP实验协调员 参考: MCP结果样本


📊 输出文件

1.A2A结果-- a2a_results.json

每个条目记录:

  • 请求索引
  • 持续时间(ms)
  • 成功/失败
  • 消息计数(始终为2)
  • 如有错误

2.MCP结果-- mcp_results.json

结构相同,但包括两个工具调用的延迟。


📌 需求

  • Python 3.10+
  • 烧瓶
  • 请求库

安装依赖项(如果需要):

pip install flask requests

🚀 一起运行一切

  1. 生成数据集

    python dataset_generator.py
    
  2. 启动MCP服务器

    python mcp_tool_server.py
    
  3. 启动A2A工人

    python a2a_worker_agent.py
    
  4. 运行两个实验

    python mcp_experiment.py
    python a2a_experiment.py