StormScope
通过MCP为AI助手提供实时美国天气数据。使用NWS API、NOAA风暴预测中心数据、NOAA天气预测中心表面分析、爱荷华州环境中网雷达和Open-Meteo压力级模型数据。您可以选择使用Tempest个人气象站的数据。
仅限美国地区。覆盖所有50个州、华盛顿特区和美国领土(波多黎各、关岛、美属维尔京群岛、美属萨摩亚)。对非美国地点的请求返回一个明显的错误。SPC国家展望仅涵盖美国本土。
它做什么
大多数工具支持 detail 参数: 标准 给出了一个清晰的总结, 满的 增加了技术深度(METAR、VTEC代码、多边形几何、概率前景)。
- 当前条件:温度、风、湿度、天空、压力
- 以每日叙述期、每小时或原始网格点时间值序列进行预测
- 具有严重性过滤功能的主动天气警报
- SPC恶劣天气展望,包括分类风险和概率龙卷风/风/冰雹
- 具有人类可读区域描述的国家严峻前景
- NEXRAD雷达站元数据和图像URL
- 500mb高空分析:位势高度、温度、风和导出的涡度(来自5点有限差分网格的天气尺度分辨率——可用于识别槽、脊和急流模式,但不用于中尺度特征)
- 表面分析:锋面、压力中心(高/低)以及相对于最近冷锋的暖/冷扇区检测
- 将所有内容整合在一起并适应情况的综合简报
安装
需要Python 3.11+和 紫外线.
claude mcp add --scope user stormscope -- uvx --from git+https://github.com/thornjad/stormscope stormscope或者添加到您的Claude Code MCP配置中:
{
"mcpServers": {
"stormscope": {
"command": "uvx",
"args": ["--from", "git+https://github.com/thornjad/stormscope", "stormscope"],
"env": {
"PRIMARY_LATITUDE": "YOUR_LATITUDE",
"PRIMARY_LONGITUDE": "YOUR_LONGITUDE"
}
}
}
}配置
| 变量 | 默认值 | 描述 |
|---|---|---|
PRIMARY_LATITUDE | none | 未明确传递坐标时的默认纬度 |
PRIMARY_LONGITUDE | none | 未明确传递坐标时的默认经度 |
UNITS | us | 单位制(us 或 si) |
ENABLE_CORELOCATION | false | 设置为 true 启用macOS CoreLocation(需要Xcode命令行工具) |
DISABLE_AUTO_GEOLOCATION | false | 设置为 true 禁用CoreLocation和IP地理定位 |
TEMPEST_TOKEN | none | Tempest个人访问令牌--支持Tempest站集成 |
TEMPEST_STATION_ID | none | 要使用的显式站点ID(可选,请参阅 暴风站) |
TEMPEST_STATION_NAME | none | 要匹配的站名而不是ID(可选) |
USE_TEMPEST_STATION_GEOLOCATION | false | 使用Tempest站坐标作为主要位置 |
位置检测
所有位置感知工具都接受可选 latitude 和 longitude 参数。如果省略,服务器将通过回退链解析位置:
- 明确的
latitude/longitude参数 --AI可以传递任何位置的坐标 - 暴风站位置 (选择加入)--设置
USE_TEMPEST_STATION_GEOLOCATION=true配置好的站可以使用其坐标 PRIMARY_LATITUDE/PRIMARY_LONGITUDE环境变量 --精确,建议您在家中使用- macOS核心位置 (选择加入)--设置
ENABLE_CORELOCATION=true,需要Xcode命令行工具,约100米WiFi精度,首次使用时提示位置权限。将一个小型Swift助手编译为~/Library/Application Support/stormscope/ - IP地理定位 通过 Fo.io --自动,城市级精度,每个会话一个请求
设置 DISABLE_AUTO_GEOLOCATION=true 禁用CoreLocation和IP地理定位(第4层和第5层)。在禁用自动地理定位且没有环境变量或显式参数的情况下,工具会返回错误。
暴风个人气象站
如果你有 暴风雨 个人气象站StormScope可以通过NWS无法提供的超局部传感器读数来丰富NWS数据:太阳辐射、紫外线指数、雷击次数、空气密度和湿球温度。Tempest还在其预报中提供日出/日落时间,这些时间被添加到 get_forecast 输出。
暴风数据是对NWS的补充,而不是取代它。 NWS提供权威的警报文本、详细的叙述性预测和广泛的覆盖范围。Tempest在您的确切车站位置提供超本地精度。当Tempest站在范围内时,StormScope使用Tempest值表示温度、感觉、湿度、风和压力,并设置 data_source: "tempest" 在回应中。
如果Tempest API不可用,则所有工具都会返回到NWS数据而不会出现错误。
设置
- 从获取个人访问令牌 Tempest开发者门户.
- 从Tempest应用程序或API(设置→ 站,或从URL
tempestwx.com/station/). - 添加到您的MCP环境中:
{
"TEMPEST_TOKEN": "your-token-here",
"TEMPEST_STATION_ID": "your-station-id"
}台站分辨率
当 TEMPEST_STATION_ID 如果未设置,StormScope会自动发现与您的令牌关联的最近站点。如果最近的站距离请求坐标超过5英里,则不使用它(以避免将无关数据附加到远处)。您还可以通过名称识别电台 TEMPEST_STATION_NAME (不敏感地将案件与电台的 name 和 public_name 字段)。
| 变量 | 目的 |
|---|---|
TEMPEST_TOKEN | 必需。启用所有Tempest功能。 |
TEMPEST_STATION_ID | 通过数字ID使用特定电台 |
TEMPEST_STATION_NAME | 按名称使用特定电台。 |
USE_TEMPEST_STATION_GEOLOCATION | 设置为 true 使用该站的GPS坐标作为主要位置。需要 TEMPEST_STATION_ID 或 TEMPEST_STATION_NAME. |
工具
| 工具 | 描述 | 关键参数 |
|---|---|---|
get_conditions | 车站现状 | detail:标准或完全 |
get_forecast | 多种格式的预测 | mode:每日、每小时或原始; days (1-7,默认值7); hours (1-48,默认值24) |
get_alerts | 活跃天气警报 | severity_filter:极端、严重、中等或轻微; detail:标准或完全 |
get_spc_outlook | SPC观点 | outlook_type:分类、龙卷风、风或冰雹; day: 1-3 |
get_national_outlook | 美国本土范围内的风险区域(无纬度/经度) | day: 1-3 |
get_radar | 带有文本摘要和可点击链接的NEXRAD雷达 | |
get_upper_air | 500mb高度、温度、风、导出涡度(Open Meteo) | |
get_surface_analysis | 锋面、压力中心、温/冷区检测(WPC) | day: 1-3; detail:标准或完全 |
get_briefing | 综合简报,一般天气问题的默认设置 | detail:标准或完全 |
所有位置感知工具都接受可选 latitude/longitude,回退到配置的位置(参见 位置检测).
高空数据由 开放天气 在CC-BY 4.0下。涡度是从约110km网格间距的模型风场中得出的——这捕捉到了天气尺度特征(短波槽、急流最大值),但没有捕捉到中尺度细节。
示例对话
这些示例展示了AI助手如何展示StormScope数据。这些工具返回结构化的JSON,助手为用户格式化它。
“天气怎么样?” (使用 get_briefing):
Currently 72F and Mostly Sunny in Minneapolis, MN.
Feels like 72F. Wind SW 8 mph. Humidity 45%.
Today: High 78F, increasing clouds, chance of PM thunderstorms.
Tonight: Low 58F, scattered thunderstorms likely.
Severe Weather: Marginal Risk (MRGL) - isolated severe storms possible.
Alerts: None active.“恶劣天气前景如何?” (使用 get_briefing detail=full):
...plus dewpoint 50F, cloud layers FEW at 3000m, METAR: KMSP 041200Z...
Probabilistic: 5% tornado (significant), 15% wind, 15% hail
National: SLGT risk in central Oklahoma, MRGL in northern Texas
Radar: KMPX, latest scan 12:00Z, N0B/N0S available
Day 2: TSTM, Day 3: NONE技能建议
创建 .claude/skills/ 常见模式的技能:
- 上午简报会:
get_briefing detail=full为了全面了解新的一天 - 快速检查:
get_conditions仅针对当前条件 - 晚间回顾:
get_forecast mode=daily days=2今晚和明天 - 大通准备:
get_spc_outlook outlook_type=tornado+get_surface_analysis+get_upper_air+get_radar+get_alerts detail=full
数据源
StormScope聚合了来自多个上游服务的数据。这些服务都不需要身份验证或API密钥。
国家气象局(NWS) — api.weather.gov (条款) 条件、预报、警报和网格点数据。NWS数据由美国联邦政府生成,属于公共领域 《美国法典》第17章第105节使用NWS数据并不意味着NOAA或NWS认可该项目。
美国国家海洋和大气管理局风暴预报中心(SPC) — spc.noaa.gov (条款) 分类和概率性恶劣天气展望(第1-3天)。根据与NWS相同的法规,SPC数据是美国政府的公共领域。
美国国家海洋和大气管理局天气预报中心 — 地图服务.weather.noaa.gov 带有前沿和压力中心的表面分析图(第1-3天)。根据与NWS相同的法规,WPC数据是美国政府的公共领域。分析图表每天更新约4次。没有提供H/L中心的压力值。
爱荷华州环境监测网(IEM) — mesonet.agron.iastate.edu (免责声明) NEXRAD雷达站元数据和图像。IEM数据属于公共领域,任何人都可以出于任何合法目的自由使用。数据由爱荷华州立大学的爱荷华州环境Mesonet提供。
开放天气 — open-meeo.com (条款) 500mb高空气压水平数据(位势高度、温度、风)。根据以下条款提供 CC-BY 4.0.StormScope使用免费的非商业层,不支持付费的Open Meteo订阅。
Fo.io — Fo.io (条款) 基于IP的地理定位,仅在未配置坐标且CoreLocation不可用时用作最后的后备手段。每个服务器会话一个请求。StormScope使用此服务的免费层,不转售或重新分发地理位置数据。集 DISABLE_AUTO_GEOLOCATION=true 以完全阻止此请求。
所有上游服务提供的数据均不保证准确性或可用性。StormScope缓存响应以减少请求量,但不能保证数据新鲜度。StormScope的用户有责任遵守每项服务的使用条款。StormScope的作者不对其他人如何使用此软件或其连接的上游API负责。
免责声明
此应用程序仅用于信息和教育目的。它不适用于危及生命的天气条件或紧急情况,也不应作为天气信息的唯一来源。不要依赖此应用程序来做出关键的天气决策。在恶劣天气期间,请务必咨询官方气象服务和紧急广播。此应用程序可能无法提供实时或准确的天气信息。如果因依赖本软件而造成人身伤害、死亡或财产损失,作者不承担任何责任。查看包含 许可证 特定语言限制责任。
发展
git clone https://github.com/thornjad/stormscope.git
cd stormscope
uv sync --group dev
uv run python -m pytest许可证
______________________________________________________________________
觉得这个有用吗? 给我买杯咖啡!
