MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Communication & messaging

Smarter Weather

Smarter Weather MCP: forecasts, alerts, outlooks, observations, AQI, grids, and map imagery.

Checks passed
15 / 22

0 failed · 7 not measured

Median response
1010 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
13

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 1065 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name sw-mcp.

  • Pass
    Lists tools

    tools/list returned 13 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 1010 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 1060 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    149 of 149 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Not measured
    Website matches publisher

    This namespace is not a reverse domain, so the website comparison does not apply.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Pass
    Repo owner matches

    The GitHub repository owner matches the namespace login.

  • Pass
    Recently updated

    Updated 2026-10-20T22:51:13.762755Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using Smarter Weather

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http smarter-weather https://mcp.smarterweather.com

Capabilities

Tools 13

call_tool

Runs a tool find_tools lists, by name: same price, limits and result as calling it directly. Tools already in your list are called directly, not through this. `arguments` follows that tool's input schema.

Discovered
describe_data

A dataset's variables or properties (standard names, units, categories, bands, aggregates), horizon, step, cadence, freshness, cost class, verified `examples` and an example_query to read its values; a map layer's axes (source, region, facts) and render (visual) call. Free. Call it when a grid or snapshot hit's `call` lacks the variable you need (with no `variable`, it may read only the headline one), or to check units, horizon or cost; not needed when the hit's `call` already names what you need: run that. Example: {"dataset_id": "<from search_data>"}.

Discovered
find_places

Find places: a name, ZIP, venue or address to ranked candidates with lat/lon, or coordinates to the place and timezone. Pass `query` or `lat`+`lon`; rows carry `type` place|zip|address|poi|county|station, `matched_via: "autosuggest"` marks fallback rows and `partial` a timed-out section. Weather tools take `location`; use this to disambiguate or name a point. Example: {"lat": 39.74, "lon": -104.99} -> Denver, Colorado, America/Denver.

Discovered
find_tools

Lists the weather tools this connection does not show (best times, routes; storm cells, storm reports, lightning; outlooks, forecaster text; forecast accuracy; maps and charts), with when to use each and its required arguments. Run one with call_tool, in this session, no reconnect. With `tools`, returns their full input schemas. Free; no network call.

Discovered
get_alerts

NWS watches, warnings and advisories in effect at a place (`location`), over a `bbox`, or over a state or county as `area` {product, feature_id} (find_places `boundaries` hands those back), now or at a past instant (`at`). Narrow with `filter` over event, severity, urgency or certainty, and page past 50 with `cursor`; an alert's id is its group_id (each alert's `id`), or its current CAP `message_id`, and `filter` on either with `view: detailed` returns its full text and geometry. Empty means all clear or purged (about 24 h), and a city with none is not a statewide all-clear. Example: {"location": "Wichita, KS", "filter": ["event in Tornado Warning,Severe Thunderstorm Warning"]}.

Discovered
get_current_conditions

Current weather right now at a place: the observed analysis at the exact point (temperature, dew point, relative humidity derived from them, wind speed, direction and gusts, pressure, visibility, cloud cover) plus the nearest station report. Values are in `units` (imperial by default; labels in analysis.units); nearest_station is the report as filed, with its distance in meters, and a forecast is get_forecast. Example: {"location": "Pella, IA"}.

Discovered
get_data

Values, totals, comparisons, people/POI counts, station observations, upper-air profiles, climate records, normals, degree days, teleconnection indices and forecaster text from any catalog dataset (models, radar, alerts, outlooks, tropical cyclones, aircraft recon, reference layers) at a place or several, over a bbox or area, along a path, or as items. `select` takes `product:variable` or `product:property` tokens, a standard name or a concept (`population`); send one space word and at most one time word (hours, start+end or at; run pins a cycle); `stats` reduces per `step` or over the area; omit units for SI. Example: {"select": ["temperature_2m"], "locations": ["Savannah, GA", "Macon, GA"], "hours": 36}.

Discovered
get_forecast

Forecast for one US place: current conditions, daily forecast with sunrise and sunset, active alerts and outlooks in one call, hour by hour with include=hourly, and air quality (AQI) with include=aqi; several places: get_data with `locations`. Blended across NBM, HRRR, GFS, RTMA and SPC; times are UTC ISO 8601, quote daily[].astro.local as local, and if forecast.location.timezone_resolved is false state times as UTC. For hours set `hours` (next N) or `start`+`end` for one stretch hour by hour, and check hourly_coverage (first_time, last_time, truncated) before answering about a specific hour; past last_time say the forecast does not reach that far. Example: {"location": "Portland, OR", "include": "hourly", "hours": 24}.

Discovered
get_forecast_distribution

Probabilistic forecast guidance for one aspect, from severe risk to aviation ceilings: percentiles (p10 to p90), exceedance probabilities and ensemble spread, for the odds, ranges or confidence one forecast value cannot answer. Read p50 as the likely outcome, p90 as the reasonable worst case when the risk is the high end (snow, wind, rain) and p10 when it is the low end (cold, visibility, ceiling). Aspects: precip, snow, ice, temperature (daily high and low ranges), wind, severe (thunderstorm and severe-environment odds; SPC tornado, hail and wind odds are get_outlooks (guidance)), aviation (ceiling and visibility odds) and confidence (spread). Example: {"location": "Denver, CO", "aspect": "snow", "hours": 72}.

Discovered
get_observed_precipitation

How much rain fell: observed precipitation totals at a place over trailing 1 to 72 h windows (`hours`, default 24), or ending at a past time (`end` with `start`), from radar estimates bias-corrected to rain gauges. Values have about 0.08 in (2 mm) resolution, so 0 means under about 0.04 in, and data runs about an hour behind; `product: nowcast` adds the next hour's radar nowcast (peak intensity, type and start, not an amount). Example: {"location": "Chicago, IL", "hours": 24}.

Discovered
get_status

Data freshness of the weather platform (no inputs needed; refreshed about every 5 minutes): overall state, per-source states (ok / degraded / outage / no_signal), open incidents with their cause (provider outage vs internal processing delay) and active provider advisories. Use it when asked whether data is current, or when other tools return stale-looking data. If a source is degraded or in outage, say the data may be stale rather than presenting it as live. Example: {}.

Discovered
get_time_context

Local time, timezone, a 14-day calendar with day names and Today/Tomorrow labels, sunrise, sunset and solar times, and moon phase and rise and set for a place. Use it to reason about dates, times or daylight there ("when is sunset?", "is it dark there now?"); when current_time.timezone_resolved is false, state times in UTC. Example: {"location": "Seattle, WA"}.

Discovered
search_data

Search the data catalog: which dataset's values answer a question about weather and the people and places it affects, or what data exists at a point. With `query` it ranks datasets and map layers and returns hits with the next `call` (a named place fills its `area`; add a place if `note` asks) and any verified `example`; without it, it lists datasets at the place with freshness, or all. A place or `domain` keeps datasets covering it; `kind` and `family` filter a listing, rank a query; describe_data lists other variables for get_data. Example: {"query": "snow depth", "location": "Erie, PA"}.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected1065 ms13
Connected955 ms13