Skip to main content
Glama

StormScope

Real-time US weather data for AI assistants via MCP. Uses the NWS API, NOAA Storm Prediction Center data, NOAA Weather Prediction Center surface analysis, Iowa Environmental Mesonet radar, and Open-Meteo pressure-level model data. Optionally uses data from your Tempest personal weather station.

US locations only. Covers all 50 states, DC, and US territories (Puerto Rico, Guam, USVI, American Samoa). Requests for non-US locations return a clear error. The SPC national outlook covers the contiguous US only.

What it does

Most tools support a detail parameter: standard gives a clean summary, full adds the technical depth (METAR, VTEC codes, polygon geometry, probabilistic outlooks).

  • Current conditions: temperature, wind, humidity, sky, pressure

  • Forecast in daily narrative periods, hourly, or raw gridpoint time-value series

  • Active weather alerts with severity filtering

  • SPC severe weather outlook, both categorical risk and probabilistic tornado/wind/hail

  • National severe outlook with human-readable region descriptions

  • NEXRAD radar station metadata and imagery URLs

  • 500mb upper-air analysis: geopotential heights, temperature, wind, and derived vorticity (synoptic-scale resolution from a 5-point finite-difference grid — useful for identifying troughs, ridges, and jet stream patterns, but not mesoscale features)

  • Surface analysis: fronts, pressure centers (highs/lows), and warm/cold sector detection relative to the nearest cold front

  • Combined briefing that pulls everything together and adapts to the situation

Related MCP server: US Weather MCP Server

Installation

Requires Python 3.11+ and uv.

claude mcp add --scope user stormscope -- uvx --from git+https://github.com/thornjad/stormscope stormscope

Or add to your Claude Code MCP config:

{
  "mcpServers": {
    "stormscope": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/thornjad/stormscope", "stormscope"],
      "env": {
        "PRIMARY_LATITUDE": "YOUR_LATITUDE",
        "PRIMARY_LONGITUDE": "YOUR_LONGITUDE"
      }
    }
  }
}

Configuration

Variable

Default

Description

PRIMARY_LATITUDE

none

Default latitude when coordinates aren't passed explicitly

PRIMARY_LONGITUDE

none

Default longitude when coordinates aren't passed explicitly

UNITS

us

Unit system (us or si)

ENABLE_CORELOCATION

false

Set to true to enable macOS CoreLocation (requires Xcode Command Line Tools)

DISABLE_AUTO_GEOLOCATION

false

Set to true to disable CoreLocation and IP geolocation

TEMPEST_TOKEN

none

Tempest Personal Access Token — enables Tempest station integration

TEMPEST_STATION_ID

none

Explicit station ID to use (optional, see Tempest station)

TEMPEST_STATION_NAME

none

Station name to match instead of ID (optional)

USE_TEMPEST_STATION_GEOLOCATION

false

Use Tempest station coordinates as the primary location

Location detection

All location-aware tools accept optional latitude and longitude parameters. When omitted, the server resolves location through a fallback chain:

  1. Explicit latitude/longitude params — the AI can pass coordinates for any location

  2. Tempest station location (opt-in) — set USE_TEMPEST_STATION_GEOLOCATION=true with a configured station to use its coordinates

  3. PRIMARY_LATITUDE/PRIMARY_LONGITUDE env vars — precise, recommended for your home location

  4. macOS CoreLocation (opt-in) — set ENABLE_CORELOCATION=true, requires Xcode Command Line Tools, ~100m WiFi-based accuracy, prompts for location permission on first use. Compiles a small Swift helper into ~/Library/Application Support/stormscope/

  5. IP geolocation via ipinfo.io — automatic, city-level accuracy, one request per session

Setting DISABLE_AUTO_GEOLOCATION=true disables both CoreLocation and IP geolocation (tiers 4 and 5). With auto-geolocation disabled and no env vars or explicit params, tools return an error.

Tempest personal weather station

If you have a Tempest personal weather station, StormScope can enrich NWS data with hyper-local sensor readings that NWS cannot provide: solar radiation, UV index, lightning strike counts, air density, and wet bulb temperature. Tempest also supplies sunrise/sunset times in its forecast, which are added to get_forecast output.

Tempest data supplements NWS, it doesn't replace it. NWS provides authoritative alert text, detailed narrative forecasts, and broad coverage. Tempest provides hyper-local precision at your exact station location. When a Tempest station is within range, StormScope uses Tempest values for temperature, feels-like, humidity, wind, and pressure, and sets data_source: "tempest" in the response.

If the Tempest API is unavailable, all tools fall back to NWS data without error.

Setup

  1. Get a Personal Access Token from the Tempest developer portal.

  2. Find your station ID from the Tempest app or API (Settings → Stations, or from the URL at tempestwx.com/station/<id>).

  3. Add to your MCP environment:

{
  "TEMPEST_TOKEN": "your-token-here",
  "TEMPEST_STATION_ID": "your-station-id"
}

Station resolution

When TEMPEST_STATION_ID is not set, StormScope auto-discovers the nearest station associated with your token. If the nearest station is more than 5 miles from the request coordinates, it is not used (to avoid attaching irrelevant data to a distant location). You can also identify a station by name with TEMPEST_STATION_NAME (matched case-insensitively against the station's name and public_name fields).

Variable

Purpose

TEMPEST_TOKEN

Required. Enables all Tempest functionality.

TEMPEST_STATION_ID

Use a specific station by numeric ID.

TEMPEST_STATION_NAME

Use a specific station by name.

USE_TEMPEST_STATION_GEOLOCATION

Set to true to use the station's GPS coordinates as the primary location. Requires TEMPEST_STATION_ID or TEMPEST_STATION_NAME.

Tools

Tool

Description

Key params

get_conditions

Current conditions at a station

detail: standard or full

get_forecast

Forecast in multiple formats

mode: daily, hourly, or raw; days (1-7, default 7); hours (1-48, default 24)

get_alerts

Active weather alerts

severity_filter: Extreme, Severe, Moderate, or Minor; detail: standard or full

get_spc_outlook

SPC outlook for a point

outlook_type: categorical, tornado, wind, or hail; day: 1-3

get_national_outlook

CONUS-wide risk areas (no lat/lon)

day: 1-3

get_radar

NEXRAD radar with textual summary and clickable links

get_upper_air

500mb heights, temperature, wind, derived vorticity (Open-Meteo)

get_surface_analysis

Fronts, pressure centers, warm/cold sector detection (WPC)

day: 1-3; detail: standard or full

get_briefing

Combined briefing, the default for general weather questions

detail: standard or full

All location-aware tools accept optional latitude/longitude, falling back to the configured location (see Location detection).

Upper-air data provided by Open-Meteo under CC-BY 4.0. Vorticity is derived from model wind fields at ~110km grid spacing — this captures synoptic-scale features (shortwave troughs, jet maxima) but not mesoscale detail.

Example conversation

These examples show how an AI assistant might present StormScope data. The tools return structured JSON, and the assistant formats it for the user.

"What's the weather?" (uses 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.

"What's the severe weather outlook?" (uses 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

Skill suggestions

Create .claude/skills/ skills for common patterns:

  • Morning briefing: get_briefing detail=full for a full picture to start the day

  • Quick check: get_conditions for just current conditions

  • Evening review: get_forecast mode=daily days=2 for tonight and tomorrow

  • Chase prep: get_spc_outlook outlook_type=tornado + get_surface_analysis + get_upper_air + get_radar + get_alerts detail=full

Data sources

StormScope aggregates data from several upstream services. None of these services require authentication or API keys.

National Weather Service (NWS)api.weather.gov (terms) Conditions, forecasts, alerts, and gridpoint data. NWS data is produced by the US federal government and is in the public domain under 17 U.S.C. § 105. Use of NWS data does not imply NOAA or NWS endorsement of this project.

NOAA Storm Prediction Center (SPC)spc.noaa.gov (terms) Categorical and probabilistic severe weather outlooks (days 1-3). SPC data is US government public domain under the same statute as NWS.

NOAA Weather Prediction Center (WPC)mapservices.weather.noaa.gov Surface analysis charts with fronts and pressure centers (days 1-3). WPC data is US government public domain under the same statute as NWS. Analysis charts are updated approximately 4 times per day. No pressure values are provided for H/L centers.

Iowa Environmental Mesonet (IEM)mesonet.agron.iastate.edu (disclaimer) NEXRAD radar station metadata and imagery. IEM data is in the public domain and may be used freely by anyone for any lawful purpose. Data provided by the Iowa Environmental Mesonet of Iowa State University.

Open-Meteoopen-meteo.com (terms) 500mb upper-air pressure-level data (geopotential heights, temperature, wind). Provided under CC-BY 4.0. StormScope uses the free non-commercial tier and does not support paid Open-Meteo subscriptions.

ipinfo.ioipinfo.io (terms) IP-based geolocation, used only as a last-resort fallback when no coordinates are configured and CoreLocation is unavailable. One request per server session. StormScope uses the free tier of this service and does not resell or redistribute the geolocation data. Set DISABLE_AUTO_GEOLOCATION=true to prevent this request entirely.

All upstream services provide data without warranty of accuracy or availability. StormScope caches responses to reduce request volume but cannot guarantee data freshness. Users of StormScope are responsible for complying with each service's terms of use. The authors of StormScope are not liable for how others use this software or the upstream APIs it connects to.

Disclaimer

This application is for informational and educational purposes only. It is not intended for use in life-threatening weather conditions or emergency situations, and should not be relied on as a sole source of weather information. Do not rely on this application for critical weather decisions. Always consult official weather services and emergency broadcasts during severe weather. This application may not provide real-time or accurate weather information. The authors shall not be held liable in the event of injury, death, or property damage resulting from reliance on this software. See the included license for specific language limiting liability.

Development

git clone https://github.com/thornjad/stormscope.git
cd stormscope
uv sync --group dev
uv run python -m pytest

License

ISC


Found this useful? Buy me a coffee!

Available Tools

9 tools
get_alertsA

Get active weather alerts for a US location.

Use proactively at conversation start. Also: "Any warnings?", "Is it safe to travel?"

severity_filter: "Extreme", "Severe", "Moderate", or "Minor" to filter. detail="standard": event, severity, headline, description, instructions. detail="full": adds VTEC codes, polygon geometry, areaDesc, sender.

Omit lat/lon to use configured primary location.

units: accepted for API consistency but does not affect alert output. Alert text is returned as-is from NWS.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
severity_filterNo
detailNostandard
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description fully covers behavior: it explains parameter effects (severity_filter values, detail levels, lat/lon default behavior, units being ignored), and notes that alert text comes from NWS as-is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with a clear opening line, usage hints, and parameter explanations. It is slightly verbose but each sentence adds value, and structure aids readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values need not be detailed. The description covers all parameters, usage, and behavioral nuances. Minor missing details (e.g., error handling) but overall complete for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain each parameter. It does so comprehensively: severity_filter lists valid values, detail explains two levels, lat/lon omission uses primary location, and units is documented as non-functional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('active weather alerts for a US location'), making the purpose unambiguous. It also includes example queries and filter options, reinforcing understanding.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use the tool ('Use proactively at conversation start') and example triggers. It does not directly mention when not to use or contrast with siblings, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_briefingA

Get a comprehensive weather briefing for a US location.

The default tool for "What's the weather?" — combines conditions, forecast, alerts, and SPC outlook.

detail="standard": current conditions + today/tonight forecast + alerts + categorical SPC. detail="full": adds probabilistic outlooks (when MRGL+), national outlook, radar, and day 2-3 SPC forecasts.

Omit lat/lon to use configured primary location.

units: "us" or "si" for base system, with optional field overrides: "us,pressure:mb,wind:kt". Fields: temperature (f|c), pressure (inhg|mb), wind (mph|kt|kmh|ms), distance (mi|km), accumulation (in|mm|cm).

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
detailNostandard
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden. It transparently describes the combination of data sources, the two detail levels, units format with examples, and primary location fallback. No side effects or auth needs implied, which is consistent with a read-only briefing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured, starting with purpose then block of details. Slightly long but each sentence adds value. Could be tightened, but not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, no annotations, and an existing output schema, the description covers inputs, behavior, usage guidelines, and parameter semantics thoroughly. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description adds rich meaning: explains 'detail' parameter options ('standard' vs 'full' with specific inclusions), units format with examples and allowed fields, and lat/lon omission behavior. None of this is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a comprehensive weather briefing for a US location' and distinguishes itself from sibling tools by positioning as the default for 'What's the weather?', combining conditions, forecast, alerts, and SPC outlook.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use as default and details for 'standard' vs 'full' detail levels. Mentions omitting lat/lon for primary location. Does not explicitly state when not to use or suggest specific sibling alternatives, but context signals provide sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_conditionsA

Get current weather conditions for a US location.

Use when: "What's the weather right now?", "How hot is it?", "Is it windy?"

detail="standard": temperature, feels-like, dewpoint (or frost_point when <= 0C), humidity, wind, sky, visibility, pressure. detail="full": adds cloud layers, present weather, raw METAR.

Omit lat/lon to use configured primary location.

units: "us" or "si" for base system, with optional field overrides: "us,pressure:mb,wind:kt". Fields: temperature (f|c), pressure (inhg|mb), wind (mph|kt|kmh|ms), distance (mi|km), accumulation (in|mm|cm).

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
detailNostandard
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It details detail levels, unit formats, and default coordinate behavior. It does not mention safety traits (e.g., read-only) but is otherwise transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-organized: clear sections for purpose, use cases, detail levels, and units. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists (not shown), return values are covered. The description covers all input parameters and default behaviors. Minor omission: no mention of location validation or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds significant meaning: explains detail enum values, unit override syntax, and lat/lon optionality. However, it does not clarify valid ranges for lat/lon (only US locations implied by name).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states "Get current weather conditions for a US location," matching the tool name and resource. It distinguishes from siblings by focusing on real-time conditions, not alerts, forecasts, or radar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides example queries under "Use when:" and explains detail levels and units. However, it does not explicitly state when to avoid using the tool or point to specific sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_forecastA

Get forecast for a US location.

Use when: "What's the forecast?", "Will it rain?", "Weather this week?"

mode="daily": 12-hour day/night periods with narrative forecasts (default). mode="hourly": hour-by-hour temperature, precip chance, wind. mode="raw": gridpoint time-value series for temperature, dewpoint, wind, precip, sky cover.

days (1-7) controls daily mode. hours (1-48) controls hourly mode. Omit lat/lon to use configured primary location.

Note: the main temperature and wind fields in daily/hourly periods come from NWS pre-formatted data and are always in Fahrenheit/mph. The units parameter affects enriched fields: dewpoint/frost_point, feels_like, pressure, and snow/ice accumulation. Use mode="raw" for full unit-agnostic gridpoint data.

units: "us" or "si" for base system, with optional field overrides: "us,pressure:mb,wind:kt". Fields: temperature (f|c), pressure (inhg|mb), wind (mph|kt|kmh|ms), distance (mi|km), accumulation (in|mm|cm).

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
modeNodaily
daysNo
hoursNo
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description fully discloses behavior: explains modes (daily, hourly, raw), default settings, units system, and that main temperature/wind are always in Fahrenheit/mph due to NWS data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with front-loaded purpose and use cases, but somewhat long. Every sentence adds value, so slight deduction for verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no required fields, multiple modes, and units system, description covers all aspects. Output schema exists, so output format not needed. Complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage; description compensates by explaining each parameter: lat/lon optional, modes, days/hours ranges, and detailed unit overrides. Adds significant meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets a forecast for US locations, uses specific verb and resource. Differentiates from sibling tools like get_conditions and get_alerts by specifying 'forecast'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides example queries for when to use ('What's the forecast?', 'Will it rain?'). Does not explicitly state when not to use or compare to alternatives, but context signals imply differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_national_outlookA

Get CONUS-wide SPC severe weather risk areas.

Use when: "Any severe weather in the US?", "National storm outlook?"

Returns all active risk areas with human-readable region descriptions (e.g. "central Oklahoma", "northern Texas"). No lat/lon needed.

day: 1=today, 2=tomorrow, 3=day after.

units: accepted for API consistency but does not affect outlook output. Risk levels and region descriptions are unitless.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description explains that the tool returns risk areas with human-readable region descriptions and that no lat/lon is needed. It does not explicitly state it is a read-only operation, but the nature is implied. The description is transparent about the output but could be slightly more explicit about non-destructiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using line breaks and bullet-like formatting. Every sentence adds value without repetition. It is front-loaded with the core purpose and usage examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, when to use it, parameter details, and output characteristics ('returns all active risk areas with human-readable region descriptions'). However, it does not specify how many risk areas to expect or update frequency. With an existing output schema (not shown), this is acceptable, but the description alone is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully explains both parameters: 'day: 1=today, 2=tomorrow, 3=day after' and 'units: accepted for API consistency but does not affect outlook output'. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'CONUS-wide SPC severe weather risk areas'. It includes usage examples ('Any severe weather in the US?', 'National storm outlook?') and implicitly differentiates from sibling tools like get_spc_outlook by specifying national coverage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' examples are provided, making it clear when to invoke this tool. The description also clarifies that the 'units' parameter is accepted for API consistency but does not affect the output, preventing misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_radarA

Get NEXRAD radar info with textual weather summary and clickable links.

Use when: "Show me radar", "What does radar look like?", "Radar imagery?"

Returns a textual summary of current precipitation and near-term outlook (useful when images can't be displayed), plus clickable links to radar imagery the user can open in a browser. Also includes station ID, available products, and latest scan time.

Omit lat/lon to use configured primary location.

units: accepted for API consistency but does not affect radar output. Radar data is imagery-based and unitless.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description fully discloses behavior: imagery-based, unitless, returns summary and links, omitting lat/lon uses configurable location, units parameter does not affect output. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with key purpose, then usage, then details. Every sentence adds value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete given output schema existence and sibling context. Covers purpose, usage, behavior, parameters, and output nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but description explains that lat/lon are optional (use configured location) and units is accepted but does nothing. Adds meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets NEXRAD radar info with textual summary and links. Differentiates from sibling weather tools like get_alerts or get_forecast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases like 'Show me radar' and notes textual summary is useful when images can't be displayed. Lacks explicit exclusion criteria but gives clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_spc_outlookA

Check SPC severe weather outlook for a US location.

Use when: "Severe weather risk?", "Storm outlook?", "Should I worry about storms?"

outlook_type="categorical": risk level (NONE/TSTM/MRGL/SLGT/ENH/MDT/HIGH). outlook_type="tornado"/"wind"/"hail": probabilistic hazard percentage + significant flag.

day: 1=today, 2=tomorrow, 3=day after. Omit lat/lon to use configured primary location.

units: accepted for API consistency but does not affect SPC outlook output. Risk levels and probabilities are unitless.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
outlook_typeNocategorical
dayNo
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses key behaviors: categorical vs probabilistic output, day parameter range, units accepted but no effect. It does not cover error handling or rate limits, but for a read-only tool, the behavioral traits are sufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise (~100 words) and well-structured: purpose first, then usage triggers, then parameter details. Each sentence provides essential information without redundancy. Front-loaded key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no required, no enums, and an output schema, the description covers all necessary usage aspects and output types. It does not detail error cases or API limits, but the output schema likely documents return values, making the description sufficient for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must compensate fully. It explains all five parameters: latitude/longitude optional (default primary location), outlook_type values with output details, day meaning, units accepted but irrelevant. This adds critical meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check SPC severe weather outlook for a US location.' It provides specific verb+resource ('Check SPC severe weather outlook') and differentiates from siblings like get_national_outlook by focusing on SPC outlook with examples like 'Severe weather risk?' and 'Storm outlook?'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage cues with example questions ('Severe weather risk?', 'Storm outlook?') and explains when to use different outlook types. It mentions omitting lat/lon for primary location but does not explicitly state when not to use or compare with siblings, though the context of sibling tools is available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_surface_analysisA

Get surface analysis or forecast showing fronts, pressure centers, and warm/cold sector.

Use when: "Where are the fronts?", "Am I in the warm sector?", "Surface analysis?", "Where's the nearest low?"

Returns distance and bearing from your location to nearby fronts and pressure centers (highs/lows). For cold fronts, determines whether you're on the warm side (ahead) or cold side (behind).

product="analysis" (default): WPC coded surface analysis (CODSUS) showing current front positions and pressure centers, updated every 3 hours. Includes pressure values on H/L centers. The day parameter is not used. product="forecast": WPC national forecast chart. day: 1=today, 2=tomorrow, 3=day after.

detail="standard": nearest ~5 fronts, ~4 pressure centers, location summary. detail="full": all features with nearest-point coordinates.

scope="local" (default): location summary only references fronts within ~400km — distant fronts are listed but not described as influencing local weather. Use for typical queries about local conditions. scope="all": no distance threshold — location summary always reports warm/cold sector relative to nearest cold front regardless of distance. Use when asking about the broad synoptic pattern.

Note: this tool reports synoptic-scale features (major fronts, pressure centers). Mesoscale boundaries such as outflow boundaries, sea breezes, and moisture gradients are not included in the CODSUS or forecast chart data sources.

Warm/cold sector detection is approximate (geometric heuristic). CONUS coverage only.

Omit lat/lon to use configured primary location.

units: "us" or "si" for base system, with optional field overrides: "us,pressure:mb,wind:kt". Fields: temperature (f|c), pressure (inhg|mb), wind (mph|kt|kmh|ms), distance (mi|km), accumulation (in|mm|cm).

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
productNoanalysis
dayNo
detailNostandard
scopeNolocal
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses key behaviors: returns distance/bearing to fronts and pressure centers, update frequency (every 3 hours for analysis), CONUS-only coverage, and approximate warm/cold sector detection. It provides adequate transparency, though it could mention any rate limits or authentication needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections and bullet points. Every sentence adds value, and the most important information (purpose, what it returns) is front-loaded. No trivial or redundant text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 optional parameters, output schema, no annotations), the description is exceptionally complete. It covers all parameters, provides usage examples, discloses limitations (CONUS, approximate detection, data source), and includes example queries. It fully compensates for the lack of annotations and schema descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully explains all 7 parameters. It details product (analysis vs forecast, day usage), detail (standard vs full), scope (local vs all with 400km threshold), units (with field overrides), and lat/lon (optional, defaults to primary). This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves surface analysis or forecast showing fronts, pressure centers, and warm/cold sectors. It provides specific verb-resource pairs like 'Get surface analysis' and 'Returns distance and bearing,' and distinguishes it from sibling tools like get_conditions and get_forecast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a 'Use when:' section with example queries, explains when to use 'analysis' vs 'forecast' and 'local' vs 'all' scope, and explicitly states what is not included (mesoscale boundaries). It gives clear guidance on when to invoke this tool versus others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_upper_airA

Get 500mb upper-air forecast with heights, temperature, wind, and vorticity.

Use when: "What does 500mb look like?", "Where are the troughs?", "Upper-air pattern?", "Jet stream?", "Vorticity?"

500mb (~18,000 ft) is the key level for synoptic-scale pattern recognition:

  • Heights reveal troughs (low heights, stormier) and ridges (high heights, calmer)

  • Vorticity maxima indicate regions favorable for storm development

  • Wind shows the jet stream position and strength

Returns 12-hour time series with height (dam), temperature, wind, and derived relative/absolute vorticity (10^-5 s^-1) from a 5-point finite-difference grid at ~110km spacing.

Not US-only — uses global GFS model data via Open-Meteo. Omit lat/lon to use configured primary location.

units: "us" or "si" for base system, with optional field overrides: "us,pressure:mb,wind:kt". Fields: temperature (f|c), pressure (inhg|mb), wind (mph|kt|kmh|ms), distance (mi|km), accumulation (in|mm|cm).

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNo
longitudeNo
unitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of disclosure. It details the return structure (12-hour time series, height in dam, temperature, wind, relative/absolute vorticity in 10^-5 s^-1), explains the underlying model (global GFS via Open-Meteo) and grid spacing (~110km), and clarifies that it's not region-restricted. There are no contradictions or omissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear introduction, usage cues, scientific context, and parameter details. It uses bullet-like formatting and line breaks for readability. However, it is relatively long; some sentences could be merged or trimmed without losing value, justifying a 4 rather than a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of an upper-air forecast tool with 3 parameters and an output schema (not shown), the description covers all necessary aspects: purpose, usage scenarios, scientific background, parameter behavior, and output details. It distinguishes itself from siblings like get_surface_analysis and get_spc_outlook, and the presence of an output schema reduces the need to describe return format further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains all three parameters: latitude and longitude can be omitted for a default location, and units are described in depth with examples ('us' or 'si' with field overrides like 'pressure:mb,wind:kt'). This adds significant meaning beyond the schema's basic types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get 500mb upper-air forecast with heights, temperature, wind, and vorticity.' It specifies the resource (500mb upper-air forecast) and the verb (get), and the inclusion of derived quantities like vorticity distinguishes it from siblings like get_surface_analysis or get_forecast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use when:' phrases like 'What does 500mb look like?' and 'Where are the troughs?', giving clear contextual cues. It also advises omitting lat/lon for default location and notes it is not US-only. However, it does not explicitly state when not to use or provide alternatives to this tool, which would elevate it to a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool targets a distinct weather data type (alerts, conditions, forecast, radar, etc.) with no overlap. The get_briefing tool is a composite but clearly documented as a summary tool, avoiding confusion.

Naming Consistency5/5

All tool names follow the consistent pattern 'get_<noun>', making it easy to predict the function from the name. No mixing of conventions or irregular verbs.

Tool Count5/5

9 tools is well-scoped for a comprehensive weather server, covering all major aspects (alerts, conditions, forecast, radar, severe weather outlooks, surface analysis, upper air) without being overwhelming.

Completeness4/5

The tool set covers the core weather domain thoroughly. Minor gaps exist (e.g., marine forecasts, climate data) but are beyond the stated scope. The briefing tool effectively fills the need for an overview.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to access real-time US weather forecasts and alerts through the National Weather Service API.
    2
    21
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time weather alerts and forecasts from the National Weather Service for US locations, integrating with AI assistants via the Model Control Protocol.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides weather forecasts and alerts for US locations via the National Weather Service API, enabling AI assistants to deliver real-time weather information.
    28

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thornjad/stormscope'

If you have feedback or need assistance with the MCP directory API, please join our Discord server