气象MCP服务器
模型上下文协议(MCP)服务器,使用OpenWeatherMap API提供天气信息,与LangGraph和Google的Gemini AI集成。 注:基于education.io“掌握MCP:构建高级代理应用程序”
特性
- 获取全球任何地点的当前天气信息
- 对话式AI界面由谷歌Gemini 2.5 Flash提供支持
- 可扩展性的MCP服务器/客户端架构
- 实时天气数据,包括温度、湿度和风速
- 使用MCP提示模板比较两个城市的天气
先决条件
安装
- 克隆存储库:
git clone https://github.com/ivintoiu/py-weather-mcp.git
cd py-weather-mcp- 安装软件包和依赖项:
uv sync
uv pip install -e .- 设置环境变量:
复制示例环境文件:
cp .env.example .env- 将API密钥添加到
.env:
OPENWEATHERMAP_API_KEY=your_openweathermap_key_here
GOOGLE_API_KEY=your_google_api_key_here用法
选项1:使用已安装的命令(推荐)
安装软件包后,您可以使用CLI命令:
运行交互式客户端:
weathermcp-client独立运行服务器:
weathermcp-server选项2:直接使用Python模块
运行交互式客户端:
python -m weathermcp.client独立运行服务器:
python -m weathermcp.server使用客户端
客户端运行后,询问有关天气的自然语言问题:
示例查询:
- “伦敦的天气怎么样?”
- “日本东京的天气怎么样?”
- “告诉我纽约的温度”
- “巴黎在下雨吗?”
命令:
/prompts--列出所有可用的提示及其参数/prompt "arg1" "arg2"--运行特定提示(例如。,/prompt compare_weather_prompt "London" "Paris")exit/quit/q--退出客户端
服务器详细信息
服务器在stdio传输上运行,可以与其他MCP客户端集成。
项目结构
py-weather-mcp/
├── src/
│ └── weathermcp/
│ ├── __init__.py # Package initialization
│ ├── client.py # LangGraph client with Gemini AI integration
│ └── server.py # MCP server with weather tools and prompts
├── pyproject.toml # Project dependencies and configuration
├── .env # Environment variables (not in version control)
├── .env.example # Example environment file template
├── .gitignore # Git ignore rules
└── README.md # This file运作原理
- MCP服务器 (
weathermcp/server.py):提供get_weather从OpenWeatherMap API获取当前天气数据的工具 - MCP客户端 (
weathermcp/client.py):
- 连接到MCP服务器 - 使用LangGraph创建会话代理 - 与谷歌的Gemini AI集成,以理解自然语言查询 - 需要时自动调用天气工具
- MCP提示:服务器提供可重用的提示模板(例如。,
compare_weather_prompt)指示人工智能执行结构化任务,如比较两个城市之间的天气
API响应格式
天气工具以以下格式返回数据:
{
"location": "London",
"weather": "clear sky",
"temperature_celsius": 15,
"feels_like_celsius": 14,
"humidity": 72,
"wind_speed_mps": 3.5
}错误处理
该应用程序处理各种错误情况:
- 位置名称无效
- 身份验证失败
- 网络超时(10秒超时)
- API费率限制
- API响应格式不正确
安全说明
重要提示: 永远不要承诺你的 .env 文件到版本控制。这 .gitignore 文件被配置为排除它。
如果您意外提交了API密钥:
- 立即旋转(重新生成)两个API键:
- OpenWeatherMap API密钥 - 谷歌云凭据
- 更新您的
.env使用新密钥的文件
故障排除
问题: “未设置GOOGLE_API_KEY环境变量”
- 解决方案: 确保您创建了
.env文件并添加您的Google API密钥
问题: “身份验证失败。API密钥可能无效或处于非活动状态。”
- 解决方案: 验证您的OpenWeatherMap API密钥是否有效并处于活动状态
问题: “找不到‘CityName’的天气数据”
- 解决方案: 检查城市名称的拼写。尝试添加国家代码(例如,“英国伦敦”)
贡献
欢迎投稿!请随时提交拉取请求。
许可证
该项目根据MIT许可证获得许可。
