SHEARLINE

io.github.lostnumber07由 GitHub 帳號 lostnumber07 發布v1.1.0更新於 Oct 24, 2026

Analyst-grade US severe weather: warnings, SPC outlooks, RAP environment, MRMS, GLM lightning

已驗證STDIO僅桌面位置與生活資料與分析

概覽

AI 產生的概覽

本機 MCP 伺服器,為助理提供分析師級美國劇烈天氣資料:警報、SPC 展望、RAP 環境、MRMS 雷達、閃電與風暴報告。

可以做什麼
取得龍捲風、強雷暴與暴洪警報多邊形,含影響等級標籤、風暴移動與點是否落在多邊形內的判斷,以及監視與 SPC 第 1–3 天風險類別和機率。以 MetPy 計算 RAP 點位環境(CAPE、風切、SRH、SCP、STP),並提供短期預報趨勢,判斷條件正在增強或趨於穩定。讀取 MRMS 雷達反演的冰雹、旋轉、VIL 與反射率極值,以及 GOES 閃電次數與距離分級。查詢某點某日期的即時與歷史本地風暴報告,並取得最近 NEXRAD 體掃中繼資料。產生綜合威脅簡報,同時執行全部資料來源並說明其排序邏輯。
適用情境
適合助理回答美國某地點的劇烈天氣問題:該點是否在警報內、冰雹有多大、環境是否支持龍捲風,或某地址過去某天發生什麼事(保險、鑑識用途)。也適用於追風日簡報與戶外活動雷電監測。
執行需求
透過 uvx 從 PyPI 套件 shearline 以 stdio 在本機執行,需要 Python 3.12+ 與 uv。無需 API 金鑰或帳號,所有資料來源皆為公開匿名。需要連線至 NOAA、SPC、IEM 與 AWS Open Data。僅涵蓋美國本土。另有選用 HTTP 模式,以環境變數設定限流與日誌。
安裝前請注意
僅供參考,明確不能取代 NWS 官方警報;應遵循 weather.gov 與當地主管機關。資料來自第三方公開服務,歷史風暴報告為初步資料而非最終紀錄。上游故障時會回傳部分資料並在 degraded 欄位標示,而非直接報錯。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 SHEARLINE,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

SHEARLINE

[PyPI] [Python] [CI] [MCP Registry] [License: MIT]

The severe-weather analyst your agent doesn't have. SHEARLINE is a free, MIT-licensed MCP server that gives AI agents analyst-grade US severe-weather tools: live warning polygons with Impact-Based Warning tags, SPC convective outlooks, RAP-derived point environments and forecast trends (CAPE/shear/SRH/STP computed with MetPy), MRMS radar-derived hail and rotation products, GOES lightning, ground-truth storm reports (real-time and historical), and a composite threat brief that synthesizes all of it. A dozen weather MCPs already wrap the basic forecast API; SHEARLINE deliberately skips everything they do and ships only what requires radar meteorology to expose correctly.

Informational only. Not a substitute for official NWS warnings. Every tool repeats this, because it matters: when weather threatens, follow official warnings from weather.gov and local authorities.

Tools

ToolWhat it returns
get_active_warnings(lat, lon, radius_km=40)Active tornado/severe-thunderstorm/flash-flood warning polygons with IBW tags (max hail size, max gust, tornado detection/damage threat), parsed storm motion, expirations, and whether the exact point is inside a polygon. Watches listed separately.
get_spc_outlook(lat, lon, day=1)SPC categorical risk (TSTM→HIGH) at the point plus tornado/hail/wind probabilities and significant-severe flags, days 1–3, with interpretation calibrated to the category.
get_point_environment(lat, lon)Latest RAP 13-km analysis profile computed with MetPy: MLCAPE/MUCAPE/CINs, LCL, 0–1/0–6 km shear, 0–1/0–3 km SRH, Bunkers motion, effective inflow layer, effective SRH/shear, SCP, and significant-tornado parameter — interpreted like an analyst (pulse vs. cool-season high-shear vs. classic supercell parameter space).
get_environment_trend(lat, lon)The anticipatory view: a short RAP forecast series (f00/f01/f03/f06, one consistent cycle) of MLCAPE, 0–6 km shear, 0–1 km SRH, SCP and STP, with an interpretation of the trajectory (intensifying / stabilizing / steady) — for "is this getting worse" rather than "what is it now."
get_mrms_severe(lat, lon, radius_km=40)MRMS maxima within radius: 60-min MESH (hail, inches and mm), low-level and mid-level rotation tracks (azimuthal shear), VIL, composite reflectivity — each with valid time and distance/bearing of the max.
get_storm_reports(lat, lon, radius_km=80, hours=6)Normalized Local Storm Reports: type, magnitude with units, time, location, distance/bearing, remarks.
get_lightning(lat, lon, radius_km=40, minutes=15)GOES-East GLM total-lightning activity in the recent window: flash count and rate, nearest strike (distance/bearing/time), and a tiered outdoor-safety interpretation (overhead / within-striking-distance / in-the-area).
get_historical_storm_reports(lat, lon, date, radius_km=80)What hail/wind/tornado hit a point on a specific past date (YYYY-MM-DD, UTC) — normalized reports with magnitude+units and distance/bearing, for the insurance / ag / forensic use case. Coverage from ~2005; preliminary LSRs, not the final NCEI record.
get_threat_brief(lat, lon)The showpiece: runs everything above concurrently and synthesizes a threat level (none/marginal/elevated/significant/extreme) with stated logic, hazards ranked, environment summary, nearest storm signature, and a recommended attention window.
get_radar_snapshot(lat, lon)Nearest WSR-88D's latest Level 2 volume metadata: VCP (scan strategy), max reflectivity with range/azimuth, coarse echo-top estimate.

Every tool returns structured JSON with data (numeric fields, units stated), interpretation (plain-language analyst sentences), degraded (which upstream sources failed, if any — partial data instead of errors), the safety disclaimer, and a schema_version — the field contract is semver-stable (see ARCHITECTURE), so integrators can depend on it.

Example: threat brief during a real outbreak

Real output from 2026-06-10, point inside an active tornado warning in northern Missouri:

json
{  "threat_level": "extreme",  "threat_logic": [    "Tornado Warning in effect at the point, corroborated by confirmed tornado reports nearby — treat as an immediate life-safety situation.",    "Severe Thunderstorm Warning at the point tagged 'Considerable' (hail to 1.75\", gusts to 60 mph).",    "Significant-tornado parameter of 4.0 with storms ongoing — environment strongly supports tornadic supercells.",    "MRMS MESH of 2.3\" hail within radius in the last hour.",    "Intense rotation track (azimuthal shear 0.013 /s) nearby in the last hour.",    "6 tornado report(s) near the point in the report window."  ],  "hazards_ranked": [    {"hazard": "tornado", "level": "extreme"},    {"hazard": "hail", "level": "extreme"},    {"hazard": "damaging_wind", "level": "extreme"},    {"hazard": "flash_flood", "level": "moderate"}  ],  "nearest_storm_signature": {    "signature": "composite reflectivity", "value": "58.5 dBZ",    "distance_km": 18.0, "direction": "ENE", "valid_utc": "2026-06-10T22:14Z"  },  "attention_window": {"window": "now", "until_utc": "2026-06-10T21:00:00-05:00"}}

And the same tool for a quiet coastal Maine point reads as confidently quiet — not as an error: "threat_level": "none" with the environment numbers shown so the agent can see why it's quiet.

Install

Requires Python 3.12+ and uv. No API keys — every data source is public and anonymous. uvx downloads and runs the published package in one step; nothing is installed permanently.

Claude Code:

sh
claude mcp add shearline -- uvx shearline

Claude Desktop (claude_desktop_config.json):

json
{  "mcpServers": {    "shearline": {      "command": "uvx",      "args": ["shearline"]    }  }}

Streamable HTTP (for remote/agent-platform use):

sh
uvx shearline --http --port 8741# serves at http://127.0.0.1:8741/mcp

On macOS you can also double-click scripts/launch.command to start the HTTP server in a Terminal window (honours SHEARLINE_PORT).

The HTTP transport is built to be hosted: it emits one structured JSON log line per tool call (tool, coarse 1° lat/lon bucket, latency, degraded list, cache hit/miss) and applies a per-client token-bucket rate limit, returning 429 with Retry-After when exceeded. Both are HTTP-only — stdio behaviour is unchanged. Configure via environment variables:

Env varDefaultEffect
SHEARLINE_RATE_RPM60sustained requests/minute/client (0 disables the limit)
SHEARLINE_RATE_BURST30token-bucket capacity (max burst)
SHEARLINE_HTTP_LOG1set 0 to silence per-request logging
SHEARLINE_LOG_LEVELINFOlog level for the shearline.http logger
SHEARLINE_UPSTREAM_CONCURRENCY8max concurrent upstream fetches (politeness toward NOAA)

To run the latest unreleased main instead of the PyPI release, swap shearline for --from git+https://github.com/lostnumber07/shearline shearline.

Why these tools

A forecast API tells you it might rain. None of the questions that matter on a severe weather day — is this storm rotating, how big is the hail, is the environment loaded for tornadoes, am I inside the polygon — are answerable from a forecast endpoint. They require the warning's IBW tags, radar-derived products, and a real sounding:

  • Warnings with IBW tags, not just warning text. A base-tier Severe Thunderstorm Warning and one tagged DESTRUCTIVE with 80 mph gusts are different planning problems. SHEARLINE parses the machine-readable tags (max hail size, max gust, tornado detection/damage threat) and the storm-motion vector, and does the point-in-polygon test for you.
  • The environment, computed honestly. CAPE without shear is a pulse-storm day; shear without CAPE is wind-driven rain. SHEARLINE pulls the current RAP analysis profile and computes the discriminating quantities with MetPy — including the effective inflow layer, effective SRH/shear, SCP, and STP — because high-CAPE/low-shear, low-CAPE/high-shear, and classic supercell parameter spaces produce very different hazards, and the interpretation says which one you're in.
  • MRMS, because warnings lag storms. MESH tells you what hail a storm has already produced; rotation tracks show where mesocyclones have tracked in the last hour — both on a ~2-minute cadence from the national radar mosaic, often ahead of the next warning update.
  • LSRs, because radar isn't ground truth. Spotter reports confirm what's actually reaching the ground — in real time, or for any past date (the insurance / forensic question, "what hit this address that day").
  • Lightning, because it's the most common outdoor-safety trigger. GOES GLM total lightning, distance-tiered to the 30-30 / 10-mile rules — the signal that actually stops a ballgame, a job site, or a drone flight.
  • Now and next. The point environment is the analysis now; the forecast trend (f00→f06 from one model cycle) says whether STP/CAPE is rising into the afternoon — the difference between "what is it" and "is it getting worse."
  • One brief that reasons across all of it. The threat level is rule-based with the triggered rules quoted back, so an agent can audit the logic instead of trusting a vibe.

Data sources (all public, no keys)

Coverage is continental US only — out-of-bounds coordinates are rejected with a clear error. Upstream fetches are cached (warnings 60 s, MRMS/lightning 120 s, LSRs 300 s, outlooks/RAP 30 min, historical reports 6 h) and degrade gracefully: if one source is down, you get partial data plus a degraded field, never a bare exception. A daily canary workflow checks every upstream's response shape and fails on schema drift (renamed fields, moved buckets) before it reaches you.

Recipes for non-meteorologists

You don't need to know what an STP is to use SHEARLINE. The .claude/skills/ directory ships three end-to-end recipes that name the exact tool sequence for a domain task — drop them into any agent that has SHEARLINE connected:

  • hail-claim-verification — did damaging hail occur at this address on this date? (insurance / forensic)
  • chase-day-briefing — outlook → environment → trend → warnings → radar, into a go/no-go with a target window (chase / EM)
  • event-day-lightning-watch — poll lightning proximity and issue suspend/shelter/resume calls by the 30-30 / 10-mile rules (venues / outdoor ops)

Architecture

SHEARLINE is a thin, layered async server: per-source fetch/parse modules feed a meteorology derivation layer, which feeds a uniform tool layer. Every tool returns the same {data, interpretation, degraded, disclaimer} envelope, every upstream call is TTL-cached, and one failing source degrades to partial data instead of an exception. See ARCHITECTURE.md for the module map, the request lifecycle of get_threat_brief, the concurrency model, and the upstream quirks each source module encodes.

Development

sh
git clone https://github.com/lostnumber07/shearline && cd shearlineuv syncuv run pytest          # offline test suite against recorded fixturesuv run ruff check .uv run shearline       # stdiouv run python scripts/smoke.py     # live smoke test, both transportsuv run python scripts/canary.py    # live upstream drift check (shape-only)

See ARCHITECTURE.md for how to add a tool or data source.

License

MIT © Backshear LLC. Weather data is produced by NOAA/NWS and other public services; this project is not affiliated with or endorsed by NOAA.

來源:README.md,提交 65c3a19

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分