About Gribstream MCP
Gribstream MCP is a hosted server for discovering and querying GribStream weather forecasts, including NOAA and ECMWF model data. It supports dataset and variable selection, request validation, and OAuth-protected live queries with downloadable results for large outputs.
Key features
- 01Browse forecast datasets and metadata
- 02Find variables, levels, and selectors
- 03Build and validate API requests
- 04Query timeseries and model runs after OAuth
- 05Return large results as downloadable files
Use cases
- 01Choose a forecast dataset for a region and horizon
- 02Compare weather forecasts across model runs
- 03Retrieve dense forecast grids for analysis
MCP support
The hosted Streamable HTTP server exposes tools, prompts, and resources for discovering datasets, building requests, validating them, and querying weather data. Live timeseries and run queries require OAuth.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://gribstream.com/mcpclaude mcp add --transport http gribstream https://gribstream.com/mcp{"mcpServers":{"gribstream":{"type":"http","url":"https://gribstream.com/mcp"}}}Open in Cursor{"servers":{"gribstream":{"type":"http","url":"https://gribstream.com/mcp"}}}Open in VS Code{"mcpServers":{"gribstream":{"type":"http","url":"https://gribstream.com/mcp"}}}{"mcpServers":{"gribstream":{"serverUrl":"https://gribstream.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
12| Parameter | Type | Required | Description |
|---|---|---|---|
| accept | enum | No | Desired response format for the eventual HTTP request. Prefer application/vnd.apache.parquet for dense grids and large typed tabular results.text/csv | application/json | application/ndjson | application/x-ndjson | application/vnd.apache.parquet | application/x-parquet | application/parquet |
| dataset | string | Yes | Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma. |
| request | object | Yes | Runs request body. Use timesList for exact UTC model run times, or the half-open range forecastedFrom+forecastedUntil where forecastedFrom is inclusive, forecastedUntil is exclusive, and forecastedFrom must be earlier than forecastedUntil. Equal bounds select no times. Coordinates must be in request.coordinates, and variable selectors must be in request.variables. |
| request.asOf | string | No | Do not set asOf unless the user explicitly asks for backtesting, time travel, what was known then, or a historical model-run cutoff. Omit asOf for latest or best-available forecasts because it filters out forecast runs newer than the cutoff and can make recent data look missing. This is a UTC model-run-time cutoff for /timeseries, not a live API availability timestamp. |
| request.coordinates | array | No | Point coordinates. This exact field name is required. Do not use location, coord, coords, latitude/longitude at top level, or any singular replacement. |
| request.expressions | array | No | Optional derived variables evaluated from variable aliases. |
| request.filter | object | No | Optional row filter expression evaluated from variable aliases. |
| request.filter.alias | string | No | Output field name for the expression. |
| request.filter.expression | string | No | Expression text. Reference variable aliases, not raw selector names. |
| request.filter.hidden | boolean | No | Optional: hide this expression from the response output. |
| request.forecastedFrom | string | No | Inclusive UTC model-run-time range start for /runs. Must be earlier than forecastedUntil; use timesList for one exact model run time. |
| request.forecastedUntil | string | No | Exclusive UTC model-run-time range end for /runs. Must be later than forecastedFrom; equal bounds select no times. |
| request.fromTime | string | No | Inclusive UTC valid-time range start for /timeseries, for example 2025-05-01T00:00:00Z. Must be earlier than untilTime; use timesList for one exact valid time. |
| request.grid | object | No | Optional regular latitude/longitude grid. Use this instead of or in addition to coordinates. The API preserves the requested step and does not silently coarsen fine grids. The default limit is 120000 expanded coordinates; account-specific plan or token settings may set a different maximum up to 1050000, enough for a full native 0.25-degree global GFS grid, and an oversized-response error reports the applicable maximum. Use URL delivery for dense grids before considering spatial tiling. |
| request.grid.maxLatitude | number | Yes | |
| request.grid.maxLongitude | number | Yes | |
| request.grid.minLatitude | number | Yes | |
| request.grid.minLongitude | number | Yes | |
| request.grid.step | number | Yes | Grid spacing in degrees. Must be greater than 0. |
| request.includeMetadata | array | No | Optional additional row metadata. The only supported value is index_updated_at. Do not request forecasted_at or forecasted_time here; both are regular response columns returned automatically. |
| request.maxHorizon | integer | No | Optional maximum lead time in hours. |
| request.members | array | No | Optional ensemble member numbers. |
| request.minHorizon | integer | No | Optional minimum lead time in hours. |
| request.timesList | array | No | Exact UTC valid times for /timeseries, or exact UTC model run times for /runs. Use this for one exact time instead of setting range bounds equal. |
| request.untilTime | string | No | Exclusive UTC valid-time range end for /timeseries, for example 2025-05-01T06:00:00Z. Must be later than fromTime; equal bounds select no times. |
| request.variables | array | No | Variable selectors. This exact field name is required. Do not use parameters, parameter, variable, selector, or selectors. Values must be exact case-sensitive selector tuples discovered from catalog tools. |
Details
From the project READMEGribStream Weather MCP
GribStream Weather MCP is a hosted Model Context Protocol server for AI access to weather forecast data from GribStream, including NOAA and ECMWF model output.
It helps AI agents discover forecast datasets such as NOAA GFS, HRRR, and NBM or ECMWF IFS, resolve exact forecast variables and levels, validate request bodies, build runnable GribStream Weather API requests, and execute live read-only weather queries after OAuth authorization.
Official GribStream weather API homepage:
https://gribstream.com/
Hosted MCP endpoint:
https://gribstream.com/mcp
Use Cases
Use GribStream MCP when you want an AI tool to:
- List public GribStream weather datasets.
- Choose a NOAA, ECMWF, or other forecast model for a region, horizon, or weather task.
- Query GFS, HRRR, NBM, IFS, and other numerical weather prediction model data exposed by GribStream.
- Find exact variable selectors, levels, and aliases.
- Build a
/timeseriesrequest for values by valid time. - Build a
/runsrequest to compare forecasts across model runs. - Validate a GribStream API request before running it.
- Execute live
/timeseriesor/runsqueries after OAuth authorization. - Retrieve dense forecast grids as downloadable files without embedding the complete result in the conversation.
- Generate a copy-pasteable
curlcommand for the GribStream Weather API.
The hosted MCP server exposes discovery, selector lookup, request building, and validation tools before OAuth. Live /timeseries and /runs query tools require OAuth. Tool descriptions begin with either NO AUTH / PUBLIC / READ-ONLY or AUTH REQUIRED / DATA QUERY so AI clients can route metadata tasks and live data-query tasks correctly. When a client connects through OAuth, GribStream asks the user to sign in and select an active GribStream API token. MCP access tokens are scoped to that selected API token, and the raw API token is not shown to the MCP client.
Connect
Use the hosted endpoint exactly as shown in any MCP client that supports remote Streamable HTTP:
https://gribstream.com/mcp
Do not include trailing punctuation in the URL.
Generic configuration shape:
{
"mcpServers": {
"gribstream": {
"url": "https://gribstream.com/mcp"
}
}
}
LobeHub quick import configuration:
{
"mcpServers": {
"gribstream": {
"type": "http",
"url": "https://gribstream.com/mcp"
}
}
}
Some clients require an explicit transport field:
{
"mcpServers": {
"gribstream": {
"type": "streamable-http",
"url": "https://gribstream.com/mcp"
}
}
}
OAuth
OAuth is needed for live query tools. Most MCP clients should discover OAuth from the hosted endpoint automatically, either during connector setup or when the client requests authenticated tools. If a client asks for manual OAuth 2.0 fields, use:
Authorization URL: https://gribstream.com/authorize
Token URL: https://gribstream.com/token
Client ID: gribstream-mcp-public
Client Secret: leave empty; do not enter a value
Scopes: leave empty
Resource or audience, if requested: https://gribstream.com/mcp
OAuth discovery endpoints:
https://gribstream.com/.well-known/oauth-protected-resource/mcp
https://gribstream.com/.well-known/oauth-authorization-server
The OAuth client is public and uses PKCE with token_endpoint_auth_method set to none. Native desktop clients may use loopback redirect URIs such as http://localhost:{port}/..., http://127.0.0.1:{port}/..., or http://[::1]:{port}/.... A setup form that requires a non-empty client secret is asking for a confidential-client flow and is not compatible with this public MCP OAuth flow.
Server Features
LobeHub and other MCP crawlers may call MCP tools "skills". The live GribStream MCP server exposes the following skills/tools, prompts, and resources.
Skill List
| Name | Auth | Description |
|---|---|---|
gribstream_list_datasets | No auth, public, read-only | List public GribStream datasets and metadata. |
gribstream_get_dataset | No auth, public, read-only | Get full public metadata for one dataset code. |
gribstream_list_parameters | No auth, public, read-only | List parameter summaries for one dataset. |
gribstream_get_parameter | No auth, public, read-only | Get detailed metadata and exact selector variations for one dataset parameter. |
gribstream_list_shared_parameters | No auth, public, read-only | List normalized shared parameter presets. |
gribstream_resolve_shared_parameter | No auth, public, read-only | Resolve one shared parameter preset to native variables and expressions. |
gribstream_get_expression_reference | No auth, public, read-only | Get GribStream expression-language rules, examples, and math functions. |
gribstream_build_timeseries_request | No auth, public, read-only | Build and validate a copy-pasteable authenticated /timeseries API request without sending it. |
gribstream_build_runs_request | No auth, public, read-only | Build and validate a copy-pasteable authenticated /runs API request without sending it. |
gribstream_validate_request | No auth, public, read-only | Validate request shape, selector tuples, and expression syntax without querying weather values. |
gribstream_query_timeseries | OAuth required, data query | Execute an authenticated /timeseries request and return actual weather values. |
gribstream_query_runs | OAuth required, data query | Execute an authenticated /runs request and return actual weather values across model runs. |
Public read-only skills/tools are visible before OAuth. OAuth live query skills/tools may be hidden from tools/list until the client completes OAuth or sends a valid Authorization: Bearer token.
Prompt List
| Name | Description |
|---|---|
build_gribstream_api_request | Turn a weather question into a validated GribStream /timeseries or /runs request and runnable curl. |
build_gfs_forecast_request | Create a validated GFS request for common forecast variables at points or grids. |
build_historical_forecast_request | Build a request for archived forecasts or forecasts selected by a model-run-time cutoff. |
create_grid_request | Create a GribStream request over a latitude/longitude grid instead of point coordinates. |
compare_forecast_runs | Build a /runs request to compare model forecasts across runs or lead times. |
choose_weather_dataset | Choose a GribStream dataset for a region, horizon, weather signal, or forecast task. |
find_weather_variable | Find the exact dataset parameter selectors for a weather signal. |
Resource List
| URI | MIME Type | Description |
|---|---|---|
gribstream://openapi | application/yaml | Machine-readable GribStream OpenAPI specification. |
gribstream://skill/gribstream-query | text/markdown | Vendor-neutral behavioral instructions for AI tools using GribStream. |
Live Query Output
Authenticated live query tools support CSV, JSON, NDJSON, and Parquet results. Small CSV, JSON, and NDJSON results can be returned inline. Set delivery=url for dense grids or large results to receive a short-lived signed HTTPS resource_link to the complete file instead.
- URL delivery works with CSV, JSON, NDJSON, and Parquet. Parquet always uses URL delivery.
- Download the exact signed URL once without an API token. This consumes the MCP result; it is not a separate direct GribStream API request.
- The 10 MB
max_byteslimit applies only to inline MCP results. URL artifacts use a separate server-configured size limit, so omitmax_byteswhen usingdelivery=url. - For dense grids, prefer Parquet when a compatible reader is already installed; otherwise use CSV with
delivery=url. Do not install a dependency or write a Parquet parser solely for one result. - Use one grid request and only split after an actual request or artifact-size error. If splitting is necessary, split time first, variables second, and space last.
structuredContentincludes metadata such ascontent_type,rows,bytes,columns,schema,delivery,cache_hit,signed_url_expires_at, andsuggested_filenamewhen applicable.- Inline tabular results also include a preview plus
request_hash,response_hash, andresult_hash. Usesuggested_filenamewhen saving multiple results so repeated requests or comparisons do not overwrite earlier files. - Rows are streamed from parallel extraction and are not guaranteed to be sorted. Sort by
forecasted_timefor/timeseries, and byforecasted_atplusforecasted_timefor/runs, before plotting or comparing time series.
Links
- Official GribStream weather API homepage:
https://gribstream.com/ - Endpoint:
https://gribstream.com/mcp - MCP page:
https://gribstream.com/mcp - Icon:
https://gribstream.com/gribstream_small.png - OpenAPI:
https://gribstream.com/docs/openapi.yaml - AI setup docs:
https://gribstream.com/ai - API dashboard:
https://gribstream.com/app/dashboard
Try It
After connecting GribStream MCP to an AI tool, ask:
Use GribStream MCP to build a GFS 2m temperature timeseries request for Houston for tomorrow at 12:00 UTC. Validate the request and return a runnable curl command.
If your client has completed OAuth, you can also ask it to run the query:
Use GribStream MCP to run a GFS 2m temperature timeseries query for Houston for tomorrow at 12:00 UTC and return CSV.
For a dense-grid visualization:
Using GribStream, plot the latest available ICON-D2 2 metre temperature forecast over Germany at 0.025 degree resolution as a beautiful PNG.
Or:
Use GribStream MCP to find the best dataset for short-range precipitation forecasts in the continental United States. Explain the tradeoffs and build a validated example request.
More examples:
For the GribStream API itself, see the OpenAPI specification.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.