NeilJo-GY/weather-server
3.2
If you are the rightful owner of weather-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The weather-server is an MCP server designed to provide weather-related data and services through a model context protocol.
<<<<<<< HEAD
Weather Server
全球天气查询MCP服务器 - 提供实时天气、天气预报和多城市天气比较功能
🌤️ 功能特性
- 实时天气查询: 获取任意城市的当前天气信息
- 坐标天气查询: 支持经纬度坐标查询天气
- 天气预报: 提供最多5天的天气预报
- 多城市比较: 同时查询多个城市的天气信息
- 多语言支持: 支持中英文等多种语言
- 智能提示: 根据查询类型生成相应的提示模板
🚀 快速开始
1. 环境配置
首先需要获取OpenWeatherMap API密钥:
- 访问 OpenWeatherMap 注册账号
- 获取免费的API密钥
- 配置环境变量:
# 编辑 .env 文件
WEATHER_API_KEY=your_openweathermap_api_key_here
WEATHER_API_BASE_URL=https://api.openweathermap.org/data/2.5
WEATHER_API_TIMEOUT=30
DEFAULT_UNITS=metric
DEFAULT_LANGUAGE=en
2. 安装依赖
pip install -r requirements.txt
# 或者
pip install requests pyyaml pydantic mcp-factory
3. 启动服务器
python server.py
🛠️ 可用工具
1. 城市天气查询
get_weather_by_city(city: str, country: str = "", units: str = "metric")
city
: 城市名称(必填)country
: 国家代码(选填,如 "CN", "US")units
: 温度单位(metric/imperial/kelvin)
示例:
get_weather_by_city("Beijing")
get_weather_by_city("New York", "US")
get_weather_by_city("London", "GB", "imperial")
2. 坐标天气查询
get_weather_by_coordinates(latitude: float, longitude: float, units: str = "metric")
latitude
: 纬度longitude
: 经度units
: 温度单位
示例:
get_weather_by_coordinates(39.9042, 116.4074)
# 北京get_weather_by_coordinates(40.7128, -74.0060)
# 纽约
3. 天气预报
get_weather_forecast(city: str, country: str = "", days: int = 5, units: str = "metric")
city
: 城市名称country
: 国家代码(选填)days
: 预报天数(1-5天)units
: 温度单位
示例:
get_weather_forecast("Shanghai", "CN", 3)
get_weather_forecast("Paris", "FR", 5, "metric")
4. 多城市天气比较
get_multiple_cities_weather(cities: List[str], units: str = "metric")
cities
: 城市列表,支持 "城市名,国家代码" 格式units
: 温度单位
示例:
get_multiple_cities_weather(["Beijing", "Shanghai", "Guangzhou"])
get_multiple_cities_weather(["New York,US", "London,GB", "Tokyo,JP"])
📊 返回数据格式
当前天气返回数据
{
"city": "Beijing",
"country": "CN",
"weather": {
"main": "Clear",
"description": "clear sky",
"icon": "01d"
},
"temperature": {
"current": 25.5,
"feels_like": 26.2,
"min": 22.1,
"max": 28.3,
"unit": "°C"
},
"humidity": 65,
"pressure": 1013,
"wind": {
"speed": 3.2,
"direction": 180
},
"visibility": 10000,
"clouds": 20,
"timestamp": 1703123456,
"sunrise": 1703070000,
"sunset": 1703104000
}
天气预报返回数据
{
"city": "Beijing",
"country": "CN",
"coordinates": {
"latitude": 39.9042,
"longitude": 116.4074
},
"forecast_count": 40,
"forecasts": [
{
"datetime": 1703123456,
"weather": {
"main": "Clear",
"description": "clear sky",
"icon": "01d"
},
"temperature": {
"current": 25.5,
"feels_like": 26.2,
"min": 22.1,
"max": 28.3,
"unit": "°C"
},
"humidity": 65,
"pressure": 1013,
"wind": {
"speed": 3.2,
"direction": 180
},
"clouds": 20,
"precipitation": 10
}
]
}
📋 资源功能
1. API配置信息
get_weather_api_config()
返回天气API的配置信息和使用说明。
2. 支持的城市列表
get_supported_cities()
返回常用城市列表和使用示例。
💡 提示模板
天气查询提示
weather_query_prompt(query_type: str = "current", location: str = "", context: str = "")
query_type
: 查询类型(current/forecast/multiple/coordinates)location
: 位置信息context
: 额外上下文
根据查询类型和语言环境生成相应的提示模板。
🌍 支持的城市
服务器支持全球任意城市的天气查询,包括但不限于:
🇨🇳 中国
- 北京 (Beijing)
- 上海 (Shanghai)
- 广州 (Guangzhou)
- 深圳 (Shenzhen)
- 香港 (Hong Kong)
🇺🇸 美国
- 纽约 (New York)
- 洛杉矶 (Los Angeles)
- 芝加哥 (Chicago)
- 旧金山 (San Francisco)
🇬🇧 欧洲
- 伦敦 (London)
- 巴黎 (Paris)
- 柏林 (Berlin)
- 罗马 (Rome)
🇯🇵 亚洲
- 东京 (Tokyo)
- 首尔 (Seoul)
- 新加坡 (Singapore)
- 孟买 (Mumbai)
⚠️ 注意事项
- API密钥必填: 需要配置有效的OpenWeatherMap API密钥
- 请求限制: 免费账户每天限制1000次请求
- 网络要求: 需要稳定的网络连接访问外部API
- 错误处理: 所有API调用都包含错误处理和友好的错误消息
🔧 故障排除
常见问题
-
API密钥错误
- 检查
.env
文件中的WEATHER_API_KEY
是否正确 - 确认API密钥是否已激活
- 检查
-
网络连接问题
- 检查网络连接
- 确认防火墙设置
-
城市名称无法识别
- 尝试使用英文城市名
- 添加国家代码,如 "Beijing,CN"
-
返回数据为空
- 检查城市名称拼写
- 确认该城市是否存在于OpenWeatherMap数据库中
📜 许可证
MIT License
🤝 贡献
欢迎提交Issue和Pull Request来改进这个项目!
由 MCP Factory 生成
weather-server
MCP server: weather-server
origin/main