protogrid

Search / com.gribstream/mcp

GribStream Weather MCP

R0· no sign-in

NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries.

v1.1.4 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality73needs work
Trust97of 100
Uptime, 30 days100%
Latency p50201 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "gribstream": {
      "type": "http",
      "url": "https://gribstream.com/mcp"
    }
  }
}
claude mcp add --transport http gribstream https://gribstream.com/mcp
[mcp_servers.gribstream]
url = "https://gribstream.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gribstream": {
      "type": "remote",
      "url": "https://gribstream.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "gribstream": {
      "type": "http",
      "url": "https://gribstream.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=gribstream&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZ3JpYnN0cmVhbS5jb20vbWNwIn0%3D"
}
{
  "servers": {
    "gribstream": {
      "type": "http",
      "url": "https://gribstream.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "gribstream": {
      "httpUrl": "https://gribstream.com/mcp"
    }
  }
}
extensions:
  "gribstream":
    enabled: true
    name: "gribstream"
    type: streamable_http
    uri: "https://gribstream.com/mcp"
    timeout: 300

Quality 73 / 100needs work

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations12 of 12 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints2 of 12 tools declare all four hints; missing: gribstream_build_runs_request (destructiveHint); gribstream_get_dataset (destructiveHint); gribstream_get_parameter (destructiveHint); …
  • warn
    tools.token_costabout 11,275 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes12 tool changes in 30 days
  • fail
    stability.rug_pull7 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

12 tools, about 11,275 tokens to load them all · tool set 760ce28886a3 · tools last changed 2026-10-15 · checked 2026-10-20 14:54 UTC

Tool changes

  • gribstream_validate_requestchangeddescription, input schema
    before

    NO AUTH / PUBLIC / READ-ONLY. Validates the basic shape, exact selector tuples, and expression syntax of a proposed GribStream /timeseries or /runs request without sending it. This tool does not execute the request, query weather values, or return forecast data. Use this before returning any hand-edited curl or when changing a request from one dataset to another.

    after · 80% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Validates the basic shape, exact selector tuples, and expression syntax of a proposed GribStream /timeseries or /runs request without sending it. Use this before returning any hand-edited curl or when changing a request from one dataset to another.

  • gribstream_resolve_shared_parameterchangeddescription
    before

    NO AUTH / PUBLIC / READ-ONLY. Resolves one shared parameter preset for a dataset, returning native variables and expressions to use in /timeseries or /runs request bodies. Use this first for common natural-language concepts such as 2 metre temperature or 10 metre wind instead of guessing dataset-native codes such as TMP. This tool does not execute the request, query weather values, or return forecast data.

    after · 58% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Resolves a weather concept to validated native variables/expressions and an exact or approximate match label. Use resolved_request directly in /timeseries or /runs; read resolved_match for height differences and native statistics. Use this first for common natural-language concepts such as 2 metre temperature or 10 metre wind instead of guessing dataset-native codes such as TMP.

  • gribstream_query_timeserieschangeddescription, input schema, output schemameaning changed
    before

    AUTH REQUIRED / DATA QUERY. Executes an authenticated /api/v2/{dataset}/timeseries request and returns actual weather/forecast data values. Use this tool, not the NO AUTH request-building or metadata tools, when the user asks to fetch, retrieve, download, return, or analyze weather values, CSV/JSON/NDJSON/Parquet data, plots, heatmaps, or best-available values by valid time. Defaults to inline CSV for compatibility; use URL delivery for dense grids and large tabular results. Time ranges are half-open: the start is inclusive and the end is exclusive. The start must be earlier than the end; equal bounds select no times. Use timesList for one exact valid time on /timeseries or one exact model run time on /runs. When a live query returns a resource_link, the exact signed HTTPS URL is the result: download it directly once with an available HTTPS or file-download capability, without an API token. This consumes the selected GribStream MCP result; it is not a direct GribStream API call or a connector bypass. Do not look for an MCP resources/read tool, and do not repeat the query merely to obtain the file bytes. If the client reports that network or allowlist policy blocks the returned resource_link, do not retry URL delivery. For CSV, JSON, or NDJSON whose reported size is at most 10000000 bytes, retry the same request at most once with delivery=inline. Parquet cannot use inline delivery. If the artifact is larger, reduce the request using the documented split order before one inline CSV retry. For dense grids or large tabular results, use delivery=url so MCP returns a short-lived signed HTTPS resource link instead of putting the full dataset into tool output. Prefer application/vnd.apache.parquet only when a compatible Parquet reader is already known to be available. If reader availability is unknown, do not spend tool calls probing or installing packages; use text/csv with delivery=url immediately. Use one grid request, process the downloaded file locally, and never print or serialize the full file into chat or tool output. Do not install a dependency or write a Parquet parser solely for one result. When a real API request limit requires splitting, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra work. Do not include request.asOf unless the user explicitly wants backtesting, time travel, or a historical model-run cutoff. Response rows are unsorted; sort by location fields and forecasted_time before plotting, building time series, or checking for gaps. The request body must use request.coordinates and request.variables; do not use location, coord, coords, parameters, parameter, or variable as replacement field names.

    after · 36% of words in common

    AUTH REQUIRED / DATA QUERY. Fetch or retrieve weather values for maps, heatmaps and analysis at selected valid times. Use discovered request.variables with coordinates or one grid; no separate build/validate call is needed. CSV is the default; use delivery=url for large results and render the downloaded file locally. Prefer Parquet only with an available reader. Use timesList for one exact UTC valid time; omit asOf for latest forecasts. Requested sampling does not increase native resolution. Response rows are unsorted; sort rows before plotting. When a live query returns a resource_link, the exact signed HTTPS URL is the result: download it directly once with an available HTTPS or file-download capability, without an API token. This consumes the selected GribStream MCP result; it is not a direct GribStream API call or a connector bypass. Do not look for an MCP resources/read tool, and do not repeat the query merely to obtain the file bytes.

  • gribstream_query_runschangeddescription, input schema, output schemameaning changed
    before

    AUTH REQUIRED / DATA QUERY. Executes an authenticated /api/v2/{dataset}/runs request and returns actual weather/forecast data values across model runs. Use this tool, not the NO AUTH request-building or metadata tools, when the user asks to fetch, retrieve, download, return, or analyze model-run history, forecast aging, changing forecasts, CSV/JSON/NDJSON/Parquet data, plots, or analysis. Defaults to inline CSV for compatibility; use URL delivery for dense grids and large tabular results. Time ranges are half-open: the start is inclusive and the end is exclusive. The start must be earlier than the end; equal bounds select no times. Use timesList for one exact valid time on /timeseries or one exact model run time on /runs. When a live query returns a resource_link, the exact signed HTTPS URL is the result: download it directly once with an available HTTPS or file-download capability, without an API token. This consumes the selected GribStream MCP result; it is not a direct GribStream API call or a connector bypass. Do not look for an MCP resources/read tool, and do not repeat the query merely to obtain the file bytes. If the client reports that network or allowlist policy blocks the returned resource_link, do not retry URL delivery. For CSV, JSON, or NDJSON whose reported size is at most 10000000 bytes, retry the same request at most once with delivery=inline. Parquet cannot use inline delivery. If the artifact is larger, reduce the request using the documented split order before one inline CSV retry. For dense grids or large tabular results, use delivery=url so MCP returns a short-lived signed HTTPS resource link instead of putting the full dataset into tool output. Prefer application/vnd.apache.parquet only when a compatible Parquet reader is already known to be available. If reader availability is unknown, do not spend tool calls probing or installing packages; use text/csv with delivery=url immediately. Use one grid request, process the downloaded file locally, and never print or serialize the full file into chat or tool output. Do not install a dependency or write a Parquet parser solely for one result. When a real API request limit requires splitting, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra work. Response rows are unsorted; sort by location fields, forecasted_at, and forecasted_time before plotting, building time series, or checking for gaps. The request body must use request.coordinates and request.variables; do not use location, coord, coords, parameters, parameter, or variable as replacement field names.

    after · 38% of words in common

    AUTH REQUIRED / DATA QUERY. Fetch or retrieve weather values across model runs to compare changing forecasts. timesList selects exact model run times, not valid times; minHorizon/maxHorizon constrain lead hours. Use discovered request.variables with coordinates or one grid. CSV is the default; use delivery=url for large results. Response rows are unsorted; sort by location, forecasted_at and forecasted_time before plotting. When a live query returns a resource_link, the exact signed HTTPS URL is the result: download it directly once with an available HTTPS or file-download capability, without an API token. This consumes the selected GribStream MCP result; it is not a direct GribStream API call or a connector bypass. Do not look for an MCP resources/read tool, and do not repeat the query merely to obtain the file bytes.

  • gribstream_list_shared_parameterschangeddescription
    before

    NO AUTH / PUBLIC / READ-ONLY. Lists normalized shared parameter presets that can map one logical signal across datasets. Use this only when the shared parameter code is uncertain; when a common code such as temperature_2m is already clear, call gribstream_resolve_shared_parameter directly. This tool does not query weather values and cannot return forecast data.

    after · 77% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Lists normalized shared parameter presets that can map one logical signal across datasets. Use this only when the shared parameter code is uncertain; when a common code such as temperature_2m is already clear, call gribstream_resolve_shared_parameter directly.

  • gribstream_list_parameterschangeddescription
    before

    NO AUTH / PUBLIC / READ-ONLY. Lists parameter summaries for one dataset. Use this before selecting exact case-sensitive parameter codes. This tool does not query weather values and cannot return forecast data.

    after · 63% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Lists parameter summaries for one dataset. Use this before selecting exact case-sensitive parameter codes.

  • gribstream_list_datasetschangeddescription, input schemameaning changed
    before

    NO AUTH / PUBLIC / READ-ONLY. Lists public GribStream datasets and metadata. This tool does not query weather values and cannot return forecast data. Supports catalog filters such as code, family, tag, and is_ensemble.

    after · 22% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Find candidate datasets for a region and weather variable. Filter by provider, region, forecast_time, shared_parameter and is_ensemble; sort_by=resolution ranks nominal resolution in km. With shared_parameter, each result includes a validated request fragment and exact/approximate match. Use it directly in one gribstream_query_timeseries call. Coverage envelopes and forecast horizons are catalog hints, not live availability guarantees. No weather values are fetched.

  • gribstream_get_parameterchangeddescription
    before

    NO AUTH / PUBLIC / READ-ONLY. Gets detailed metadata and exact selector variations for one already-known dataset-native parameter code. Parameter codes are case-sensitive. For a common natural-language concept such as 2 metre temperature, use gribstream_resolve_shared_parameter before guessing a native code. This tool does not query weather values and cannot return forecast data.

    after · 78% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Gets detailed metadata and exact selector variations for one already-known dataset-native parameter code. Parameter codes are case-sensitive. For a common natural-language concept such as 2 metre temperature, use gribstream_resolve_shared_parameter before guessing a native code.

  • gribstream_get_expression_referencechangeddescriptionmeaning changed
    before

    NO AUTH / PUBLIC / READ-ONLY. Gets the GribStream expression language reference, including github.com/expr-lang/expr syntax guidance, alias rules, examples, and the full exported func.* math function list. This tool does not query weather values and cannot return forecast data.

    after · 31% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Get expression syntax, alias rules, examples, and supported func.* math functions for derived weather signals.

  • gribstream_get_datasetchangeddescriptionmeaning changed
    before

    NO AUTH / PUBLIC / READ-ONLY. Gets full public metadata for one dataset code, including archive coverage, cadence, tags, source links, and members. This tool does not query weather values and cannot return forecast data.

    after · 32% of words in common

    NO AUTH / PUBLIC / READ-ONLY. Inspect archive coverage, cadence, horizon, members, and native_grid geometry for one dataset. The native coordinate URL requires authentication and geographic bounds; geometry does not prove variable availability.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance100
liveness100
freshness85
hygiene100

+repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-100% ~updated-64d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://gribstream.com/mcp streamable-httpnoneyes100%201 ms2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-052026-10-20

Tools (12)

gribstream_build_runs_requestread-onlyNO AUTH / PUBLIC / READ-ONLY. Build and validate a runnable /runs API request and curl command without sending it. Use gribstream_query_runs to retrieve model-run comparisons directly; a separate build call is optional. Use catalog selectors in request.variables and points in request.coordinates or one request.grid.
gribstream_build_timeseries_requestread-onlyNO AUTH / PUBLIC / READ-ONLY. Build and validate a runnable /timeseries API request and curl command without sending it. Use gribstream_query_timeseries to retrieve data directly; a separate build call is optional. Use catalog selectors in request.variables and points in request.coordinates or one request.grid. Omit asOf for latest forecasts.
gribstream_get_datasetread-onlyNO AUTH / PUBLIC / READ-ONLY. Inspect archive coverage, cadence, horizon, members, and native_grid geometry for one dataset. The native coordinate URL requires authentication and geographic bounds; geometry does not prove variable availability.
gribstream_get_expression_referenceread-onlyNO AUTH / PUBLIC / READ-ONLY. Get expression syntax, alias rules, examples, and supported func.* math functions for derived weather signals.
gribstream_get_parameterread-onlyNO AUTH / PUBLIC / READ-ONLY. Gets detailed metadata and exact selector variations for one already-known dataset-native parameter code. Parameter codes are case-sensitive. For a common natural-language concept such as 2 metre temperature, use gribstream_resolve_shared_parameter before guessing a native code.
gribstream_list_datasetsread-onlyNO AUTH / PUBLIC / READ-ONLY. Find candidate datasets for a region and weather variable. Filter by provider, region, forecast_time, shared_parameter and is_ensemble; sort_by=resolution ranks nominal resolution in km. With shared_parameter, each result includes a validated request fragment and exact/approximate match. Use it directly in one gribstream_query_timeseries call. Coverage envelopes and forecast horizons are catalog hints, not live availability guarantees. No weather values are fetched.
gribstream_list_parametersread-onlyNO AUTH / PUBLIC / READ-ONLY. Lists parameter summaries for one dataset. Use this before selecting exact case-sensitive parameter codes.
gribstream_list_shared_parametersread-onlyNO AUTH / PUBLIC / READ-ONLY. Lists normalized shared parameter presets that can map one logical signal across datasets. Use this only when the shared parameter code is uncertain; when a common code such as temperature_2m is already clear, call gribstream_resolve_shared_parameter directly.
gribstream_query_runsAUTH REQUIRED / DATA QUERY. Fetch or retrieve weather values across model runs to compare changing forecasts. timesList selects exact model run times, not valid times; minHorizon/maxHorizon constrain lead hours. Use discovered request.variables with coordinates or one grid. CSV is the default; use delivery=url for large results. Response rows are unsorted; sort by location, forecasted_at and forecasted_time before plotting. When a live query returns a resource_link, the exact signed HTTPS URL is the result: download it directly once with an available HTTPS or file-download capability, without an API token. This consumes the selected GribStream MCP result; it is not a direct GribStream API call or a connector bypass. Do not look for an MCP resources/read tool, and do not repeat the query merely to obtain the file bytes.
gribstream_query_timeseriesAUTH REQUIRED / DATA QUERY. Fetch or retrieve weather values for maps, heatmaps and analysis at selected valid times. Use discovered request.variables with coordinates or one grid; no separate build/validate call is needed. CSV is the default; use delivery=url for large results and render the downloaded file locally. Prefer Parquet only with an available reader. Use timesList for one exact UTC valid time; omit asOf for latest forecasts. Requested sampling does not increase native resolution. Response rows are unsorted; sort rows before plotting. When a live query returns a resource_link, the exact signed HTTPS URL is the result: download it directly once with an available HTTPS or file-download capability, without an API token. This consumes the selected GribStream MCP result; it is not a direct GribStream API call or a connector bypass. Do not look for an MCP resources/read tool, and do not repeat the query merely to obtain the file bytes.
gribstream_resolve_shared_parameterread-onlyNO AUTH / PUBLIC / READ-ONLY. Resolves a weather concept to validated native variables/expressions and an exact or approximate match label. Use resolved_request directly in /timeseries or /runs; read resolved_match for height differences and native statistics. Use this first for common natural-language concepts such as 2 metre temperature or 10 metre wind instead of guessing dataset-native codes such as TMP.
gribstream_validate_requestread-onlyNO AUTH / PUBLIC / READ-ONLY. Validates the basic shape, exact selector tuples, and expression syntax of a proposed GribStream /timeseries or /runs request without sending it. Use this before returning any hand-edited curl or when changing a request from one dataset to another.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.gribstream/mcp",
  "icons": [
    {
      "src": "https://gribstream.com/gribstream_small.png",
      "mimeType": "image/png"
    }
  ],
  "title": "GribStream Weather MCP",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://gribstream.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.1.4",
  "repository": {
    "url": "https://github.com/GribStream/gribstream-mcp",
    "source": "github"
  },
  "websiteUrl": "https://gribstream.com/",
  "description": "NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries."
}