nws-weather-mcp-server
Server Details
Get US weather forecasts, active alerts, and current observations.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/nws-weather-mcp-server
- GitHub Stars
- 1
- Server Listing
- @cyanheads/nws-weather-mcp-server
Available Tools
7 toolsnws_find_stationsNws Find StationsARead-onlyInspect
Find weather observation stations near a location. Returns stations sorted by proximity with distance and bearing. Use to discover station IDs for nws_get_observations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max stations per page (1-50). totalCount still reports every station near the point, so pass the returned nextCursor as cursor to reach the rest. | |
| cursor | No | Opaque continuation token from a previous response's nextCursor. Omit for the first page. The token carries its own page size, so limit applies to the first page only. Every call re-fetches the station list, so pages are contiguous within one response; the registry changes rarely, but a later call can window an updated list. | |
| latitude | Yes | Center latitude for proximity search. | |
| longitude | Yes | Center longitude for proximity search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of stations returned in this page |
| notice | No | Guidance when no stations were found near the requested coordinates, when stations remain beyond this page, or when the supplied cursor points past the end of the list. |
| stations | No | Nearby stations sorted by distance |
| nextCursor | No | Opaque token for the next page of stations — pass it back as `cursor`. Omitted when this is the last page. |
| totalCount | No | Total observation stations available near this location before the page limit was applied — NOT the number returned in this page, which is shown. Same value on every page of one query; compare it against shown to tell whether stations were withheld. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already declares the tool is read-only, and the description does not contradict this. The description adds behavioral context by noting the results are sorted by proximity and include distance and bearing, which is useful but not extensive. Since annotations cover the safety profile, the description adds moderate value but doesn't go deeper into response format or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero wasted words. The primary purpose is front-loaded, followed by the output format and a clear usage pointer. It is compact yet informative, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and parameter descriptions are fully covered in the input schema, the description only needs to convey purpose and usage, which it does thoroughly. It explains the discovery workflow and the relationship to a sibling tool, so nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (latitude, longitude, limit, cursor) already has a detailed description in the schema. The description itself does not add additional parameter meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find', the resource 'weather observation stations', and the spatial scope 'near a location'. It also mentions the output order (by proximity with distance and bearing) and links to a specific consumer (nws_get_observations), making it distinct from sibling tools like forecasts, alerts, and discussions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use to discover station IDs for nws_get_observations.' This gives clear context and implies a specific workflow. While it doesn't explicitly mention alternatives or when not to use it, the linkage to a sibling tool and the distinct purpose provide adequate guidance for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_get_forecastNws Get ForecastARead-onlyInspect
Get the weather forecast for a US location. Returns either named 12-hour periods (default) or hourly breakdowns.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque continuation token from a previous response's nextCursor, to retrieve the next 48 periods. Omit for the first page. Every call re-fetches the forecast, so consecutive periods are contiguous within one response; NWS reissues forecasts through the day, so a later call can window a regenerated period array. | |
| hourly | No | If true, returns hourly forecast (48 one-hour periods per page, ~156 available) instead of 12-hour named periods (14 periods). Hourly includes dewpoint and relative humidity. | |
| latitude | Yes | Latitude in decimal degrees (e.g., 47.6062). | |
| longitude | Yes | Longitude in decimal degrees (e.g., -122.3321). |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Forecast mode: "hourly" or "7-day" |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of forecast periods in this page (at most 48). |
| notice | No | Set when periods remain beyond this page, or when the supplied cursor points past the end of the period array. |
| periods | No | Forecast periods |
| location | No | Resolved location metadata |
| nextCursor | No | Opaque token for the next page of periods — pass it back as `cursor`. Omitted when this is the last page. |
| totalCount | No | Total forecast periods available upstream before the page window was applied — NOT the number in this page, which is shown. Compare it against shown to tell whether periods were withheld. |
| generatedAt | No | When the forecast was generated (ISO 8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the tool is known to be safe and non-mutating. The description adds the information that two output modes exist (named 12-hour periods or hourly), but this is already fully documented in the 'hourly' parameter schema. Since the description contributes little beyond what annotations and schema already convey, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-formed sentence that front-loads the primary purpose and immediately follows with the key behavioral distinction (two output formats). Every word carries meaning, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the schema fully documents parameters, the output schema exists, and the read-only annotation is present, the description is sufficient for an agent to invoke the tool correctly. The only minor gap is that it does not explain pagination behavior, but that is handled in the cursor parameter description, so completeness is good. A slight deduction for the lack of any mention of how to handle the hourly vs named-period choice in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for all four parameters, including format details for latitude/longitude and the meaning of 'hourly' and 'cursor'. The description does not add any new parameter context beyond what the schema already states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get the weather forecast') and the resource ('a US location'), and it adds the distinguishing detail of returning either 12-hour named periods or hourly breakdowns. This makes the tool's purpose explicit and differentiates it from sibling tools like observations or office discussion without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as nws_get_zone_forecast or nws_get_observations. It does not mention any exclusions, prerequisites, or hints about choosing between forecast modes. An agent must infer usage context from external knowledge, which is a significant gap given the sibling toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_get_observationsNws Get ObservationsARead-onlyInspect
Get current weather observations (actual measured conditions). Accepts coordinates (resolves nearest station automatically) or a station ID directly (e.g., "KSEA").
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | Latitude for automatic station resolution. Use with longitude. Ignored if station_id is provided. | |
| longitude | No | Longitude for automatic station resolution. Use with latitude. Ignored if station_id is provided. | |
| station_id | No | Station identifier directly (e.g., "KSEA", "KORD"). Use nws_find_stations to discover station IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when the latest observation is more than 2 hours old — data may not reflect current conditions. |
| station | No | Station ID that served the observation (e.g., "KSEA") |
| timeZone | No | Station time zone when known |
| dewpointC | No | Dewpoint in Celsius |
| stationId | No | Observation station ID |
| timestamp | No | Observation time (ISO 8601) |
| heatIndexC | No | Heat index in Celsius |
| observedAt | No | Observation timestamp (ISO 8601) |
| windChillC | No | Wind chill in Celsius |
| cloudLayers | No | Cloud layer information |
| stationName | No | Station name |
| visibilityM | No | Visibility in meters |
| windGustKmh | No | Wind gust in km/h |
| temperatureC | No | Temperature in Celsius |
| windSpeedKmh | No | Wind speed in km/h |
| textDescription | No | Conditions summary (e.g., "Mostly Cloudy") |
| windDirectionDeg | No | Wind direction in degrees (0-360) |
| relativeHumidityPct | No | Relative humidity in percent (0-100) |
| barometricPressurePa | No | Barometric pressure in Pascals |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint is true and the description does not contradict it (says 'get', a read operation). Beyond the annotation, it discloses a key behavior: automatic nearest-station resolution when coordinates are provided. This adds meaningful context beyond the schema and annotations, justifying a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core purpose and then covers both input methods without any redundant words. Every phrase contributes value, and it is immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a full output schema and 100% parameter documentation, the description covers the essential usage: giving coordinates or a station ID. It does not explicitly mention that station_id overrides coordinates (though the schema does) or that only one input method should be used, but that is covered structurally. Overall, an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a clear description (e.g., latitude says 'for automatic station resolution'). The description adds no new parameter semantics beyond an example station ID and a pointer to nws_find_stations, which the schema already implies. Baseline 3 is appropriate when the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb 'Get' and resource 'current weather observations', with the parenthetical 'actual measured conditions' clearly differentiating from forecast tools. The description also names both input methods (coordinates and station ID), making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (for current measured conditions rather than forecasts) and references nws_find_stations for station ID discovery, but does not explicitly contrast with sibling tools like nws_get_forecast or state when *not* to use it. The context is clear, but explicit alternatives are missing, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_get_office_discussionNws Get Office DiscussionARead-onlyInspect
Get the latest narrative forecast product from a Weather Forecast Office (WFO). The default product is AFD (Area Forecast Discussion), which explains the meteorological reasoning behind the forecast — synoptic setup, model guidance, and forecaster confidence. Other types: HWO (Hazardous Weather Outlook, 1-7 day severe/flood/winter outlook), ZFP (Zone Forecast Product, zone-by-zone text), SPS (Special Weather Statement, short-fuse advisory). The office code is the 3-letter WFO identifier returned as the "office" field by nws_get_forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| office | Yes | Three-letter Weather Forecast Office (WFO) code (e.g., "SEW" for Seattle, "LOX" for Los Angeles). Returned as the "office" field in nws_get_forecast output. | |
| product_type | No | Product type code. AFD (Area Forecast Discussion) — meteorological reasoning, model analysis, forecaster confidence. HWO (Hazardous Weather Outlook) — 1-7 day outlook for severe weather, flooding, winter weather. ZFP (Zone Forecast Product) — detailed zone-by-zone text forecast. SPS (Special Weather Statement) — short-fuse advisory for notable non-warning weather. | AFD |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| productCode | No | Product type code (e.g., "AFD"). |
| productName | No | Full product name (e.g., "Area Forecast Discussion"). |
| productText | No | Full narrative product text as issued by the forecaster. AFDs are typically 1,000-3,000 words covering synoptic setup, model guidance, and period-by-period reasoning. |
| issuanceTime | No | When the product was issued (ISO 8601), e.g., "2026-05-30T10:33:00+00:00". |
| issuingOffice | No | Issuing office call sign (e.g., "KSEW"). Includes the K/P prefix, unlike the input office code. |
| wmoCollectiveId | No | WMO collective identifier (e.g., "FXUS66"). Identifies the product family in international message routing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is known to be a safe read operation. The description does not contradict this. It adds context about product types, which is more about output content than behavior. It does not disclose any potential side effects (none expected), rate limits, or error conditions, but given the read-only nature and output schema availability, this is acceptable but not enriched beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starting with the primary purpose and then enumerating product types with brief explanations. Each sentence earns its place, and no fluff or redundancy exists. The structure front-loads the core function and flows logically to supporting details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return formats are covered there. The description covers the essential parameters and product types, and mentions the source of the office code. It is complete for a simple read-only tool. It could theoretically mention that the output is free text, but that is implicit and handled by the output schema. Overall, nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (office and product_type) having detailed descriptions in the schema. The description repeats the product type explanations, adding little beyond the schema. The only additional value is the mention that office comes from nws_get_forecast, but the schema already says that. Since the schema carries the load, the description does not meaningfully enhance parameter understanding, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving the latest narrative forecast product from a WFO. It names the default product (AFD) and lists the other product types, distinguishing it from siblings like nws_get_forecast (which likely provides structured forecast data) and nws_get_zone_forecast (which may return similar text but focused on zones). The verb 'get' and resource 'office discussion' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool by explaining what each product type is (e.g., AFD explains reasoning, HWO is an outlook, etc.). It also references nws_get_forecast as the source for the office code, which is helpful for chaining. However, it does not explicitly state when to prefer this over nws_get_zone_forecast or other siblings, leaving that to inference from the product descriptions. Still, the guidance is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_get_zone_forecastNws Get Zone ForecastARead-onlyInspect
Get the text forecast for a public NWS forecast zone. Returns named forecast periods (e.g., "Today", "Tonight", "Monday") with detailed narrative text — the human-readable, zone-level forecast written by local forecasters. Completes the alert-to-forecast chain: nws_search_alerts returns each affected zone in "affectedZones" as a code plus a type, and nws_find_stations returns codes in the "forecastZone" column. Only affectedZones entries with type "forecast" work here; entries typed "county" or "fire" have no text forecast upstream and will not resolve. Zone codes follow the pattern XXZ### (e.g., "WAZ315" for Western Washington lowlands).
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | NWS public forecast zone code (e.g., "WAZ315" for the Western Washington lowlands including Seattle). Returned as "forecastZone" by nws_get_forecast and nws_find_stations, or as the "code" of an "affectedZones" entry with type "forecast" in nws_search_alerts. Format: two-letter state + "Z" + three-digit number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| zoneId | No | Zone ID as provided (e.g., "WAZ315"). |
| periods | No | Forecast periods in chronological order, typically covering 7 days. |
| updated | No | When the zone forecast was last updated (ISO 8601 with timezone offset). |
| periodCount | No | Number of forecast periods returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description does not contradict this. The description adds meaningful behavioral context: it describes the return content (named periods, narrative text), the constraint that only 'forecast' type zones resolve, and the zone code pattern. This goes beyond the annotation without being excessive, though it omits potential error behaviors or rate limits, which are not critical given the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence carries useful information: primary purpose, return structure, integration hints, and a usage constraint. It is front-loaded with the core purpose and then elaborates. There is minimal redundancy; the only slightly verbose part is the explanation of the alert-to-forecast chain, but that is directly relevant for correct parameter selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects: what the tool does, how to obtain a valid parameter, what constraints exist, and the nature of the output. Since an output schema exists, the return format need not be fully explained. While it doesn't explicitly list alternate tools for comparison, it gives enough context to avoid confusion. The integration with sibling tools is well documented, making it complete for an agent's selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing a clear baseline. The description adds extra semantic value by explaining the zone ID pattern ('XXZ###'), giving a concrete example, and specifying how the ID can be obtained from other tools (as 'forecastZone' or from 'affectedZones'). This context helps the agent correctly construct the parameter beyond what the schema alone offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), resource ('text forecast for a public NWS forecast zone'), and outcome (returns named periods with narrative text). It also gives concrete examples of zone codes and clearly distinguishes the zone-level forecast from other forecast types, making the tool's role unambiguous even among siblings like nws_get_forecast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to obtain a valid zone_id from sibling tools (nws_search_alerts, nws_find_stations) and explicitly restricts usage to affectedZones entries with type 'forecast', excluding 'county' and 'fire' types. While it doesn't explicitly compare to nws_get_forecast, it provides clear context for when this tool should be used, and the exclusion of non-forecast types gives actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_list_alert_typesNws List Alert TypesARead-onlyInspect
List all valid NWS alert event type names. Use to discover valid values for the event filter in nws_search_alerts, or to browse alert categories. No parameters required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | Number of event types |
| error | No | Present when the call failed. Absent on success. |
| eventTypes | No | Alert event type names sorted alphabetically |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals that this is a safe read operation. The description adds the specific behavioral context that the tool returns a list of alert type names, which is beyond the annotation's binary read-only signal. While it does not mention rate limits or authentication, those are not critical for a simple listing tool, and the annotation covers safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short, purposeful sentences. The first states the core action, the second gives usage context, and the third clarifies the lack of parameters. There is no fluff or redundancy, and the most important detail is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only list tool, the description is complete. It explains what the tool returns (alert event type names), why it is used (to feed the event filter in nws_search_alerts or to browse), and that it requires no inputs. The output schema (present but not shown) would cover return format details, so nothing is missing from the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the rubric sets a baseline of 4. The description's note 'No parameters required' reinforces what the empty schema already implies but does not contradict it. There is nothing more to explain about params since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List all valid NWS alert event type names.' It clearly distinguishes this tool from siblings by stating its purpose is to provide valid values for the event filter in nws_search_alerts. This removes any ambiguity about what the tool does and its place among the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use to discover valid values for the event filter in nws_search_alerts, or to browse alert categories.' It gives a clear primary use case tied to a sibling tool, and a secondary browsing use, leaving no doubt about when an agent should invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nws_search_alertsNws Search AlertsARead-onlyInspect
Search active weather alerts (watches, warnings, advisories) across the US. Filter by state, coordinates, zone, land/marine region, event type, severity, urgency, or certainty. area, point, zone, region_type, and region are mutually exclusive — provide at most one. Omit all filters for a national search.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | US state/territory code (e.g., "WA", "OK", "PR") or marine area code (e.g., "GM"). Mutually exclusive with point and zone. | |
| zone | No | NWS forecast zone (e.g., "WAZ558") or county zone (e.g., "WAC033"). Mutually exclusive with area and point. | |
| event | No | Filter to specific event types (e.g., ["Tornado Warning"]). Matches are case-insensitive and partial, so "tornado" matches both "Tornado Warning" and "Tornado Watch". Use nws_list_alert_types to discover valid names. | |
| limit | No | Maximum number of alerts to include in this page (1-25, default 25). totalCount still reports the full number of distinct matches, so a small limit returns a digest of broad or national searches without dropping the total; pass the returned nextCursor as cursor to reach the rest. | |
| point | No | Coordinates as "lat,lon" (e.g., "47.6,-122.3"). Returns alerts whose geometry contains this point. Mutually exclusive with area and zone. | |
| cursor | No | Opaque continuation token from a previous response's nextCursor. Omit for the first page. The token carries its own page size, so limit applies to the first page only. Every call re-fetches /alerts/active, so alerts are contiguous within one response but not across calls — the active set changes continuously as alerts are issued and expire, so a continued page covers the collection as it stands at that moment. | |
| region | No | Restrict to NWS marine region groups: "AL" (Alaska waters), "AT" (Atlantic Ocean), "GL" (Great Lakes), "GM" (Gulf of Mexico), "PA" (Eastern Pacific and US West Coast), "PI" (Central and Western Pacific). Marine alerts only — a land alert never matches. Mutually exclusive with area, point, zone, and region_type. | |
| status | No | Alert status filter. Default "Actual". Use a different value only when you specifically need non-live alerts. | Actual |
| urgency | No | Filter by urgency level. | |
| severity | No | Filter by severity level. | |
| certainty | No | Filter by certainty level. | |
| region_type | No | Restrict to land-based or marine alerts. Mutually exclusive with area, point, zone, and region. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of alerts included in this response |
| alerts | No | Matching alerts for this page (at most the requested limit, max 25) |
| notice | No | Guidance when no alerts matched (echoes applied filters and suggests how to broaden), when matches remain beyond this page, or when the supplied cursor points past the end of the match set. |
| nextCursor | No | Opaque token for the next page of matches — pass it back as `cursor`. Omitted when this is the last page. |
| totalCount | No | Total distinct alerts matching the filters in this fetch, before the page window is applied. NWS repeats some alerts verbatim within one response; the copies are collapsed on id, so this counts each alert once. Compare against shown to tell whether matches were withheld from this page. |
| appliedFilters | No | Summary of applied search filters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description takes on the burden of behavioral detail. It discloses non-obvious behavior: case-insensitive/partial event matching, pagination mechanics (cursor carries its own page size, limit applies only to first page), and that each call re-fetches /alerts/active so results are contiguous within a response but not across calls. This is exactly the kind of context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. The core purpose and filter list come first, followed by the mutual-exclusivity rule and the national-search fallback. It avoids repetition and packs the most critical operational details (pagination, event matching) into the schema descriptions, which is appropriate. Slight verbosity in listing every filter type, but it's a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 12 optional parameters and an output schema, the description covers all necessary operational aspects: the search scope, how each filter works, mutual exclusivity, pagination, and how to handle the cursor. It cross-references nws_list_alert_types for event discovery, which closes a potential knowledge gap. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds substantial value beyond the schema: clarification of event matching (case-insensitive, partial), the meaning of totalCount with small limits, the behavior of cursor tokens, and the interpretation of region codes. It also reinforces the mutual-exclusivity rule for the group of parameters. This transforms ambiguous filters into actionable guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb+resource: "Search active weather alerts (watches, warnings, advisories) across the US." It immediately distinguishes the tool from siblings like nws_get_forecast or nws_get_observations. It also clearly enumerates filter dimensions, leaving no doubt about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: how to filter (state, coordinates, zone, etc.), states the mutual-exclusivity rule, and explicitly covers the national-search case ("Omit all filters"). It points to nws_list_alert_types for discovering valid event names. It doesn't explicitly name alternatives or say when not to use this tool, but the sibling tools are different enough that this is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
US weather alerts from NWS: warnings, watches, advisories by state. $0.01/query.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Provide real-time and forecast weather information for locations in the United States using natura…
Fetch METARs, TAFs, PIREPs, and domestic SIGMETs from the NWS Aviation Weather Center.
Related MCP Servers
- FlicenseBqualityDmaintenanceProvides weather forecasts and active alerts from the US National Weather Service API for US locations.2
- FlicenseNot gradedqualityDmaintenanceProvides weather forecasts, current conditions, and alerts for US locations using the National Weather Service API.1
- AlicenseNot gradedqualityDmaintenanceProvides US weather alerts and forecasts via the National Weather Service API.80GPL 3.0
- AlicenseNot gradedqualityDmaintenanceProvides weather alerts and forecasts for US locations using the National Weather Service API.80GPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool targets a distinct data product (stations, forecast, observations, office discussion, zone forecast, alert types, alerts). Forecast-related tools are clearly differentiated by granularity and purpose, though get_forecast and get_zone_forecast could be confused by users unfamiliar with NWS terminology.
All tool names follow the consistent pattern nws_verb_noun in snake_case (e.g., find_stations, get_forecast, list_alert_types). This makes the API highly predictable and easy to navigate.
Seven tools is well within the ideal 3-15 range for a weather-focused server. Each tool covers a major NWS data category without unnecessary redundancy, making the set feel tight and purposeful.
The tool set covers the core weather workflow: station discovery, observations, forecasts, zone text, office discussions, and alert searching. Minor gaps like marine-specific products or radar imagery exist, but the essential weather information needs are well covered.