旅行规划多代理系统

将Streamlit+LangChain旅行规划器转换为MCP服务器和多代理系统,支持Google ADK和Vertex AI的Gemini 2.5 Flash模型,可本地运行或部署到Cloud Run。

  • by Deathkiller18
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Deathkiller18/trip-planner-mcp

使用说明

旅行规划工具 — MCP 工具 + ADK 多智能体(已适配 Google Cloud)

这个仓库将你的Streamlit+LangChain旅行规划器转换为:

  1. 一 MCP服务器 展示你的旅行工具(get_weather, search_hotels等)。
  2. A. 使用Google ADK的多智能体系统 (根代理+规划子代理)该 消耗 那些MCP工具和调用 Gemini 2.5 闪存版 在Vertex AI上。
  3. 已准备好接入云端在本地运行或部署到 Cloud Run(云运行)。

为什么要这样设置?

  • MCP 标准化您已有的工具,以便任何符合标准的客户端/代理都能调用它们。
  • ADK 它为你提供多智能体协调、会话管理、内存管理以及一个友好的开发者用户界面。
  • Vertex AI 保持认证/身份和访问管理(IAM)的首要地位,并允许您选择模型。

1) 先决条件

  • Python 3.10及以上版本
  • 一个包含(某内容/功能)的Google Cloud项目 Vertex AI API 已启用并计费。(给自己分配 Vertex AI 用户。)
    请参阅ADK快速入门指南了解角色与设置
  • 安装 gcloud 并运行:
    gcloud auth application-default login
    

2) 安装

python -m venv .venv && source .venv/bin/activate    # Windows: .venv\Scripts\Activate.ps1
pip install -r requirements.txt
cp .env.example .env
# set GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION, GCP_STAGING_BUCKET in .env

ADK可以直接使用Vertex AI与(某服务/功能/平台等,此处根据上下文可能需要补充具体内容) google-adk查看谷歌的文档了解环境变量的相关信息。引用转到视图1(注:这里的“citeturn1view0”可能是某种特定格式或标记,直接翻译为“引用 转到视图1”可能不完全准确,具体含义需结合上下文或特定平台来理解,此处保留原标记形式以供参考。)

3) 运行MCP服务器(您的工具)

MCP服务器通过(某种方式)暴露工具 stdio(在中文语境下,通常不直接翻译,仍保留为“stdio”,但其含义是“标准输入输出库”或“标准输入输出头文件”,用于C语言等编程语言中,表示处理标准输入输出的库或函数集合) (默认)并且也可以运行一个 HTTP/SSE(服务器发送事件) 桥接(FastAPI)。

stdio(推荐用于本地开发):

python -m src.mcp_server

HTTP/SSE 模式(可选):

uvicorn src.mcp_server:http_app --host 0.0.0.0 --port 8081

了解更多关于构建MCP服务器和传输的信息

4) 运行ADK多智能体应用程序

python -m src.adk_agent.agent

这启动了一个ADK开发服务器和一个挂载了(某个内容/服务的)根代理 MCPToolset 发现并调用MCP工具。参见 ADK + MCP 翻译为中文是:“ADK 加 MCP” 或者更自然的表达可能是“ADK 与 MCP”(如果强调两者并列或共同作用)。不过,具体翻译可能还需根据上下文来确定最准确的表述 文档。引用(cite)转0搜索1转0搜索4结束

里面是什么?

  • 根代理处理高级旅行请求;委托给
    • **计划制定者(或规划代理)**调用Vertex上的Gemini来生成行程,并通过MCP调用工具。
  • 用途 MODEL_NAME 来自 .env (默认 gemini-2.5-flash)。

5) 部署到 Cloud Run(两个服务均部署)

我们提供两个Dockerfile(每个服务一个)。构建与部署:

# MCP server
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/trip-mcp:latest --project $GOOGLE_CLOUD_PROJECT
gcloud run deploy trip-mcp --image gcr.io/$GOOGLE_CLOUD_PROJECT/trip-mcp:latest --region=$GOOGLE_CLOUD_LOCATION --allow-unauthenticated

# ADK app
gcloud builds submit --tag gcr.io/$GOOGLE_CLOUD_PROJECT/trip-adk:latest --project $GOOGLE_CLOUD_PROJECT
gcloud run deploy trip-adk --image gcr.io/$GOOGLE_CLOUD_PROJECT/trip-adk:latest --region=$GOOGLE_CLOUD_LOCATION --allow-unauthenticated

然后设置ADK应用程序的 MCP_SERVER_URL 环境变量设置为 trip-mcp 可以翻译为“行程-MCP(多点约束问题/多点控制问题,具体含义需根据上下文确定)”。不过,通常“MCP”在不同领域有不同含义,比如在计算机科学中可能指“多点控制单元”,在其他领域可能有其他解释。在这里,由于没有具体上下文,我给出了一个较为通用的翻译。如果“MCP”在特定语境中有特定含义,请根据实际情况调整翻译 如果您使用HTTP/SSE模式,请提供URL。

ADK快速入门 + MCP工具指南:引用转至1视图0转至0搜索1

6) 安全注意事项

仅连接到可信任的MCP服务器。最近一起事件显示,一个恶意MCP服务器正在窃取电子邮件——如有疑问,请检查权限并轮换密钥


文件映射

.
├─ src/
│  ├─ tools/
│  │  ├─ travel_tools.py        # your tool implementations
│  ├─ mcp_server.py             # MCP server wrapping the tools
│  └─ adk_agent/
│     ├─ agent.py               # ADK multi‑agent (root + planner) using MCPToolset
│     └─ __init__.py
├─ Dockerfile.mcp               # container for MCP server
├─ Dockerfile.adk               # container for ADK app
├─ requirements.txt
├─ .env.example
└─ README.md

“Credits & Docs” 翻译成中文是“致谢与文档”

  • MCP Python SDK及服务器模式
  • ADK 快速入门 + MCP 集成。引用转到1视图0转到0搜索1转到0搜索4
  • ADK概述与多智能体模式