🌦️ 天气代理: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密钥。
⚡ 安装和设置
- 首先,我们必须配置API密钥
GEMINI_API_KEY=YOUR_GEMINI_KEY
MISTRAL_API_KEY=YOUR_MISTRAL_KEY- 运行此命令
docker compose up- 访问Gen AI应用程序http://localhost:8001
🎮 用法
- Gen AI应用程序在上运行http://localhost:8001带有UI和API处理程序,而MCP服务器运行在http://localhost:8000.
- 转到上的UIhttp://localhost:8001然后选择型号:选择“Gemini 2.5 Flash”或“Mistral Large 3”。
- 询问与天气相关的问题以调用MCP工具:
- “伦敦目前的天气状况如何?”
- “给我一份巴黎未来5天的天气预报。”
- “北京现在的空气质量怎么样?健康吗?”
- 观察:代理将自主决定在MCP服务器上调用哪个工具,执行它,并制定自然语言响应。
🧩 延伸
要添加新工具(例如股票价格检查器):
- 打开mcp服务器/main.py。
- 添加一个用@mcp.tool()修饰的函数。
- 重新启动MCP服务器。
- Gen AI应用程序中的Strands Agent将在下次请求时自动发现新工具。
