Token导航 LogoToken导航TokenDH.com
Multi Agent Cs A2a MCP logo
AI代理stdio官方级别未说明来源级核验

Multi Agent Cs A2a MCP

MCP Server

一个可复用的多代理客户服务系统,通过路由代理、数据代理和支持代理协同工作,实现客户请求的高效处理和自动化响应。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
AI代理PythonLangGraph

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

bastetlu299

提供方

bastetlu299

最后核验

2026/5/17 20:23

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv .venv

详细介绍

多代理客户服务平台(MCP+A2A)

一个生产风格、可复制的参考项目,演示如何构建一个 多代理客户服务系统 与:

  • MCP JSON-RPC服务器 公开数据库工具(tools/list, tools/call)
  • 三个独立的A2A代理商 (路由器、数据、支持) /card/a2a/call
  • 端到端测试 涵盖五种任务场景
  • LangGraph演示 基于顺序和路由器的多代理模式
  • MCP检查员 说明和屏幕截图

______________________________________________________________________

为什么这个项目

此存储库旨在 招聘人员友好 并且易于评估。它提供:

  • A. 清晰的架构 用于代理编排和工具调用
  • 可读、可运行 Python服务和测试套件
  • 重复的结果 使用一个命令启动和确定性夹具

目的及其工作原理

此项目的存在是为了显示 为什么多代理客户支持很重要如何构建它 端到端。它作为一个具体的、可运行的示例,将客户请求路由到合适的专业代理,调用工具获取或更新数据,并返回反映真实帮助台工作流程的统一答案。

从a 业务 从角度来看,它展示了更快的分辨率(更好的路由和更少的切换)、一致的答案(共享工具和数据)和更低的运营成本(日常查找和工单创建的自动化)。来自A 人工智能 从角度来看,它展示了模型如何规划、选择正确的工具,并在责任明确的代理之间进行协作,而不会混淆问题或失去可追溯性。

从高层次上讲,该系统的工作原理如下:

  1. 路由器代理 接收传入的任务,并决定由哪个代理处理它。
  2. 数据代理 调用MCP服务器的工具(JSON-RPC)来读取或更新客户数据。
  3. 支持代理 使用这些结果起草响应或创建工单。
  4. MCP服务器 提供了一个稳定的工具API,并位于代理和数据库之间。

目的是证明 编排、工具使用和可重复测试 在单个仓库中,您可以快速评估架构、重用模式或扩展系统以用于真实的客户服务用例。

______________________________________________________________________

项目结构

mcp-project/
├─ mcp_server.py                 # MCP JSON-RPC server (tools/list, tools/call, /healthz)
├─ database_setup.py             # Creates and seeds SQLite DB (support.db)
├─ agents/
│  ├─ router_agent.py            # /card, /a2a/call (port 9201)
│  ├─ data_agent.py              # /card, /a2a/call (port 9102) - calls MCP tools
│  └─ support_agent.py           # /card, /a2a/call (port 9103)
├─ demos/
│  ├─ sequential_demo.py         # LangGraph sequential pattern demo
│  └─ router_demo.py             # LangGraph router pattern demo
├─ tests/
│  └─ run_tests.py               # Runs 5 assignment scenarios and prints logs/results
├─ result/
├─ requirements.txt
└─ README.md

______________________________________________________________________

需求

  • Python 3.10+
  • macOS/Linux/Windows(Windows上建议使用WSL)
  • (可选) MCP检查员 (需要Node.js): npx @modelcontextprotocol/inspector

______________________________________________________________________

快速开始

1) 创建并激活虚拟环境

python3 -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate
python -m pip install --upgrade pip
pip install -r requirements.txt

2) 初始化数据库

python database_setup.py
# This creates/overwrites support.db with seed customers + tickets

3) 启动所有服务(推荐)

bash run_all.sh

它启动:

  • MCP服务器已打开http://127.0.0.1:9010
  • 数据代理打开http://127.0.0.1:9102
  • 支持代理已打开http://127.0.0.1:9103
  • 路由器代理已打开http://127.0.0.1:9201

更喜欢单独的终端?从以下内容开始:

uvicorn mcp_server:app --host 0.0.0.0 --port 9010
uvicorn agents.data_agent:app --host 0.0.0.0 --port 9102
uvicorn agents.support_agent:app --host 0.0.0.0 --port 9103
uvicorn agents.router_agent:app --host 0.0.0.0 --port 9201

______________________________________________________________________

健全性检查

MCP健康状况

curl -s http://127.0.0.1:9010/healthz
# {"ok": true}

MCP工具/列表(JSON-RPC)

curl -s -X POST http://127.0.0.1:9010/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":"x","method":"tools/list"}' | jq .

您应该看到带有以下内容的工具条目 inputSchema 用于: get_customer, list_customers, update_customer, get_customer_history, create_ticket.

MCP工具/调用示例

curl -s -X POST http://127.0.0.1:9010/mcp \
  -H 'Content-Type: application/json' \
  -d '{
        "jsonrpc":"2.0",
        "id":"call1",
        "method":"tools/call",
        "params":{
          "tool":"get_customer",
          "arguments":{"customer_id":5}
        }
      }' | jq .

A2A代理检查

每个代理暴露:

  • GET /card → 代理卡(id、姓名、功能)
  • POST /a2a/call → 类似JSON RPC的调用

有效载荷示例:

{ "tool": "", "arguments": { ... } }

数据代理

curl -s http://127.0.0.1:9102/card | jq .
curl -s -X POST http://127.0.0.1:9102/a2a/call \
  -H 'Content-Type: application/json' \
  -d '{"tool":"get_customer","arguments":{"customer_id":5}}' | jq .

支持代理

curl -s http://127.0.0.1:9103/card | jq .
curl -s -X POST http://127.0.0.1:9103/a2a/call \
  -H 'Content-Type: application/json' \
  -d '{"tool":"create_ticket","arguments":{"customer_id":1,"issue":"cannot login","priority":"high"}}' | jq .

路由器代理

curl -s http://127.0.0.1:9201/card | jq .
curl -s -X POST http://127.0.0.1:9201/a2a/call \
  -H 'Content-Type: application/json' \
  -d '{"task":"route","text":"create ticket for customer 1: cannot pay",
       "args":{"customer_id":1,"issue":"cannot pay","priority":"high"}}' | jq .

______________________________________________________________________

MCP检查员(独立客户)

保持MCP服务器在上运行 :9010,然后在新终端中:

npx @modelcontextprotocol/inspector

在检查器UI中:

  • 运输: 可流式传输的HTTP
  • 网址: http://127.0.0.1:9010/mcp

点击 连接→ 初始化那么 工具 查看列表。尝试 tools/call 与:

{
  "tool": "get_customer",
  "arguments": { "customer_id": 5 }
}

将截图保存到 docs/:

  • docs/inspector-tools-list.png
  • docs/inspector-tools-call.png

______________________________________________________________________

运行端到端测试(5个场景)

python tests/run_tests.py

预期:五个区块(简单、协调、复杂、升级、多意图),包括路线、日志和最终答案。

______________________________________________________________________

LangGraph演示(可选)

顺序模式:

python demos/sequential_demo.py

路由器模式:

python demos/router_demo.py

两个演示都需要 OPENAI_API_KEY 如果他们打电话给LLM。如果您不想调用外部模型,可以使用模拟工具逻辑运行它们。

______________________________________________________________________

故障排除

端口已在使用中

lsof -i :9010
kill -9 

MCP检查员“422不可处理实体”

  • 确保JSON-RPC包括 "jsonrpc":"2.0",一根绳子 id,以及正确的 method.
  • tools/list 必须返回 inputSchema 每一个工具。

读取超时/连接被拒绝

  • 首先启动MCP,然后是数据、支持,然后是路由器。
  • 确认 /healthz 回报 {"ok":true}.

DB在测试时变得混乱

rm -f support.db
python database_setup.py

______________________________________________________________________

环境和版本

requirements.txt。如果更改版本,请确保项目仍然通过:

  • tools/list 显示 inputSchema
  • tools/call 适用于所有工具
  • /card/a2a/call 在所有代理上工作
  • tests/run_tests.py 打印五个传球场景

______________________________________________________________________

建议简历/作品集标题

多代理客户服务平台(MCP+A2A+LangGraph)

目录标签

目录标签

AI代理PythonLangGraph多代理系统本地部署客户服务自动化路由JSON-RPC

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP