客户支持多代理系统

一个集成了Google ADK A2A、MCP HTTP服务器、SQLite数据库和Gemini模型的多代理客户支持系统,适用于学术、多代理工作流演示和客户服务自动化原型设计。

  • by TommyWangZL
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 TommyWangZL/MCP_A2A

使用说明

📦 客户支持多代理系统(A2A+MCP+SQLite)

此存储库包含一个功能齐全的 多代理客户支持系统 它集成了:

  • 谷歌ADK A2A(代理对代理) 编排
  • MCP(模型上下文协议)HTTP服务器
  • SQLite数据库 使用教授的官方文件初始化 database_setup.py
  • 双子座2.5 Pro/双子座1.5闪光灯 模型
  • Uvicorn微服务 对于三个AI代理

该系统展示了完整的端到端 代理工作流,将数据库支持的MCP工具与多代理LLM协作相结合。


1.🔧 系统概述

该应用程序运行三个协作的AI代理:

1.客户数据代理

过程 仅 MCP返回的JSON。

  • 总结客户资料
  • 提取相关属性
  • 整理门票历史记录
  • 从不直接查询数据库

2.支持代理

处理真实的客户支持行动:

  • 账单问题
  • 退款
  • 取消
  • 升级
  • 升级,逐步升级,增加

使用转换后的客户数据+用户查询。

3.路由器/编排器代理

整个工作流程的“大脑”。

  • 分析用户查询
  • 决定调用哪些MCP工具
  • 通过以下方式获取真实数据 tools/call
  • 客户数据代表+支持代理
  • 综合最终答案

🎯 这个项目展示了什么

  • 端到端MCP→ A2A → LLM管道
  • 真实数据库访问 通过MCP流式HTTP协议
  • 职责明确分离 跨代理
  • 模块化、受生产启发的代理系统设计
  • 完整的客户支持模拟 使用现代代理框架

此存储库非常适合:

  • 学术论文(ADK+MCP课程)
  • 多代理工作流演示
  • 客户服务自动化原型
  • 基于真实工具的代理编排研究

2.📊 存储库结构和文件关系

下面是这个仓库中的主要文件如何相互连接的高级图表。

flowchart TD
    subgraph MCP_Server["MCP Server Layer"]
        DBSetup["database_setup.py"]
        MCPServer["mcp_server.py"]
        SQLiteDB["support.db"]
    end
    
    subgraph Agents["A2A Agents Layer"]
        CustomerDataAgent["customer_data_agent.py"]
        SupportAgent["support_agent.py"]
        RouterAgent["router_agent.py"]
    end
    
    subgraph Infra["Infrastructure / Runtime"]
        Config["config.py"]
        RunAgents["run_agents.py"]
        MCPClient["mcp_client.py"]
    end
    
    subgraph Demo["Demo / Notebook"]
        DemoScript["demo_scenarios.py"]
        Notebook["notebook.ipynb optional"]
    end
    
    DBSetup --> SQLiteDB
    SQLiteDB --> MCPServer
    
    MCPServer --> MCPClient
    MCPClient --> RouterAgent
    
    Config --> CustomerDataAgent
    Config --> SupportAgent
    Config --> RouterAgent
    RouterAgent --> CustomerDataAgent
    RouterAgent --> SupportAgent
    
    RunAgents --> CustomerDataAgent
    RunAgents --> SupportAgent
    RunAgents --> RouterAgent
    RunAgents --> MCPServer
    
    DemoScript --> MCPClient
    DemoScript --> RouterAgent
    DemoScript --> SQLiteDB
    Notebook --> DemoScript
    Notebook --> MCPClient

3.🚀 端到端设置和使用指南

本节将引导您完成 如何运行整个多代理+MCP管道 从头开始,使用这个存储库。
仔细遵循这些步骤,你会得到一个完全正常的工作 MCP支持的多代理客户服务系统.


✅ 步骤1--克隆存储库

git clone https://github.com/TommyWangZL/MCP_A2A.git
cd customer-service-mcp

✅ 步骤2——安装所有依赖项

使用以下方式安装所有必需的软件包:

pip install -r requirements.txt

这将安装:

  • google-genai
  • google-adk
  • a2a-sdk
  • mcp[cli]
  • uvicorn, httpx, aiohttp, nest_asyncio
  • 以及所有其他必需的包

✅ 步骤3——设置环境变量

在运行任何操作之前,请先配置环境变量。

通过复制以下内容创建环境配置:

cp .env.example .env

然后编辑 .env 文件并填写您的值:

GOOGLE_API_KEY=YOUR_API_KEY_HERE
GOOGLE_CLOUD_PROJECT=gen-lang-client-0201328881
GOOGLE_CLOUD_LOCATION=us-central1

⚠️ 您的API密钥从未存储在存储库中。它只存在于您的本地 .env 文件。


✅ 步骤4——初始化SQLite数据库

你的教授需要跑步 database_setup.py 第一。

运行:

python database_setup.py

然后运行数据库引导程序,插入高级客户和示例票:

python -c "from mcp_server import init_db_with_professor_script; init_db_with_professor_script()"

这将创建SQLite数据库文件:

support.db

数据库包括:

  • 客户
  • 票
  • 触发器
  • 样本数据
  • 高级客户样本(ID 12345)

✅ 步骤5--启动MCP服务器

此服务器公开了实际的数据库工具(get_customer, create_ticket等等)使用MCP流式HTTP协议。

启动服务器:

python mcp_server.py

它可在以下网址获得:

http://127.0.0.1:8000/mcp

保持此终端窗口打开。


✅ 步骤6--启动A2A多代理服务器

打开一个新的终端窗口并运行:

python run_agents.py

这将启动三个代理:

  • 客户数据代理 --端口11020
  • 客服专员 --端口11021
  • 路由器代理 --端口11022

这些代理保持活动状态,并监听传入的请求。


✅ 步骤7——运行端到端场景(MCP+A2A)

打开第三个终端窗口并运行:

python demo_scenarios.py

此脚本:

  • 向路由器代理发送测试查询
  • 路由器呼叫客户数据代理
  • 客户数据代理使用MCP服务器进行数据库查找
  • 支持代理生成最终的客户服务响应

要运行特定场景,请执行以下操作:

python demo_scenarios.py 0  # Simple: get customer information for ID 5
python demo_scenarios.py 1  # Coordinated: upgrade workflow
python demo_scenarios.py 3  # Escalation: double charges and refund
python demo_scenarios.py 7  # Multi-step premium customer support

🎉 成功!

您现在拥有一个功能齐全的多代理客户服务系统,该系统由以下组件提供支持:

  • 双子座2.5 Pro
  • 谷歌ADK
  • A2A多代理编排
  • MCP流式HTTP工具
  • 一个真正的SQLite数据库(教授批准)