Skip to main content
Glama
NeilJo-GY

Weather Server

by NeilJo-GY

<<<<<<< HEAD <<<<<<< HEAD

Weather Server

全球天气查询MCP服务器 - 提供实时天气、天气预报和多城市天气比较功能

🌤️ 功能特性

  • 实时天气查询: 获取任意城市的当前天气信息

  • 坐标天气查询: 支持经纬度坐标查询天气

  • 天气预报: 提供最多5天的天气预报

  • 多城市比较: 同时查询多个城市的天气信息

  • 多语言支持: 支持中英文等多种语言

  • 智能提示: 根据查询类型生成相应的提示模板

Related MCP server: LandiWetter MCP Server

🚀 快速开始

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 =======

weather-server

MCP server: weather-server

origin/main

Related MCP Connectors

Related MCP Servers