此 MCP 可以做什么
Provides historical weather and climate observations, normals, anomalies, extremes, trends, seasonal forecasts, forecast-skill evaluations, and location comparisons.
工具
输入模式
{'type': 'object', 'required': ['ymd_start', 'ymd_end'], 'properties': {'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'ymd_end': {'type': 'string', 'description': 'End of period (YYYY[MMDD])'}, 'ymd_start': {'type': 'string', 'description': 'Start of period (YYYY[MMDD])'}, 'period_type': {'type': 'string', 'description': 'Period Type [ MONTH | YEAR | WEEK | DAY | FULL_DAY | FUTURE_DAY] (default: FULL_DAY)'}, 'observed_period': {'type': 'string', 'description': 'Observed period (default: 1)'}}}
输入模式
{'type': 'object', 'required': ['ymd'], 'properties': {'z': {'type': 'string', 'description': 'Minimum avg std-devs departure from mean (default: 0)'}, 'ymd': {'type': 'string', 'description': 'Time Period YYYY[MMDD]'}, 'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'scope': {'type': 'string', 'description': 'Scope Type [week | month | year]'}, 'ctryid': {'type': 'string', 'description': 'Country IDs (comma sep) returned by /api/countries'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'metrics': {'type': 'string', 'description': "One of metrics returned by /api/metrics. Overrides 'CAT'"}, 'category': {'type': 'string', 'description': 'Metrics Category[Not Available] as defined by /api/metrics'}, 'period_type': {'type': 'string', 'description': 'Period Type [MONTH | WEEK | YEAR | DAY | FULL_DAY | FUTURE_DAY] (default: DAY)'}, 'anomaly_type': {'type': 'string', 'description': 'Anomaly Type [HIGH | LOW]'}}}
输入模式
{'type': 'object', 'required': ['criteria'], 'properties': {'time': {'type': 'string', 'description': 'YYYYMMDD (day), MMDD (week), or MM (month)'}, 'scope': {'type': 'string', 'description': 'day | week | month (default: week)'}, 'ctryid': {'type': 'string', 'description': 'Comma-separated ISO country codes (mutually exclusive with latlon)'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude for area search ex: 40.78,-73.97'}, 'baseline': {'type': 'string', 'description': 'Baseline year range YYYY-YYYY (default: 1996-2025)'}, 'criteria': {'type': 'string', 'description': 'JSON array of criteria, passed as a string. Example: [{"metric":"avg:max_t.p50","lb":18,"ub":28,"must_have":true},{"metric":"avg:obs.rain.sum","ub":40,"must_have":true},{"metric":"avg:obs.is_rain.count","ub":6,"must_have":false}] Each element has: metric (required, one of the exact names listed below), lb and ub (optional numeric lower/upper bounds, unscaled natural units; set at least one), and must_have (true = hard filter every result must satisfy, false = optional, only used to rank results). At least one criterion with must_have=true is required. Metric names are literal and case-sensitive. Each is the prefix \'avg:\' + the metric base + \'.\' + the attribute — for example avg:obs.rain.sum and avg:max_t.p50. Never drop the \'avg:\' prefix and never drop the \'obs.\' segment: \'obs.rain.sum\', \'rain.sum\' and \'avg:rain.sum\' are all rejected. \'avg\' means the mean across the baseline years for that week/month bucket. lb/ub are unscaled natural units (°C, mm, km/h, oktas, days). Percentile metrics — p1 = low tail, p50 = median, p99 = high tail: avg:max_t.p1, avg:max_t.p50, avg:max_t.p99, avg:min_t.p1, avg:min_t.p50, avg:min_t.p99, avg:obs.dewp.p1, avg:obs.dewp.p50, avg:obs.dewp.p99, avg:obs.dewph.p1, avg:obs.dewph.p50, avg:obs.dewph.p99, avg:obs.wbulb.p1, avg:obs.wbulb.p50, avg:obs.wbulb.p99, avg:obs.wbgt.p1, avg:obs.wbgt.p50, avg:obs.wbgt.p99, avg:obs.temp.p1, avg:obs.temp.p50, avg:obs.temp.p99, avg:obs.heatindex.p1, avg:obs.heatindex.p50, avg:obs.heatindex.p99 (°C); avg:obs.wind.p1, avg:obs.wind.p50, avg:obs.wind.p99 (km/h); avg:obs.cloudcover.p1, avg:obs.cloudcover.p50, avg:obs.cloudcover.p99 (oktas). Tail-percentile metrics: avg:obs.gust.p99 (km/h); avg:obs.rain.p95, avg:obs.rain.p99, avg:obs.snow.p95, avg:obs.snow.p99 (mm). Accumulation over the bucket: avg:obs.rain.sum, avg:obs.snow.sum (mm). Day-counts within the bucket: avg:obs.is_snow.count, avg:obs.is_rain.count, avg:obs.is_hail.count, avg:obs.is_thunderstorm.count, avg:obs.is_fog.count, avg:obs.is_smoke.count (days). Use exactly one of the names above as the criterion \'metric\'; anything else returns an error listing the valid names.'}, 'radius_km': {'type': 'string', 'description': 'Radius km for area search (default: 100)'}, 'max_results': {'type': 'string', 'description': 'Max results (default: 100)'}}}
输入模式
{'type': 'object', 'required': ['criteria'], 'properties': {'name': {'type': 'string', 'description': 'Location name, e.g. New York'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'baseline': {'type': 'string', 'description': 'Baseline year range YYYY-YYYY (default: 1996-2025)'}, 'criteria': {'type': 'string', 'description': 'JSON array of criteria, passed as a string. Example: [{"metric":"avg:max_t.p50","lb":18,"ub":28,"must_have":true},{"metric":"avg:obs.rain.sum","ub":40,"must_have":true},{"metric":"avg:obs.is_rain.count","ub":6,"must_have":false}] Each element has: metric (required, one of the exact names listed below), lb and ub (optional numeric lower/upper bounds, unscaled natural units; set at least one), and must_have (true = hard filter every result must satisfy, false = optional, only used to rank results). At least one criterion with must_have=true is required. Metric names are literal and case-sensitive. Each is the prefix \'avg:\' + the metric base + \'.\' + the attribute — for example avg:obs.rain.sum and avg:max_t.p50. Never drop the \'avg:\' prefix and never drop the \'obs.\' segment: \'obs.rain.sum\', \'rain.sum\' and \'avg:rain.sum\' are all rejected. \'avg\' means the mean across the baseline years for that week/month bucket. lb/ub are unscaled natural units (°C, mm, km/h, oktas, days). Percentile metrics — p1 = low tail, p50 = median, p99 = high tail: avg:max_t.p1, avg:max_t.p50, avg:max_t.p99, avg:min_t.p1, avg:min_t.p50, avg:min_t.p99, avg:obs.dewp.p1, avg:obs.dewp.p50, avg:obs.dewp.p99, avg:obs.dewph.p1, avg:obs.dewph.p50, avg:obs.dewph.p99, avg:obs.wbulb.p1, avg:obs.wbulb.p50, avg:obs.wbulb.p99, avg:obs.wbgt.p1, avg:obs.wbgt.p50, avg:obs.wbgt.p99, avg:obs.temp.p1, avg:obs.temp.p50, avg:obs.temp.p99, avg:obs.heatindex.p1, avg:obs.heatindex.p50, avg:obs.heatindex.p99 (°C); avg:obs.wind.p1, avg:obs.wind.p50, avg:obs.wind.p99 (km/h); avg:obs.cloudcover.p1, avg:obs.cloudcover.p50, avg:obs.cloudcover.p99 (oktas). Tail-percentile metrics: avg:obs.gust.p99 (km/h); avg:obs.rain.p95, avg:obs.rain.p99, avg:obs.snow.p95, avg:obs.snow.p99 (mm). Accumulation over the bucket: avg:obs.rain.sum, avg:obs.snow.sum (mm). Day-counts within the bucket: avg:obs.is_snow.count, avg:obs.is_rain.count, avg:obs.is_hail.count, avg:obs.is_thunderstorm.count, avg:obs.is_fog.count, avg:obs.is_smoke.count (days). Use exactly one of the names above as the criterion \'metric\'; anything else returns an error listing the valid names.'}, 'when_type': {'type': 'string', 'description': 'week | month | day (default: week)'}, 'when_basis': {'type': 'string', 'description': 'historical | forecast (default: historical)'}, 'max_results': {'type': 'string', 'description': 'Max results (default: 25)'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'ctryid': {'type': 'string', 'description': 'Comma-separated country codes to filter (as returned by /api/countries). Leave empty for global results.'}, 'breaking_type': {'type': 'string', 'description': 'Type of anomaly source. Values: obs (recent observations, ~last 3 days), forecast (upcoming 0-7 days). (default: obs)'}, 'metric_category': {'type': 'string', 'description': 'Filter by metric category. Values: A (All), T (Temperature), P (Precipitation), H (Humidity/Dew Point), W (Wind). (default: A)'}}}
输入模式
{'type': 'object', 'required': ['metrics'], 'properties': {'locids': {'type': 'string', 'description': "Comma-separated location IDs (as returned by /api/location). Example: '037720_99999,432950_99999'."}, 'months': {'type': 'string', 'description': "Single month ('06') or hyphenated range ('MM-MM'). Seasons: '12-02' (Dec-Feb), '12-03' (Dec-Mar), '10-11' (Oct-Nov), '03-05' (Mar-May), '06-08' (Jun-Aug), '06-09' (Jun-Sep). Use 'All' for annual. Example: '06' or '06-09'."}, 'lat_lon': {'type': 'string', 'description': "Latitude,Longitude of area centre (e.g. '51.5,-0.1'). Used with radius_km for area search. Ignored when locids is set."}, 'metrics': {'type': 'string', 'description': 'Metric to compare. Available: max_t, max_t.means, max_wind, max_wind.means, min_t, min_t.means, obs.dewp, obs.dewp.means, obs.dpd, obs.dpd.means, obs.gust, obs.heatindex, obs.heatindex.means, obs.is_dust, obs.is_fog, obs.is_frozen_rain, obs.is_hail, obs.is_haze, obs.is_ice_pellets, obs.is_rain, obs.is_smoke, obs.is_snow, obs.is_squall, obs.is_thunderstorm, obs.rain, obs.rainh, obs.snow, obs.snowh, obs.temp, obs.temp.means, obs.wbulb, obs.wbulb.means, obs.wind, obs.wind.means, rain_sum, snow_sum'}, 'src_type': {'type': 'string', 'description': 'Data source: Obs (station observations) | ERA5 (reanalysis). (default: Obs)'}, 'countries': {'type': 'string', 'description': "Comma-separated ISO country codes to filter (e.g. 'GB,FR')."}, 'obs_years': {'type': 'string', 'description': "Observation year or range (e.g. '2024' or '2020-2024'). Values can range from 2024 to current year, or a single hyphenated range e.g. 1981-2010."}, 'radius_km': {'type': 'string', 'description': 'Search radius in km around lat_lon. Default 100. (default: 100)'}, 'base_years': {'type': 'string', 'description': 'Baseline period. Available: 1991-2020. (default: 1991-2020)'}}}
输入模式
{'type': 'object', 'required': ['metrics'], 'properties': {'avg_N': {'type': 'string', 'description': 'Minimum average number of days per period for years with data. (default: 0)'}, 'years': {'type': 'string', 'description': "Year range string. Known values: '1975-' (data from 1975 onward). (default: 1975-)"}, 'locids': {'type': 'string', 'description': "Comma-separated list of location IDs (as returned by /api/location). Example: '037720_99999,432950_99999'. Use locids for point queries."}, 'months': {'type': 'string', 'description': "Single month ('06') or hyphenated range ('03-05' for March-May, '06-08' for June-August) or 'All' for annual trends. Example: '06' or '03-05'."}, 'lat_lon': {'type': 'string', 'description': "Latitude,Longitude of area centre (e.g. '51.5,-0.1'). Used with radius_km for area search. Ignored when locids is set."}, 'metrics': {'type': 'string', 'description': 'Comma-separated metric(s) in format agg_func:metric_id.attribute. Example: avg:max_t.p50. Available: avg:max_t.mean, avg:max_t.p10, avg:max_t.p5, avg:max_t.p90, avg:max_t.p95, avg:max_wind.p95, avg:min_t.mean, avg:min_t.p10, avg:min_t.p5, avg:min_t.p90, avg:min_t.p95, avg:obs.dewp.mean, avg:obs.dewp.p5, avg:obs.dewp.p95, avg:obs.dpd.mean, avg:obs.dpd.p95, avg:obs.rain.p95, avg:obs.rainh.p95, avg:obs.snow.p95, avg:obs.temp.mean, avg:obs.temp.p5, avg:obs.temp.p50, avg:obs.temp.p95, avg:obs.wbulb.mean, avg:obs.wbulb.p95, avg:obs.wind.mean, avg:obs.wind.p5, avg:obs.wind.p50, avg:obs.wind.p95, sum:obs.is_fog.count, sum:obs.is_hail.count, sum:obs.is_rain.count, sum:obs.is_smoke.count, sum:obs.is_snow.count, sum:obs.is_thunderstorm.count, sum:obs.rain.sum, sum:obs.snow.sum'}, 'src_type': {'type': 'string', 'description': 'Data source: Obs (station observations) | ERA5 (reanalysis). ERA5 provides global coverage including ocean areas. (default: Obs)'}, 'countries': {'type': 'string', 'description': "Comma-separated ISO country codes to filter results (e.g. 'GB,FR')."}, 'num_years': {'type': 'string', 'description': 'Minimum number of years with non-null data. Use to filter sparse records. (default: 0)'}, 'radius_km': {'type': 'string', 'description': 'Search radius in km around lat_lon. Default 100. (default: 100)'}}}
输入模式
{'type': 'object', 'required': ['ymd_start', 'ymd_end'], 'properties': {'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'ymd_end': {'type': 'string', 'description': 'End of period (YYYY[MMDD])'}, 'ymd_start': {'type': 'string', 'description': 'Start of period (YYYY[MMDD])'}, 'period_type': {'type': 'string', 'description': 'Period Type [ MONTH | YEAR | WEEK | DAY | FULL_DAY | FUTURE_DAY] (default: DAY)'}, 'baseline_offset': {'type': 'string', 'description': 'Baseline offset in years (default: 1)'}, 'baseline_period': {'type': 'string', 'description': 'Baseline period in years (default: 30)'}, 'observed_period': {'type': 'string', 'description': 'Observed period (default: 1)'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'ctryid': {'type': 'string', 'description': 'Country Id'}}}
输入模式
{'type': 'object', 'required': ['ymd_start', 'ymd_end'], 'properties': {'name': {'type': 'string', 'description': 'Location name, e.g. New York'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'window': {'type': 'string', 'description': 'Sliding window days (3-7) (default: 7)'}, 'ymd_end': {'type': 'string', 'description': 'Observation end date (YYYYMMDD)'}, 'category': {'type': 'string', 'description': 'Category: Temp | Prcp | Wind | Humidity (default: Temp)'}, 'ymd_start': {'type': 'string', 'description': 'Observation start date (YYYYMMDD), max 5-year span'}, 'baseline_year_end': {'type': 'string', 'description': 'Baseline year end YYYY (default: 2020)'}, 'baseline_year_start': {'type': 'string', 'description': 'Baseline year start YYYY (default: 1991)'}}}
输入模式
{'type': 'object', 'required': ['latlon'], 'properties': {'unit': {'type': 'string', 'description': 'Degree days as measured in F|C (default: C)'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'ymd_end': {'type': 'string', 'description': 'End of period (YYYYMMDD)'}, 'ymd_start': {'type': 'string', 'description': 'Start of period (YYYYMMDD)'}, 'indicators': {'type': 'string', 'description': "Comma separated list of indicator names. ['hdd'|'cdd'|'wbcdd'|'gdd] (default: hdd,cdd,wbcdd)"}, 'base_temp_C': {'type': 'string', 'description': 'Base temperature in °C for all indicators (default: 18.3)'}, 'is_forecast': {'type': 'string', 'description': 'Forecast requested? (0|1) (default: 1)'}}}
输入模式
{'type': 'object', 'required': ['criteria'], 'properties': {'name': {'type': 'string', 'description': 'Location name, e.g. New York'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'baseline': {'type': 'string', 'description': 'Baseline period used to resolve sigma/percentile bounds, format YYYY_YYYY (default: 1991_2020)'}, 'criteria': {'type': 'string', 'description': 'JSON array of criteria objects. Each criterion is either a numeric criterion {"metric":"<name>","bound_type":"A|S|P","lower_bound":<val>,"upper_bound":<val>,"must_have":true|false} where bound_type A=absolute (default bounds per metric), S=sigma (-4 to 4), P=percentile (0-100); or a condition criterion {"metric":"<is_* name>","state":"1|0","must_have":true|false}. Defaults: numeric metrics use their natural absolute range; S defaults to [-4,4]; P defaults to [0,100]. At least one must_have=true criterion required.'}, 'year_end': {'type': 'string', 'description': 'Year end (YYYY, inclusive) (default: 2026)'}, 'year_start': {'type': 'string', 'description': 'Year start (YYYY) (default: 2024)'}, 'month_day_end': {'type': 'string', 'description': 'Month-day end filter MMDD e.g. 0831 (Aug 31). Omit for full year.'}, 'month_day_start': {'type': 'string', 'description': 'Month-day start filter MMDD e.g. 0601 (June 1). Omit for full year.'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'level': {'type': 'string', 'description': "Aggregation level: city (single station) | area (nearby stations pooled). Use 'area' to improve period of record. (default: area)"}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'month': {'type': 'string', 'description': "Two-digit month filter (e.g. '06' for June). Leave empty for all months."}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'season': {'type': 'string', 'description': "Season filter as 'MM-MM' (e.g. '06-08' for Jun-Aug, '12-02' for Dec-Feb). Overridden by 'month' if both are set."}, 'src_type': {'type': 'string', 'description': 'Data source: Obs (station observations) | ERA5 (reanalysis). ERA5 recommended for precipitation outside US. (default: Obs)'}, 'model_type': {'type': 'string', 'description': "Statistical model: '' (empirical/default) | MLE (maximum likelihood estimate)."}, 'window_size': {'type': 'string', 'description': 'Rolling window in days. Temperature metrics (MAX_TEMP, MIN_TEMP, AVG_TEMP, DEWPH, WBULB, DPD): 1, 2, 3. Precipitation metrics (PRCP, SNOW, RAINH, SNOWH): 1, 2, 3, 4, 7. (default: 1)'}, 'exceedance_type': {'type': 'string', 'description': 'Exceedance direction: High (probability of exceeding value) | Low (probability of being below value). (default: High)'}, 'metric_category': {'type': 'string', 'description': 'Metric category. Values: AVG_TEMP, DEWPH, DPD, MAX_TEMP, MIN_TEMP, PRCP, RAINH, SNOW, SNOWH, WBULB, WIND. Example: MAX_TEMP for maximum temperature extremes. (default: MAX_TEMP)'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'seed': {'type': 'string', 'description': 'Any string. The sample of locations is drawn deterministically from it, so the same seed always returns the same locations. Every response reports the seed it used, including when one was not supplied, so any result can be reproduced exactly by sending that seed back.'}, 'limit': {'type': 'string', 'description': 'Maximum locations returned, 1 to 4000 (default: 500)'}, 'ctryid': {'type': 'string', 'description': 'Comma-separated ISO country codes from /api/countries, e.g. US,CA. Omit for a global query. This endpoint compares many locations and has no single-location argument; for one place use fcastevalbylocation'}, 'metric': {'type': 'string', 'description': "Metric names are literal and case-sensitive. Never drop the 'obs.' segment and never drop the '.mean' suffix. The eight metrics are: max_t.mean, min_t.mean, obs.temp.mean, obs.dewp.mean (C); obs.rain.mean, obs.snow.mean (mm); obs.wind.mean, obs.gust.mean (km/hr). They are daily quantities: max_t.mean and min_t.mean are the day's high and low, obs.temp.mean the day's mean temperature, obs.dewp.mean the day's mean dew point, obs.rain.mean and obs.snow.mean the day's total precipitation and snowfall, obs.wind.mean the day's mean wind speed and obs.gust.mean the day's maximum gust. Exactly one metric per request. Full list: max_t.mean, min_t.mean, obs.temp.mean, obs.dewp.mean, obs.rain.mean, obs.snow.mean, obs.wind.mean, obs.gust.mean (default: obs.temp.mean)"}, 'models': {'type': 'string', 'description': "Forecast models, given as comma-separated keys: auto (Open-Meteo's own per-location blend — what a caller gets by default), IFS (ECMWF IFS 0.25 degree, physical NWP), GFS (NCEP GFS), AIFS (ECMWF AIFS, machine-learned, deterministic), WN2 (Google WeatherNext 2, ensemble mean). Defaults to all of them."}, 'ymd_end': {'type': 'string', 'description': 'Last day evaluated, YYYYMMDD, inclusive'}, 'lead_time': {'type': 'string', 'description': "Forecast lead time in days. A lead time is how many days ahead the forecast was issued, so lead time 1 is yesterday's forecast for today and lead time 10 is a forecast made ten days before the day it describes. Only these lead times are indexed: 1, 2, 3, 5, 7, 10. Asking for any other lead time is an error, not an empty result. One value only here; use fcastevalbylocation to compare lead times. (default: 1)"}, 'threshold': {'type': 'string', 'description': "Precipitation threshold in mm per day for the 'ets' eval metric, ignored otherwise. A day counts as a wet-day event when the total is at or above this. Useful rungs are 0.2, 1.0, 5.0, 10.0, 25.0. (default: 1.0)"}, 'ymd_start': {'type': 'string', 'description': 'Inclusive day range as YYYYMMDD. Defaults to the 14 days ending yesterday; today is never included because it has not been verified yet. At most 180 days, which is also how much history the index retains.'}, 'sample_pct': {'type': 'string', 'description': "Percent of the world's locations to sample, from 0.1 to 100. Sampling is by stable hash bucket, so every location has an equal chance of being selected and the sample is unbiased by geography. The granularity is one bucket, which is 2.5 percent, and a request is rounded up to whole buckets; the response reports the sample_pct_effective actually served and the buckets drawn. Defaults to 5 percent for a global query, and to 100 when ctryid is given, because sampling exists to bound a world-sized scan and naming countries is already a restriction."}, 'eval_metrics': {'type': 'string', 'description': "Evaluation metrics, comma-separated, any of: 'mae' mean absolute error in the metric's own unit, lower is better; 'rmse' root mean squared error, same unit, lower is better, more sensitive to large misses than mae; 'mse' the same squared, lower is better; 'bias' mean signed error, positive means the model forecasts too high, zero is best; 'acc' anomaly correlation coefficient from -1 to 1, higher is better, which measures whether the model got the departure from the local seasonal normal right rather than just the absolute value, so a model that always forecasts the local average scores near zero however small its mae; 'ets' equitable threat score from -1/3 to 1, higher is better, the standard precipitation score, which is only valid for the accumulation metrics obs.rain.mean and obs.snow.mean and uses the threshold argument. Defaults to mae,rmse,acc. A cell whose sample was too small is returned as null, never as zero. (default: mae,rmse,acc)"}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': "Place name, e.g. 'San Francisco'. Ignored if locid is set"}, 'locid': {'type': 'string', 'description': 'Location id from /api/location, e.g. 725030_14732'}, 'latlon': {'type': 'string', 'description': "'lat,lon' ex: 37.62,-122.4. Used if locid and name are absent"}, 'metric': {'type': 'string', 'description': "Metric names are literal and case-sensitive. Never drop the 'obs.' segment and never drop the '.mean' suffix. The eight metrics are: max_t.mean, min_t.mean, obs.temp.mean, obs.dewp.mean (C); obs.rain.mean, obs.snow.mean (mm); obs.wind.mean, obs.gust.mean (km/hr). They are daily quantities: max_t.mean and min_t.mean are the day's high and low, obs.temp.mean the day's mean temperature, obs.dewp.mean the day's mean dew point, obs.rain.mean and obs.snow.mean the day's total precipitation and snowfall, obs.wind.mean the day's mean wind speed and obs.gust.mean the day's maximum gust. Exactly one metric per request. Full list: max_t.mean, min_t.mean, obs.temp.mean, obs.dewp.mean, obs.rain.mean, obs.snow.mean, obs.wind.mean, obs.gust.mean (default: obs.temp.mean)"}, 'models': {'type': 'string', 'description': "Forecast models, given as comma-separated keys: auto (Open-Meteo's own per-location blend — what a caller gets by default), IFS (ECMWF IFS 0.25 degree, physical NWP), GFS (NCEP GFS), AIFS (ECMWF AIFS, machine-learned, deterministic), WN2 (Google WeatherNext 2, ensemble mean). Defaults to all of them."}, 'window': {'type': 'string', 'description': 'Sliding window in days for the moving average. A 14 day range with a 7 day window yields 8 windows. Defaults to the whole range, which yields exactly one window'}, 'ymd_end': {'type': 'string', 'description': 'Last day evaluated, YYYYMMDD, inclusive'}, 'threshold': {'type': 'string', 'description': "Precipitation threshold in mm per day for the 'ets' eval metric, ignored otherwise. A day counts as a wet-day event when the total is at or above this. Useful rungs are 0.2, 1.0, 5.0, 10.0, 25.0. (default: 1.0)"}, 'ymd_start': {'type': 'string', 'description': 'Inclusive day range as YYYYMMDD. Defaults to the 14 days ending yesterday; today is never included because it has not been verified yet. At most 180 days, which is also how much history the index retains.'}, 'lead_times': {'type': 'string', 'description': "Comma-separated forecast lead times in days. A lead time is how many days ahead the forecast was issued, so lead time 1 is yesterday's forecast for today and lead time 10 is a forecast made ten days before the day it describes. Only these lead times are indexed: 1, 2, 3, 5, 7, 10. Asking for any other lead time is an error, not an empty result. They become the outermost axis of the evals structure, in ascending order. (default: 1)"}, 'eval_metrics': {'type': 'string', 'description': "Evaluation metrics, comma-separated, any of: 'mae' mean absolute error in the metric's own unit, lower is better; 'rmse' root mean squared error, same unit, lower is better, more sensitive to large misses than mae; 'mse' the same squared, lower is better; 'bias' mean signed error, positive means the model forecasts too high, zero is best; 'acc' anomaly correlation coefficient from -1 to 1, higher is better, which measures whether the model got the departure from the local seasonal normal right rather than just the absolute value, so a model that always forecasts the local average scores near zero however small its mae; 'ets' equitable threat score from -1/3 to 1, higher is better, the standard precipitation score, which is only valid for the accumulation metrics obs.rain.mean and obs.snow.mean and uses the threshold argument. Defaults to mae,rmse,acc. A cell whose sample was too small is returned as null, never as zero. (default: mae,rmse,acc)"}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {}}
输入模式
{'type': 'object', 'required': [], 'properties': {'scope': {'type': 'string', 'description': 'Record scope. Values: month (monthly records), week (weekly records), year (annual records). (default: month)'}, 'ctryid': {'type': 'string', 'description': 'Comma-separated country codes to filter (as returned by /api/countries).'}, 'metrics': {'type': 'string', 'description': "Applicable metrics. For period_type DAY: ('temp.max','temp.min', 'temp.mean', 'rain.mean', 'snow.mean', 'dewp.mean', 'wbulb.max', 'heatindex.max', 'wbgt.max', 'dpd.max','gust.max','wind.max','rainh.max')<br>For period_type FULL_DAY/FUTURE_DAY: ('max_t.mean','min_t.mean','temp.mean','rain.mean','snow.mean','dewp.mean','max_wind'.mean) (default: max_t.mean)"}, 'ymd_end': {'type': 'string', 'description': 'End date YYYYMMDD. Defaults to today.'}, 'ymd_start': {'type': 'string', 'description': 'Start date YYYYMMDD. Defaults to 15 days ago.'}, 'period_type': {'type': 'string', 'description': 'Period type. Values: DAY (US daily obs), FULL_DAY (non-US daily obs), FUTURE_DAY (forecast). (default: FULL_DAY)'}, 'history_years': {'type': 'string', 'description': 'Minimum years of history required to qualify as a record. Use >= 15 for meaningful records. (default: 5)'}}}
输入模式
{'type': 'object', 'required': [], 'properties': {'name': {'type': 'string', 'description': "Place name, e.g. 'San Francisco'. Ignored if locid is set"}, 'sort': {'type': 'string', 'description': "One of: 'criteria' (most optional criteria met first), 'locid' (id order, resumable with cursor), or an attribute name to rank by how far from normal it is: 'norm:METRIC' or 'perc:METRIC', e.g. norm:obs.rain.sum. Those are the same names used in criteria, and they order most-abnormal-first in either direction — use criteria to pick a direction (e.g. lb 0 for hotter than normal only). Defaults to criteria when criteria are given, otherwise locid."}, 'limit': {'type': 'string', 'description': 'Results per page, 1 to 4000. 4000 covers every location in one page (default: 100)'}, 'locid': {'type': 'string', 'description': 'Location id from /api/location, e.g. 724940_23234'}, 'ctryid': {'type': 'string', 'description': 'Comma-separated ISO country codes (mutually exclusive with latlon)'}, 'cursor': {'type': 'string', 'description': 'next_cursor from a previous response. Only valid with sort=locid; sending it with a ranked sort is an error'}, 'fields': {'type': 'string', 'description': "'full' for everything, 'compact' for locid/lat/lon/ym plus anom, norm and perc of the requested metrics only (default: full)"}, 'latlon': {'type': 'string', 'description': "Centre of an area search as 'lat,lon' ex: 37.62,-122.4"}, 'offset': {'type': 'string', 'description': 'Offset into a ranked result (any sort except locid). offset plus limit must be at most 4000. Use cursor, not offset, with sort=locid (default: 0)'}, 'ym_end': {'type': 'string', 'description': 'Last target month as YYYYMM, inclusive. Must be at least ym_start. Defaults to ym_start plus 5 months.'}, 'metrics': {'type': 'string', 'description': 'Comma-separated metrics to return: max_t.mean, min_t.mean, obs.temp.mean, obs.dewp.mean, obs.wind.mean, obs.rain.sum, obs.snow.sum. The metric named by sort is always returned as well, whether or not it is listed here. Defaults to all seven.'}, 'baseline': {'type': 'string', 'description': 'Baseline year range YYYY-YYYY (default: 1996-2025)'}, 'criteria': {'type': 'string', 'description': 'JSON array of criteria, passed as a string. Optional for this API: omit it to get every location for the requested months. Example: [{"metric":"norm:max_t.mean","lb":1.5,"must_have":true},{"metric":"perc:obs.rain.sum","ub":15,"must_have":true}] Each element has: metric (required, one of the exact names listed below), lb and ub (optional numeric lower/upper bounds), and must_have (true = hard filter every result must satisfy, false = optional, only used to rank). Metric names are literal and case-sensitive: a prefix plus the metric base plus \'.\' plus the attribute, e.g. norm:max_t.mean, perc:obs.rain.sum. Never drop the prefix and never drop the \'obs.\' segment. The seven metrics are: max_t.mean, min_t.mean, obs.temp.mean, obs.dewp.mean (C); obs.wind.mean (km/h); obs.rain.sum, obs.snow.sum (mm). Filterable prefixes: \'norm:\' = anomaly divided by that place\'s interannual standard deviation (|1| unusual, |2| strongly unusual, |3|+ rare); \'perc:\' = percentile rank of the prediction among the last 30 years, 0 to 100 (90 = hotter/wetter than 90% of them, 50 = typical); \'anom:\' = the absolute anomaly in natural units, which is not comparable between places. Prefer \'perc:\' for obs.rain.sum and obs.snow.sum, whose year-to-year distributions are skewed, and note \'norm:\' is absent where interannual variability is near zero. The \'avg:\' and \'std:\' attributes are returned for display but cannot be filtered on. Full list: anom:max_t.mean, anom:min_t.mean, anom:obs.temp.mean, anom:obs.dewp.mean, anom:obs.wind.mean, anom:obs.rain.sum, anom:obs.snow.sum, norm:max_t.mean, norm:min_t.mean, norm:obs.temp.mean, norm:obs.dewp.mean, norm:obs.wind.mean, norm:obs.rain.sum, norm:obs.snow.sum, perc:max_t.mean, perc:min_t.mean, perc:obs.temp.mean, perc:obs.dewp.mean, perc:obs.wind.mean, perc:obs.rain.sum, perc:obs.snow.sum'}, 'src_type': {'type': 'string', 'description': 'Forecast model to read: SEAS5 (ECMWF seasonal). SEAS5 is currently the only value, so this can be omitted. (default: SEAS5)'}, 'ym_start': {'type': 'string', 'description': 'First target month as YYYYMM, e.g. 202611. For a single month set ym_start and ym_end to the same value. Defaults to next month.'}, 'radius_km': {'type': 'string', 'description': 'Radius km for latlon, 1 to 2000 (default: 100)'}}}
输入模式
{'type': 'object', 'required': ['metrics'], 'properties': {'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'groupby': {'type': 'string', 'description': 'Aggregating key: Year | Month | Week | Hour (default: Year)'}, 'metrics': {'type': 'string', 'description': 'Comma separated list of tuple describing <i>aggregation function</i>:<i>metric_id</i>.<i>attribute</i> <br> ex: sum:obs.is_rain.count, avg:max_t.p99<br>agg_func = {sum,avg,min,max}. See /api/metrics for metric and attribtutes'}, 'hour_end': {'type': 'string', 'description': 'Hour End (00 to 24) (default: 24)'}, 'src_type': {'type': 'string', 'description': 'Data source type: Obs (station observations) | ERA5 (reanalysis gridded data) (default: Obs)'}, 'year_end': {'type': 'string', 'description': 'Year end YYYY (default: 2025)'}, 'hour_start': {'type': 'string', 'description': 'Hour Start (00 to 24) (default: 24)'}, 'year_start': {'type': 'string', 'description': 'Year start start YYYY (default: 1975)'}, 'month_day_end': {'type': 'string', 'description': 'Month day start MM[DD]'}, 'month_day_start': {'type': 'string', 'description': 'Month day start MM[DD]'}}}
输入模式
{'type': 'object', 'required': ['ymd_start', 'ymd_end'], 'properties': {'name': {'type': 'string', 'description': 'Common name of metro or metro area. for ex: New York, Beijing, Mumbai Airport'}, 'locid': {'type': 'string', 'description': 'Unique Location Identifier'}, 'latlon': {'type': 'string', 'description': 'Latitude,Longitude ex: 40.78,-73.97'}, 'ymd_end': {'type': 'string', 'description': 'End of period (YYYY[MMDD])'}, 'hour_end': {'type': 'string', 'description': 'Hour End (00 to 24) (default: 24)'}, 'lookback': {'type': 'string', 'description': 'Years looked back[1] (1 to 40) (default: 30)'}, 'ymd_start': {'type': 'string', 'description': 'Start of period (YYYY[MMDD])'}, 'hour_start': {'type': 'string', 'description': 'Hour Start (00 to 24) (default: 24)'}}}
近期工具变更
类似的 MCP 服务器
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
whatif
Builds, validates, calibrates, compares, and simulates Petri-net process models using event logs, scenarios, invariants, and diag…
Us Iso Grid
Provides real-time and recent electricity grid data for CAISO, ERCOT, and NYISO, including demand, forecasts, fuel mix, emissions…
AOI — Environmental Intelligence for AI Agents
Provides paid, quote-based environmental intelligence assessments covering climate risk, emissions, biodiversity, air quality, ha…
Pharma Intel
Combines clinical trial, FDA, PubMed, drug identification, safety, pipeline, sales, patent, and pharmaceutical sponsor data for d…
Data Gov Sg
Provides Singapore government datasets and environmental feeds, including air quality, dataset metadata, and routed structured re…
Nih Reporter
Searches and analyzes NIH-funded research projects, awards, publications, funding trends, expirations, investigators, organizatio…