weather-server

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密钥:

  1. 访问 OpenWeatherMap 注册账号
  2. 获取免费的API密钥
  3. 配置环境变量:
# 编辑 .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)

⚠️ 注意事项

  1. API密钥必填: 需要配置有效的OpenWeatherMap API密钥
  2. 请求限制: 免费账户每天限制1000次请求
  3. 网络要求: 需要稳定的网络连接访问外部API
  4. 错误处理: 所有API调用都包含错误处理和友好的错误消息

🔧 故障排除

常见问题

  1. API密钥错误

    • 检查 .env 文件中的 WEATHER_API_KEY 是否正确
    • 确认API密钥是否已激活
  2. 网络连接问题

    • 检查网络连接
    • 确认防火墙设置
  3. 城市名称无法识别

    • 尝试使用英文城市名
    • 添加国家代码,如 "Beijing,CN"
  4. 返回数据为空

    • 检查城市名称拼写
    • 确认该城市是否存在于OpenWeatherMap数据库中

📜 许可证

MIT License

🤝 贡献

欢迎提交Issue和Pull Request来改进这个项目!


MCP Factory 生成

weather-server

MCP server: weather-server

origin/main

Test webhook trigger 2025年 7月22日 星期二 23时28分07秒 CST

Test webhook to stable URL 2025年 7月22日 星期二 23时32分22秒 CST

Webhook Test 2025年 7月23日 星期三 10时53分10秒 CST

Registry Fix Test 2025年 7月23日 星期三 10时59分14秒 CST

GitHub App Test 2025年 7月23日 星期三 11时45分32秒 CST

Hub Token Fix Test 2025年 7月23日 星期三 11时53分42秒 CST

Two-Branch System Test 2025年 7月23日 星期三 12时43分48秒 CST

Author Field Fix Test 2025年 7月23日 星期三 12时53分13秒 CST