天气数据服务

一个提供全球城市天气信息的MCP服务器,包括温度、天气状况、湿度、风力等数据,支持API实时获取和模拟数据回退。

  • by szypetike
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 szypetike/weather-mcp-server

使用说明

气象MCP服务器

一种模型上下文协议(MCP)服务器,为世界各地的城市提供天气信息。

特性

  • 获取任何城市的当前天气
  • 提供温度、天气状况、湿度、风信息等
  • 如果API请求失败,则回退到模拟数据

需求

  • Node.js(v14或更高版本)
  • npm或纱线
  • OpenWeather API密钥(可选-如果未提供,将使用模拟数据)

安装

  1. 克隆此存储库
  2. 安装依赖项:
    npm install
    
  3. 构建服务器:
    npm run build
    

用法

在本地运行

npm start

与Claude或其他MCP兼容的AI助手一起使用

将以下配置添加到MCP设置中:

{
  "mcpServers": {
    "weather-server": {
      "command": "node",
      "args": ["path/to/weather-server/build/index.js"],
      "env": {
        "OPENWEATHER_API_KEY": "your-api-key-here" // Optional - will use mock data if not provided
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

API密钥和模拟数据

此服务器可以在两种模式下运行:

  1. 使用API密钥:当通过提供OpenWeather API密钥时 OPENWEATHER_API_KEY 环境变量,服务器将从OpenWeather API获取实时天气数据。

  2. 没有API密钥:如果未提供API密钥,服务器将自动使用一组预定义城市(伦敦、纽约、东京、巴黎、悉尼)的模拟数据。对于其他城市,它将使用默认的模拟数据。

获取OpenWeather API密钥:

  1. 注册地址: 开放天气
  2. 导航到您帐户的“API密钥”部分
  3. 生成新的API密钥或使用现有密钥

模拟数据模式对于开发、测试或不需要实时天气数据时非常有用。

可用工具

get_current天气

获取指定城市的当前天气信息。

输入架构:

{
  "city": "string" // City name (e.g., "London", "New York", "Tokyo")
}

示例响应:

{
  "location": "London, GB",
  "date": "Monday, March 24, 2025",
  "time": "7:30:00 PM",
  "temperature": {
    "current": "12°C",
    "feelsLike": "10°C"
  },
  "weather": {
    "main": "Cloudy",
    "description": "Overcast clouds",
    "icon": "https://openweathermap.org/img/wn/04d@2x.png"
  },
  "details": {
    "humidity": "75%",
    "pressure": "1012 hPa",
    "windSpeed": "4.5 m/s",
    "windDirection": "230°",
    "cloudiness": "90%",
    "sunrise": "6:45 AM",
    "sunset": "7:30 PM"
  },
  "source": "OpenWeather API" // or "Mock Data (No API key provided)" or "Mock Data (API request failed)"
}

这 source 响应中的字段指示数据来自哪里:

  • "OpenWeather API":来自OpenWeather API的实时数据
  • "Mock Data (No API key provided)":使用了模拟数据,因为未提供API密钥
  • "Mock Data (API request failed)":由于API请求失败而使用了模拟数据

许可证

麻省理工学院