accueil / serveurs / Géo & Temps / io.github.smarterweather/weather
io.github.smarterweather/weather
serveur MCP (Model Context Protocol) · sw-mcp 0.0.0.220
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.smarterweather/weather est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.smarterweather/weather » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 14 outils
- describe_dataset≈ 310 tokens
Variables available in a dataset, with standard names, units, descriptions, and the time range of available data. Use before query_dataset to discover valid variable names. Example: {"dataset_id": "nbm_conus"}.
Paramètres, retour & exemple (1)
Paramètresdataset_id· string · requis
Pipeline dataset identifier (e.g. "nbm_conus", "mrms_reflectivity_conus"). Discover valid values with list_datasets; inspect variables with describe_dataset.
Exemple d'appel{"name": "describe_dataset", "arguments": {"dataset_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"detail": {}, "dataset_id": "texte", "attribution": "texte"}} - get_alerts≈ 843 tokens
NWS watches, warnings, advisories. Point (city/ZIP/lat+lon): containing polygons. BBox or US state/DC/CONUS (codes, full names, US/national): intersecting polygons. A city miss is not a statewide all-clear — query the state or a bbox; never say regional inventory is impossible. NY/WA and "New York State"/"Washington State" are states; "New York"/"Washington" stay cities. Omit at for now; at (ISO-8601 UTC) is the snapshot then. Empty = all-clear or purged (~24h). alert_id = detail+geometry, ignores at. Ex: {"location":"WI","events":["Tornado Warning"]}.
Paramètres, retour & exemple (7)
Paramètresat· string · optionnel
ISO-8601 UTC past instant for the in-effect snapshot. Ignored with alert_id.lat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).bbox· object · optionnel
Bounding box {west,south,east,north}. Skips geocoding; intersecting polygons.events· array · optionnel
Optional event-name filter, e.g. ["Tornado Warning"].alert_id· string · optionnel
Alert identifier for detail mode. When set, location is ignored.location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.
Exemple d'appel{"name": "get_alerts", "arguments": {"at": "texte", "lat": 1, "lon": 1, "bbox": {}, "events": [], "alert_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"alert": {}, "alerts": "texte", "widget": {}, "alert_id": "texte", "location": {}, "valid_time": "texte"}} - get_current_conditions≈ 841 tokens
Current weather right now at a location from two independent sources in one call: the RTMA gridded analysis (exact-point values, updated sub-hourly) and the nearest METAR station observation (ground truth with raw METAR, flight category). Use the analysis for point-accurate values and the station for verification. Analysis fields: temperature_2m, dew_point_2m, relative_humidity_2m (derived here from temperature and dew point; listed in analysis.derived), wind_speed_10m, wind_direction_10m, wind_gusts_10m, surface_pressure (station pressure at ground level, not sea-level pressure), visibility, cloud_cover, cloud_ceiling, in units (labels in analysis.unit_labels). nearest_station is the station's own report, unconverted. For a forecast, use get_forecast. Example: {"location": "Pella, IA"}.
Paramètres, retour & exemple (4)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).units· string · optionnel · imperial | metric | si
imperial (default; °F, mph, inHg, mi, ft) or metric (°C, km/h, hPa, km, m); si returns K, m/s, Pa, m. si is deprecated and will be removed; use metric. Not applied to nearest_station.location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.
Exemple d'appel{"name": "get_current_conditions", "arguments": {"lat": 1, "lon": 1, "units": "imperial", "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"units": "imperial", "analysis": "texte", "location": {}, "nearest_station": "texte"}} - get_forecast≈ 1025 tokens
Complete weather overview for a location: current conditions, daily forecast (SPC threats, severity; view "detailed" adds CAPE, UV, full day/night periods), active alerts, and outlooks in one call. Pre-aggregated across NBM, HRRR, GFS, RTMA, and SPC and unit-converted server-side. Primary weather tool; reach for lower-level tools only when you need raw observations or a specific dataset. Times are UTC ISO 8601; quote daily[].astro.local to users, not UTC. If forecast.location.timezone_resolved is false, zone unknown: state times as UTC, never as local. Accepts a place name directly. Examples: {"location": "Denver, CO"} or {"location": "Portland, OR", "days": 5} or {"lat": 41.4, "lon": -92.9}.
Paramètres, retour & exemple (8)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).days· integer · optionnel
Number of forecast days (1-14). Default 10.view· string · optionnel · concise | detailed
concise (default; REST's is detailed), ~5-10KB: daily has day_precip_probability / night_precip_probability (precip_probability is their max). detailed, ~12-20KB: adds CAPE, UV, full day/night periods, extra hourly fields.units· string · optionnel · imperial | metric | si
Units of every value in and out: imperial (default; °F, mph, in) or metric (°C, km/h, mm). si is deprecated and will be removed; use metric.include· string · optionnel
Comma-separated sections: current, daily, hourly, alerts, outlooks. Default "current,daily,alerts,outlooks". Use get_hourly_forecast for hourly detail.location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.detail_level· string · optionnel · standard | detailed
Deprecated alias of view.
Exemple d'appel{"name": "get_forecast", "arguments": {"lat": 1, "lon": 1, "days": 1, "view": "concise", "units": "imperial", "include": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"units": "texte", "widget": {}, "forecast": {}, "location": {}, "data_status": {}}} - get_forecast_distribution≈ 1278 tokens
NBM probabilistic guidance for one weather aspect: percentiles (p10-p90), exceedance probabilities and ensemble spread. Use this for any question about odds, ranges, potential or confidence ("how much could we get", "range of possible highs", "how sure is this") -- a deterministic forecast value cannot answer one. Reading the percentiles: p50 is the most likely outcome, p90 is the reasonable worst case when the risk is the high end (snow totals, wind, rainfall), and p10 when the risk is the low end (cold, visibility, ceiling). A single percentile is not the forecast -- report the likely value with the tail that matters, and label which is which. Aspects: precip (PoP, QPF + percentiles), snow (accumulation percentiles, >1/2/4in probabilities, snow level, snow-type probability), ice (ice accretion, freezing-rain / ice-pellet probabilities), temperature (`daily` high/low p10/p50/p90: the NBM value -/+ 1.28 stddev; hourly temp + stddev), wind (speed/gust percentiles), severe (thunderstorm probability plus NBM CWASP, a severe-environment index, both in percent: severe_weather_prob_p50 is the median CWASP value and severe_weather_prob_above_75 the probability CWASP exceeds 75; NBM has no tornado, hail or damaging-wind odds; SPC's: get_outlooks (guidance) hazard=severe), aviation (LIFR/IFR/MVFR visibility + ceiling odds), confidence (ensemble stddev; low = settled, high = details still in play). Labels in unit_labels. Example: {"location": "Denver, CO", "aspect": "snow", "hours": 72}.
Paramètres, retour & exemple (6)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).hours· integer · optionnel
Forecast hours; default 48-72 by aspect.units· string · optionnel · imperial | metric | si
imperial (default; °F, mph, in) or metric. si is deprecated and will be removed; use metric.aspect· string · requis · precip | snow | ice | temperature | wind | severe | aviation | confidence
Distribution family (see description).location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.
Exemple d'appel{"name": "get_forecast_distribution", "arguments": {"aspect": "precip"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"daily": {}, "hours": 1, "units": "imperial", "aspect": "precip", "series": [], "location": {}}} - get_hourly_forecast≈ 1121 tokens
Blended hourly forecast: temperature, feels-like, humidity, wind, precipitation probability/amount, conditions, and icon per hour. hourly[0] is the current or next hour; hourly_coverage.first_time says which. Timestamps are UTC ISO 8601; convert to the local timezone before presenting. Ask for the days you need up front -- one call with days: 4 beats four calls. ALWAYS check hourly_coverage before answering about a specific hour: it reports first_time and last_time (the window the rows actually span), sample_interval_hours (past the first day rows are every 2-3h, not every hour), and truncated: true when upstream returned less than you asked for. If the hour the user cares about is after last_time, say the forecast does not reach that far yet rather than answering from the nearest row you do have. For one stretch of time ask for that stretch with hours_from/hours_to: it comes back hour by hour even where the full range would be sampled. Accepts a place name or coordinates. Examples: {"location": "Portland, OR", "days": 2} or {"lat": 41.88, "lon": -87.63, "hours_from": 36, "hours_to": 48}.
Paramètres, retour & exemple (9)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).days· integer · optionnel
Days of hourly data (1-7). Default 2. Widened when hours_to reaches further.view· string · optionnel · concise | detailed
concise (default) samples past 24h; detailed adds CAPE, ceiling, UV, gust and thunderstorm probability for 48h.units· string · optionnel · imperial | metric | si
Units of every value in and out: imperial (default; °F, mph, in) or metric (°C, km/h, mm). si is deprecated and will be removed; use metric.hours_to· integer · optionnel
Window end, in hours from now, exclusive. 36 to 48 is hours 36-47.location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.hours_from· integer · optionnel
Window start, in hours from now (0 = the current hour).detail_level· string · optionnel · standard | detailed
Deprecated alias of view.
Exemple d'appel{"name": "get_hourly_forecast", "arguments": {"lat": 1, "lon": 1, "days": 1, "view": "concise", "units": "imperial", "hours_to": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"units": "texte", "widget": {}, "forecast": {}, "location": {}, "data_status": {}}} - get_observed_precipitation≈ 1215 tokens
How much rain fell: observed precipitation totals at a location. Use for "did it rain", "how much rain fell", "rain in the last 24 hours / since yesterday". Source: MRMS MultiSensor QPE Pass2 (radar bias-corrected to rain gauges) over 1/3/6/24/48/72 h windows (CONUS; 1 h only in Alaska and Hawaii). Values have about 2 mm (0.08 in) resolution, so 0 means under about 1 mm; data runs about an hour behind real time. Pass `at` (within 33 h) for totals ending at a past time (newest frame up to 3 h before it). With include_nowcast (default) it also returns a next-hour radar nowcast (CONUS): peak intensity (light/moderate/heavy), type and start time, not an amount. Forecast totals past the next hour: get_period_totals (planning); station reports: get_observations (observed).
Paramètres, retour & exemple (7)
Paramètresat· string · optionnel
RFC3339 end time within the last 33 h. Default: latest.lat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).units· string · optionnel · imperial | metric | si
Units of every value in and out: imperial (default; °F, mph, in) or metric (°C, km/h, mm). si is deprecated and will be removed; use metric.windows· array · optionnel
Accumulation windows ending at the latest frame (or at `at`).location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.include_nowcast· boolean · optionnel
Next-hour radar nowcast (CONUS; ignored with `at`).
Exemple d'appel{"name": "get_observed_precipitation", "arguments": {"at": "texte", "lat": 1, "lon": 1, "units": "imperial", "windows": [], "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"as_of": "texte", "notes": [], "units": "imperial", "derived": [], "nowcast": {}, "windows": [], "_sources": [], "location": {}, "data_status": {}, "quantization_step": {}}} - get_platform_status≈ 623 tokens
Current data-freshness status of the weather platform: overall state, per-source states (ok / degraded / outage / no_signal), open incidents with cause attribution (provider outage vs internal processing delay), and active provider advisories. Use this when a user asks whether data is current, when other tools return surprisingly stale data, or before presenting time-critical weather. If a source is degraded or in outage, tell the user their data may be stale rather than presenting it as live. No inputs. Refreshed about every 5 minutes.
Paramètres, retour & exemple (1)
Paramètresinclude_ok· boolean · optionnel
true: list every monitored source including healthy ones. false (default): only sources that are not ok, keeping the response compact.
Exemple d'appel{"name": "get_platform_status", "arguments": {"include_ok": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "overall": "ok", "sources": [], "advisories": [], "generated_at": "texte"}} - get_time_context≈ 568 tokens
Complete temporal context for a location: local time, timezone, 14-day calendar with day names and Today/Tomorrow offsets, sunrise/sunset/solar times (from the weather pipeline's astro product), and moon phase. Use whenever you need to reason about dates, times, or daylight for a location -- including "what time is sunset?", "is it dark there now?", or "what day of the week is the 4th-day forecast?". If current_time.timezone_resolved is false, zone unknown: state times as UTC, never as local. Accepts a place name directly. Example: {"location": "Seattle, WA"}.
Paramètres, retour & exemple (3)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.
Exemple d'appel{"name": "get_time_context", "arguments": {"lat": 1, "lon": 1, "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"moon": {}, "calendar": [], "daylight": {}, "location": {}, "current_time": {}}} - list_datasets≈ 695 tokens
Discover the datasets (model grids, analyses, observations) available at a location, keyed by dataset_id, with per-dataset freshness where tracked (latest model run as latest_run, latest_time, data_age_seconds, freshness_status). Only datasets covering the point are listed: its domain (CONUS/Alaska/Hawaii) plus global grids. Use this to find dataset_id values for query_dataset, or to check whether data is current. Variables, units and standard names come from describe_dataset. Example: {"location": "Anchorage, AK"}.
Paramètres, retour & exemple (4)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.include_freshness· boolean · optionnel
Include latest model run and data age where tracked. Default true.
Exemple d'appel{"name": "list_datasets", "arguments": {"lat": 1, "lon": 1, "location": "texte", "include_freshness": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"domain": "texte", "datasets": {}, "location": {}, "freshness": {}}} - query_dataset≈ 1007 tokens
Raw time series from a specific dataset for specific variables at a point. Power-user access to any gridded product (NBM, HRRR, RRFS, GFS, RTMA, MRMS, air quality, ...). Time modes: hours (next N hours, default 24), time_start+time_end (explicit ISO-8601 window), or latest=true (single most-recent value). reference_time pins a specific model run, and each returned series reports the run that served it (reference_time, or reference_times when a series mixes runs) — check it before comparing two runs, since a run older than about 48 hours may no longer be available. For blended forecasts use get_forecast instead. Examples: {"location": "Denver, CO", "dataset_id": "rrfs_surface", "variables": ["temperature_2m"], "hours": 18} or {"lat": 41.4, "lon": -92.9, "dataset_id": "rtma_conus", "variables": ["temperature_2m"], "latest": true}.
Paramètres, retour & exemple (10)
Paramètreslat· number · optionnel
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · optionnel
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).hours· integer · optionnel
Forecast/lookahead hours from now (1-264). Default 24 when no other time mode set.latest· boolean · optionnel
Return only the most recent value (analysis datasets like RTMA/MRMS).location· string · optionnel
Free-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.time_end· string · optionnel
ISO 8601 window end (with time_start).variables· array · requis
Standard variable names (e.g. temperature_2m, precipitation). Discover with describe_dataset.dataset_id· string · optionnel
Dataset to query. Default: the NBM dataset for the location domain (nbm_conus/nbm_alaska/nbm_hawaii). Discover options with list_datasets.time_start· string · optionnel
ISO 8601 window start (with time_end).reference_time· string · optionnel
Pin a specific model run (ISO 8601). Default: latest run.
Exemple d'appel{"name": "query_dataset", "arguments": {"variables": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"series": [], "location": {}, "attribution": "texte"}} - reverse_geocode≈ 362 tokens
Resolve coordinates to a human-readable place (city, state, county, timezone). Use when you have lat/lon but need a display name or the local timezone. Example: {"lat": 39.74, "lon": -104.99} -> Denver, Colorado, America/Denver.
Paramètres, retour & exemple (2)
Paramètreslat· number · requis
Latitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.lon· number · requis
Longitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).
Exemple d'appel{"name": "reverse_geocode", "arguments": {"lat": 1, "lon": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"lat": 1, "lon": 1, "place": {}}} - search_catalog≈ 836 tokens
Find which dataset answers a weather question when no dedicated tool fits: ranks the data catalog (model grids, radar, satellite, outlooks, observations) by the question's words and returns the best datasets with variable, units, cadence, a one-line why and the exact `call` (tool and arguments) to run next. Pass lat/lon, or `domain`, to keep only datasets covering the place; without one, Alaska/Hawaii twins fold into the CONUS dataset. Calls are ready for "now"; for a past time set `time_start`/`time_end` (or `at` where the tool supports it). Free; no network call.
Paramètres, retour & exemple (7)
Paramètreslat· number · optionnel
Latitude of the place (with lon).lon· number · optionnel
Longitude of the place (with lat).kind· string · optionnel · grid | snapshot | feature | text
Only this dataset kind.limit· integer · optionnel
Hits to return (1-10, default 5).query· string · requis
The question or keywords, in the user's words.domain· string · optionnel · conus | alaska | hawaii | carib | global
Coverage filter when there is no point; not with lat/lon.family· string · optionnel
Only this source family (e.g. "nbm", "mrms").
Exemple d'appel{"name": "search_catalog", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"hits": [], "note": "texte", "query": "texte", "domain": "texte"}} - search_locations≈ 633 tokens
Resolve a place to ranked candidates with lat/lon: city ("Denver"), "city, ST", ZIP ("50219"), or partial input with fuzzy=true ("bost" -> Boston); venues and addresses where enabled. Rows carry `type` place|zip|address|poi; pass a row's lat/lon to weather tools. `matched_via: "autosuggest"` marks rows found after the exact match missed; `partial` means a section timed out. Weather tools take `location` directly, venues included -- use this to disambiguate ("which Springfield?") or present choices.
Paramètres, retour & exemple (5)
Paramètresfuzzy· boolean · optionnel
Autosuggest mode for partial/misspelled input. Default false (exact search).limit· integer · optionnel
Maximum candidates to return (1-10). Default 5.query· string · requis
Place query: city, "city, state", ZIP, partial text, or venue/address where enabled.near_lat· number · optionnel
Rank venues/addresses near this point; pair with near_lon.near_lon· number · optionnel
Exemple d'appel{"name": "search_locations", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"query": "texte", "partial": {}, "candidates": []}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».