天气数据服务

一个提供实时天气数据和警报的Model Context Protocol (MCP)服务器,集成美国国家气象局API,为Claude for Desktop和其他MCP客户端提供准确的天气预报和恶劣天气警报。

  • by thejokers69
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 thejokers69/Weather-MCP-Server

使用说明

气象MCP服务器

模型上下文协议(MCP)服务器,为桌面和其他MCP客户端的Claude提供实时天气数据和警报。该服务器与美国国家气象局API集成,提供准确的天气预报和恶劣天气警报。

目录

引言

像Claude这样的许多语言模型缺乏对天气预报和恶劣天气警报等实时数据的访问。这个MCP服务器通过在Claude for Desktop和美国国家气象局API之间提供一个桥梁来解决这个问题。

服务器提供了两个强大的工具:

  • 天气警报:获取美国任何州的活跃恶劣天气警报
  • 天气预报:使用坐标获取美国任何地点的详细天气预报

该服务器采用TypeScript和官方MCP SDK构建,遵循模型上下文协议规范,并与Claude for Desktop和其他MCP兼容客户端无缝集成。

特性

  • 🌤️ 实时天气数据:获取当前天气预报和警报
  • 🚨 恶劣天气警报:按州获取活动天气警报
  • 📍 基于位置的预测:使用纬度/经度坐标获取详细预报
  • 🔧 符合MCP标准:使用官方模型上下文协议SDK构建
  • 🚀 零配置:不需要API密钥-使用免费的NWS API
  • 📦 简易安装:简单的npm/pnpm安装过程
  • 🛡️ 错误处理:针对网络问题和无效输入的强大错误处理
  • 🎯 TypeScript:完全支持TypeScript,具有类型安全性

安装

先决条件

  • Node.js 18+
  • pnpm(推荐)或npm
  • TypeScript 5.0+

安装步骤

  1. 克隆存储库:

    git clone <repository-url>
    cd weather
    
  2. 安装依赖项:

    pnpm install
    
  3. 构建项目:

    pnpm build
    
  4. 测试服务器:

    pnpm start
    

您应该看到: Weather MCP Server running on stdio

快速启动

安装后,服务器已准备好与Claude for Desktop一起使用:

  1. 为桌面配置Claude:

    macOS:打开配置文件:

    code ~/Library/Application\ Support/Claude/claude_desktop_config.json
    

    视窗:打开配置文件:

    code "%APPDATA%\Claude\claude_desktop_config.json"
    

    将此配置添加到您的 claude_desktop_config.json:

    {
      "mcpServers": {
        "weather": {
          "command": "node",
          "args": ["/path/to/weather/build/index.js"],
          "env": {}
        }
      }
    }
    

    备注:替换 /path/to/weather/build/index.js 使用天气服务器构建文件的实际绝对路径。

  2. 重新启动桌面版的Claude

  3. 测试工具:

    • 问克劳德:“加利福尼亚州的天气警报是什么?”
    • 问克劳德:“坐标40.7128,-74.0060的天气预报是什么?”

面向客户开发人员

如果您正在构建自己的MCP客户端,请查看 面向客户开发人员的MCP快速入门 学习如何与此天气服务器和其他MCP服务器集成。

用法

可用工具

get-alerts

获取美国特定州的天气警报。

参数:

  • state (string):两个字母的状态码(例如,“CA”、“NY”、“TX”)

例子:

{
  "name": "get-alerts",
  "kwargs": {
    "state": "CA"
  }
}

get-forecast

使用坐标获取特定位置的天气预报。

参数:

  • latitude (数字):纬度坐标(-90到90)
  • longitude (数字):经度坐标(-180到180)

例子:

{
  "name": "get-forecast", 
  "kwargs": {
    "latitude": 40.7128,
    "longitude": -74.0060
  }
}

示例输出

天气警报:

Active alerts for CA:

Event: Severe Thunderstorm Warning
Area: Los Angeles County
Severity: Severe
Status: Actual
Headline: Severe Thunderstorm Warning issued for Los Angeles County
---

天气预报:

Forecast for 40.7128, -74.0060:

Tonight:
Temperature: 45°F
Wind: 10 mph NW
Mostly clear with a low around 45°F
---

Tomorrow:
Temperature: 62°F  
Wind: 15 mph SW
Sunny with a high near 62°F
---

配置

Claude用于桌面配置

可以在Claude for Desktop的配置文件中配置服务器:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "weather": {
      "command": "node",
      "args": ["/absolute/path/to/weather/build/index.js"],
      "env": {}
    }
  }
}

环境变量

不需要环境变量。服务器使用免费的美国国家气象局API,不需要身份验证。

api参考

美国国家气象局API

此服务器与 美国国家气象局API:

  • 基本URL: https://api.weather.gov
  • 认证:无需
  • 速率限制:未指定
  • 覆盖:仅限美国

服务器端点

服务器公开了两个MCP工具,它们在内部调用NWS API:

  1. 警报端点: /alerts?area={state}
  2. 点端点: /points/{lat},{lon}
  3. 预测终点:从点响应中动态检索

已知问题和限制

  • 仅适用于美国:美国国家气象局API仅覆盖美国
  • 坐标精度:为了API兼容性,坐标四舍五入到小数点后4位
  • 依赖网:需要互联网连接才能访问天气数据
  • API可靠性:取决于NWS API的可用性和响应时间

获得帮助

如果您遇到问题:

  1. 检查日志:服务器向stderr输出错误消息
  2. 验证坐标:确保坐标在有效范围内
  3. 测试连接性:验证互联网连接和NWS API可用性
  4. 检查配置:确保Claude for Desktop配置正确

对于错误或功能请求,请在项目存储库上打开问题。

贡献

欢迎投稿!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。

开发设置

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/amazing-feature
  3. 进行更改
  4. 构建和测试: pnpm build && pnpm start
  5. 提交您的更改: git commit -m 'Add amazing feature'
  6. 推到分支: git push origin feature/amazing-feature
  7. 打开拉取请求

原作者和许可证

此示例基于中解释的代码 MCP快速入门 (GitHub), 其许可证是 CC-BY-4.0. 已完成的代码示例也托管在 此回购, 其许可证为MIT(版权所有(c)2025模型上下文协议)。 所以我为这个仓库选择了MIT许可证。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

  • 模型上下文协议:提供优秀的SDK和规范
  • 美国国家气象局:提供免费、可靠的天气数据
  • Claude桌面版:用于实施MCP客户端支持
  • TypeScript团队:用于优秀的类型系统和工具
  • pnpm:用于快速、高效的包管理

作者:穆罕默德·拉克西尔(小丑69)
版本: 1.0.0
最后更新:2025年1月