多模型天气查询代理

一个基于Model Context Protocol (MCP)和Strands Agents的多模型AI应用,支持切换Gemini和Mistral等云模型进行天气查询、预报和空气质量检测。

  • by OngDuyThang
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 OngDuyThang/integrate-mcp-tools-with-gen-ai-application

使用说明

🌦️ 天气代理:Strands代理+Gemini/Mistral+MCP服务器工具

下一代人工智能应用程序,展示了 模型上下文协议(MCP) 和 Strands代理商.
该项目将AI逻辑(代理)与工具逻辑(MCP服务器)解耦,允许我们在使用云模型(Gemini、Mistral)时在云模型之间切换 完全一样 一套工具。

🚀 为什么是这种架构?

1.力量 模型上下文协议 (MCP)

传统上,将LLM连接到外部API(如天气API)需要编写特定于该模型SDK的自定义代码。如果我们从OpenAI切换到Gemini,我们必须重写工具定义。

MCP解决了这个问题。 ,它的行为就像 “各种类型的人工智能应用程序的通用接口”.

  • 一次写入,随处运行: 我们构建了一个“天气MCP服务器”。Claude Desktop、Cursor等IDE,或如图所示的自定义Python AI代理都可以使用此服务器。
  • 标准化: 工具定义、参数验证和执行逻辑都是标准化的。代理只是“发现”服务器可以做什么。
  • 解耦: 我们的工具在单独的环境中运行。这使我们能够在不接触AI代理代码的情况下更新API逻辑。

2.力量 Strands代理商

Strands是一个模型驱动的代理框架,它使集成MCP工具变得非常简单。

  • 自动工具发现: 随着 MCPClient,Strands会自动获取可用工具的列表(get_weather, get_daily_forecast, get_air_quality)并将它们注入到模型的上下文中。
  • 动态切换模型: 此项目演示了在 双子座2.5闪光灯 和 西北风大3 (均通过API密钥在云上)。在模型之间切换时,MCP服务器和AI代理逻辑保持完全相同。

📂 项目结构

.
├── mcp-server/             # 🛠️ The Tool Provider
│   └── main.py             # MCP server with Weather, Forecast & Air Quality tools
├── gen-ai-app/             # 🧠 The AI Agent & UI
│    ├── main.py            # FastAPI backend utilizing Strands Agent
│    └── static/
│        └── index.html     # Chat UI with Tailwind CSS
├─ Dockerfile
├─ docker-compose.yml
└── requirements.txt

✨ 特性

  • MCP服务器:
    • 实时数据:使用Open-Meteo获取实时天气、预报和空气质量(天气数据不需要API密钥)。
    • 动态工具:工具通过HTTP(流式HTTP)提供。向MCP服务器添加一个新工具,使代理可以立即使用它,而无需重新启动前端。
  • Gen AI应用程序:
    • 多模型支持:允许通过UI在Gemini和Mistral之间切换,而AI代理代码保持不变。
    • 现代用户界面:聊天界面,支持暗/亮模式、标记渲染和模型指示器。

🛠️ 先决条件

  • 已安装Docker和Docker Compose。

  • 谷歌Gemini和Mistral API密钥。

⚡ 安装和设置

  1. 首先,我们必须配置API密钥

    GEMINI_API_KEY=YOUR_GEMINI_KEY
    MISTRAL_API_KEY=YOUR_MISTRAL_KEY
    
  2. 运行此命令

    docker compose up
    
  3. 访问Gen AI应用程序http://localhost:8001

🎮 用法

  1. Gen AI应用程序在上运行http://localhost:8001带有UI和API处理程序,而MCP服务器运行在http://localhost:8000.

  2. 转到上的UIhttp://localhost:8001然后选择型号:选择“Gemini 2.5 Flash”或“Mistral Large 3”。

  3. 询问与天气相关的问题以调用MCP工具:

    • “伦敦目前的天气状况如何?”

    • “给我一份巴黎未来5天的天气预报。”

    • “北京现在的空气质量怎么样?健康吗?”

  4. 观察:代理将自主决定在MCP服务器上调用哪个工具,执行它,并制定自然语言响应。

🧩 延伸

要添加新工具(例如股票价格检查器):

  1. 打开mcp服务器/main.py。

  2. 添加一个用@mcp.tool()修饰的函数。

  3. 重新启动MCP服务器。

  4. Gen AI应用程序中的Strands Agent将在下次请求时自动发现新工具。

✨ 演示