使用说明
气象MCP服务器
模型上下文协议(MCP)服务器,使用OpenWeatherMap API提供当前天气信息。
特性
资源
- 天气://{city_name}:公开任何城市的当前天气数据
- 返回:城市名称、温度(°C和°F)、天气状况、描述和湿度
工具
- get_current天气:以编程方式获取指定城市的天气数据
- 输入:城市名称(字符串)
- 输出:JSON格式的天气数据
鼓励
- 天气_查询_提示:查询天气信息模板
- 天气比较提示:用于比较两个城市天气的模板
设置
先决条件
- Python 3.8+
- OpenWeatherMap API密钥(免费https://openweathermap.org/api)
安装
-
使用uv安装依赖项(推荐):
uv add mcp httpx或者使用pip:
pip install -r requirements.txt -
配置API密钥:
# Copy the example environment file copy .env.example .env # Edit .env and add your OpenWeatherMap API key # OPENWEATHER_API_KEY=your_actual_api_key_here或者直接设置环境变量:
# Windows (PowerShell) $env:OPENWEATHER_API_KEY="your_actual_api_key_here" # Windows (Command Prompt) set OPENWEATHER_API_KEY=your_actual_api_key_here # Linux/Mac export OPENWEATHER_API_KEY="your_actual_api_key_here"
运行服务器
发展模式
# Using uv (recommended)
uv run mcp dev weather_server.py
# Using Python directly
python weather_server.py
SSE运输的生产模式
# The server runs with SSE transport by default
python weather_server.py
MCP检验员测试
# Install and run the MCP Inspector for testing
uv run mcp dev weather_server.py
使用示例
使用资源
一旦连接到MCP客户端(如Claude Desktop),您就可以通过资源访问天气数据:
weather://London
weather://New York
weather://Tokyo
使用工具
这 get_current_weather 工具可以通过编程方式调用:
{
"tool": "get_current_weather",
"arguments": {
"city": "London"
}
}
使用提示
天气提示有助于构建LLM交互:
weather_query_prompt(city="London")→ “请提供伦敦目前的天气信息……”weather_comparison_prompt(city1="London", city2="Paris")→ 结构化比较提示
API响应格式
天气数据遵循以下模式:
{
"city_name": "London",
"temperature_celsius": 15.5,
"temperature_fahrenheit": 59.9,
"condition": "Clouds",
"humidity": 78,
"description": "broken clouds"
}
与Claude Desktop集成
将此服务器添加到您的Claude Desktop配置中:
- 打开克劳德桌面设置
- 导航到MCP服务器配置
- 添加新服务器:
{
"weather-server": {
"command": "python",
"args": ["path/to/weather_server.py"],
"env": {
"OPENWEATHER_API_KEY": "your_api_key_here"
}
}
}
错误处理
服务器包括全面的错误处理:
- 城市名称无效:返回“未找到城市”错误
- API故障:返回HTTP错误详细信息
- 缺少API密钥:返回到带有警告的模拟数据
- 网络问题:返回连接错误详细信息
模拟数据模式
如果没有配置API密钥,服务器将以模拟数据模式运行以进行测试:
# This will use mock weather data
python weather_server.py
模拟数据包括用于演示目的的真实天气信息。
发展
编码结构
fetch_weather_data():核心API交互逻辑get_weather_resource():MCP资源处理程序get_current_weather():MCP工具处理程序weather_query_prompt():简单提示模板weather_comparison_prompt():高级提示模板
测试
# Run the server in development mode
uv run mcp dev weather_server.py
# Test with different cities
# Use the MCP Inspector to test resources and tools
扩展服务器
您可以使用其他功能轻松扩展此服务器:
- 历史天气数据
- 天气预报
- 天气警报
- 多个天气提供商
- 缓存响应
故障排除
常见问题
-
“未找到城市”错误
- 确保城市名称拼写正确
- 尝试使用完整的城市名称(例如,“纽约市”而不是“NYC”)
-
API关键错误
- 验证您的OpenWeatherMap API密钥是否处于活动状态
- 检查环境变量是否设置正确
-
网络错误
- 确保互联网连接
- 检查OpenWeatherMap API是否可以从您的网络访问
调试模式
运行调试日志:
# Add debug output
python weather_server.py --debug
许可证
这个项目是开源的。请确保您遵守OpenWeatherMap的API服务条款。
贡献
请随时提交问题和拉取请求,以改善此天气MCP服务器!