Fetch METARs, TAFs, PIREPs, domestic/international SIGMETs and CWAs from NWS AWC via MCP. AIRMETs not served. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/aviation-weather-mcp-server{
"mcpServers": {
"aviation-weather": {
"command": "node",
"args": ["/path/to/aviation-weather-mcp-server/dist/index.js"]
}
}
}MCP Servers overview
<div align="center"> <h1>@cyanheads/aviation-weather-mcp-server</h1> <p><b>Fetch METARs, TAFs, PIREPs, domestic/international SIGMETs and CWAs from NWS AWC via MCP. AIRMETs not served. STDIO or Streamable HTTP.</b> <div>5 Tools • 1 Prompt</div> </p> </div> <div align="center"> [](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/aviation-weather-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/aviation-weather-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/) </div> <div align="center"> [](https://github.com/cyanheads/aviation-weather-mcp-server/releases/latest/download/aviation-weather-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=aviation-weather-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvYXZpYXRpb24td2VhdGhlci1tY3Atc2VydmVyIl19) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22aviation-weather-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Faviation-weather-mcp-server%22%5D%7D) [](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) </div> <div align="center"> **Public Hosted Server:** [https://aviation-weather.caseyjhand.com/mcp](https://aviation-weather.caseyjhand.com/mcp) </div> --- ## Overview Aviation weather from the NWS Aviation Weather Center — METARs, TAFs, PIREPs, domestic/international SIGMETs, and Center Weather Advisories. Look up stations, fetch current and forecast conditions, and pull pilot reports and hazard advisories. AIRMETs are not served. ### Tools | Tool | Description | |:-----|:------------| | `aviation_find_stations` | Resolve airports and weather stations by identifier, bounding box, or US state. Returns ICAO/IATA/FAA IDs, coordinates, elevation, and available data types. | | `aviation_get_metar` | Get current weather observations (METARs) for named airports, or survey every reporting station in a bounding box. Returns decoded wind, visibility, ceiling, present weather, temp/dewpoint, altimeter, cloud layers, flight category (VFR/MVFR/IFR/LIFR), and the raw METAR string. | | `aviation_get_taf` | Get Terminal Aerodrome Forecasts for one or more airports. Returns each forecast period with valid times, surface wind, low-level wind shear, visibility, decoded weather, cloud layers, and vertical visibility into a forecast obscuration, plus the raw TAF string. | | `aviation_get_pireps` | Get recent Pilot Reports near an airport or within a bounding box. Returns decoded turbulence, icing, and cloud reports with altitude, aircraft type, intensity, outside air temperature, wind aloft, flight weather, and the raw PIREP string. | | `aviation_get_advisories` | Get domestic/international SIGMETs and Center Weather Advisories. Returns source coverage, hazard, severity, altitude, validity, movement, multipart geometry and original bulletins; omitted facts stay null. | ### Prompts | Prompt | Description | |:-----|:------------| | `aviation_preflight_brief` | Structure a preflight weather briefing for a flight, calling the tools above in sequence and synthesizing a weather-risk summary. | --- ## Capability reference ### `aviation_find_stations` <sub>tool</sub> - Look up one or more stations by identifier (up to 20 per call) — a lookup matches the registry's own ID, which for an airport is its 4-character ICAO ID (e.g., `KSEA`, `K0S9`); a 3-letter IATA code never resolves, though each record includes its IATA/FAA aliases when available - Discover stations within a geographic bounding box, or list stations for one of the 50 US states or DC via two-letter USPS code - Returns `data_types` (METAR, TAF, etc.) so agents can confirm what's available before querying - Every result states whether the upstream 400-row cap cut it; `limit` (1–400) bounds how many stations a `bbox` or `state` search returns, ordered by ICAO identifier ascending with identifier-less stations last — rejected alongside `station_ids`, since that mode already names the set. An area search returning more than 130 stations with no `limit` says so and names the lever; omitting `limit` still returns every match - An ID lookup names every identifier that resolved to nothing, separating a 3-letter IATA code (never resolves) from an identifier the registry simply does not list - Whitespace around an ID is trimmed rather than failing the batch; only an empty or whitespace-only entry is rejected --- ### `aviation_get_metar` <sub>tool</sub> - `station_ids` (1–10 per call — 4 ASCII letters or digits, case-insensitive and normalized to uppercase, so `ksea` and `K0S9` work) for named airports, or `bbox` to survey every reporting station in an area — mutually exclusive - `hours` (1–12) is a lookback window, not a row limit: with `station_ids` every observation inside it is returned, and with `bbox` the result is the latest observation per station - `flight_category` (e.g., `["IFR", "LIFR"]`) narrows a `bbox` survey to the stations in those categories — judged on each station's latest observation, applied before `limit`, and disclosed with the count surveyed before it; a station AWC could not rate never matches, and a survey the filter empties returns an empty result that says so. Rejected alongside `station_ids` - A `bbox` survey states whether the upstream 400-row cap cut it and, above `hours: 1`, names `hours` as the first lever — a wide window spends the cap on repeat readings rather than on more stations; `limit` (1–400) bounds how many stations come back, ordered by station ID ascending, and is rejected alongside `station_ids`. A survey returning more than 40 stations with no `limit` says so and names the levers; omitting `limit` still returns every station - Flight category (VFR/MVFR/IFR/LIFR) returned directly from the AWC API; decodes wind, visibility, present weather, and cloud layers alongside the raw METAR string - Ceiling reports both height and kind (measured, or indefinite for vertical visibility into an obscuration) — `sky_condition` distinguishes a reported clear sky from an unreported one when `clouds` is empty - `metar_type` distinguishes routine `METAR` from special `SPECI` observations - Every batch reports which requested stations came back, naming missing IDs with recovery guidance --- ### `aviation_get_taf` <sub>tool</sub> - Accepts 1–4 ICAO station IDs per call: 4 ASCII letters or digits in either case, normalized to uppercase - Structured forecast periods with change types (`FM`, `TEMPO`, `BECMG`) and probabilities; weather decoded group by group beside the raw groups - Forecast obscurations keep their layer and carry the vertical visibility into them, rather than reading as clear sky; `sky_condition` distinguishes an unamended period from a stated clear sky - Text the upstream decoder left undecoded — often a fourth cloud layer — is surfaced per period in `not_decoded` rather than dropped - Low-level wind shear (`WS020/20040KT`) decoded to the shear-layer top and forecast wind at that height - `valid_from` / `valid_to` in ISO 8601 for time comparisons - Every batch reports which requested stations came back, naming missing IDs with recovery guidance --- ### `aviation_get_pireps` <sub>tool</sub> - `station_id` (4 ASCII letters or digits in either case, normalized to uppercase) + `distance_nm` (10–500 nm, 100 when omitted) for radial search, or `bbox` for area search — mutually exclusive; a `station_id` AWC does not recognize as a search center returns a typed error pointing to `aviation_find_stations` or `bbox` - `altitude_min_ft` / `altitude_max_ft` filter to a cruise-altitude band in feet MSL, from 0 to 60000 ft (min must not exceed max); a report with unknown altitude is dropped once either bound is set - `min_intensity` (`lgt` / `mod` / `sev`) restricts to reports carrying a turbulence or icing layer at that intensity or above — a matching report still carries its lighter layers - Turbulence and icing arrays include up to two layers per report; icing layers the API synthesized for a report that never mentioned ice are dropped - Outside air temperature (`temp_c`), wind aloft (`wind`), and the `/WX` flight weather decoded beside its raw groups (`weather`), for PIREPs and AIREPs alike. The wind direction is published as reported, with no conversion — a PIREP `/WV` direction is magnetic, unlike the true-north METAR and TAF winds - Every result states whether the upstream 400-row cap cut it, naming only the narrowing levers the call can still use, and `limit` (1–400) bounds how many reports come back, ordered by recency. A result of more than 50 reports with no `limit` says so and names the lever; omitting `limit` still returns every match - PIREPs are sparse by nature — absence of reports does not mean smooth conditions --- ### `aviation_get_advisories` <sub>tool</sub> - `advisory_type`
What people ask about aviation-weather-mcp-server
What is cyanheads/aviation-weather-mcp-server?
+
cyanheads/aviation-weather-mcp-server is mcp servers for the Claude AI ecosystem. Fetch METARs, TAFs, PIREPs, domestic/international SIGMETs and CWAs from NWS AWC via MCP. AIRMETs not served. STDIO or Streamable HTTP. It has 2 GitHub stars and its last recorded update is dated 2026-10-19.
How do I install aviation-weather-mcp-server?
+
You can install aviation-weather-mcp-server by cloning the repository (https://github.com/cyanheads/aviation-weather-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/aviation-weather-mcp-server safe to use?
+
Our security agent has analyzed cyanheads/aviation-weather-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains cyanheads/aviation-weather-mcp-server?
+
cyanheads/aviation-weather-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-10-19, with 2 open issues.
Are there alternatives to aviation-weather-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy aviation-weather-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cyanheads-aviation-weather-mcp-server)<a href="https://claudewave.com/repo/cyanheads-aviation-weather-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-aviation-weather-mcp-server" alt="Featured on ClaudeWave: cyanheads/aviation-weather-mcp-server" width="320" height="64" /></a>More MCP Servers
Reverse engineer anything with agents, from app behavior down to native binaries.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ A Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev