分布式代理编排系统

一个基于Agent-to-Agent (A2A)和Model Context Protocol (MCP)标准的分布式代理编排系统,支持动态路由、数据驱动代理和实时观察。

  • by InfantEdward
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 InfantEdward/mcp-a2a-demo

使用说明

代理流程:MCP+A2A演示

一个分布式代理编排系统,展示了 代理人对代理人(A2A) 和 模型上下文协议(MCP) 使用LangChain的标准。

建筑

  • 动态路由器:使用LLM根据代理卡路由请求。
  • 数据驱动代理:在中通过JSON定义代理 /agents 及其MCP工具 /implementations.
  • 人力支持的新闻代理:一个可发现的A2A新闻专家,在UI收件箱面板中暂停等待回复。
  • 可观测性:用于原始JSON-RPC协议流量的实时事件检查器。

快速开始

  1. 创建一个 .env 与您的文件 GEMINI_API_KEY.
  2. (可选)设置 DEFAULT_MODEL (默认为 gemini-3-flash-preview).
  3. 使用Docker Compose或纯Python启动堆栈。

选项A:Docker编写

docker compose up --build

打开 http://localhost:8000 开始。

选项B:Python(无Docker)

安装依赖项:

uv sync

从repo根目录在3个终端中运行:

终端1(编排器+UI):

uv run uvicorn backend.main:app --host 127.0.0.1 --port 8000

此过程还服务于嵌入式 NewsSpecialist 代理人在 /api/news-agent 以及侧边栏UI中的人工响应收件箱。

2号航站楼(数学专家):

uv run python -m backend.agent_server --agent math_specialist --port 8001

3号航站楼(气象专家):

uv run python -m backend.agent_server --agent weather_specialist --port 8002

动态代理

  • 代理卡(/agents):公共A2A元数据(身份、技能)。
  • 工具侧车(/implementations):专用MCP配置(服务器路径)。

运行时发现使用每个代理的已知卡端点:

  • 编排者: /.well-known/agent-card.json
  • 数学专家: http://127.0.0.1:8001/.well-known/agent-card.json
  • 气象专家: http://127.0.0.1:8002/.well-known/agent-card.json
  • 新闻专家: http://127.0.0.1:8000/api/news-agent/.well-known/agent-card.json