关于 Gribstream MCP
Gribstream MCP 是用于发现和查询 GribStream 天气预报的托管服务,涵盖 NOAA 和 ECMWF 模型数据。它支持数据集与变量筛选、请求验证,以及受 OAuth 保护的实时查询,并可将大型结果作为文件下载。
主要功能
- 01浏览预报数据集和元数据
- 02查找变量、层级及选择器
- 03构建并验证 API 请求
- 04OAuth 授权后查询时间序列和模式运行
- 05将大型结果作为文件下载
适用场景
- 01按地区和预报时效选择数据集
- 02比较不同模式运行的天气预报
- 03获取密集预报网格用于分析
MCP 相关
托管的 Streamable HTTP 服务提供用于发现数据集、构建和验证请求及查询天气数据的工具、提示词和资源。实时时间序列和模式运行查询需要 OAuth。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gribstream.com/mcpclaude mcp add --transport http gribstream https://gribstream.com/mcp{"mcpServers":{"gribstream":{"type":"http","url":"https://gribstream.com/mcp"}}}在 Cursor 中打开{"servers":{"gribstream":{"type":"http","url":"https://gribstream.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"gribstream":{"type":"http","url":"https://gribstream.com/mcp"}}}{"mcpServers":{"gribstream":{"serverUrl":"https://gribstream.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
12| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| accept | enum | 否 | 最终 HTTP 请求所需的响应格式。对于密集网格和大型类型化表格结果,优先使用 application/vnd.apache.parquet。text/csv | application/json | application/ndjson | application/x-ndjson | application/vnd.apache.parquet | application/x-parquet | application/parquet |
| dataset | string | 是 | 数据集代码,例如 gfs、ifsoper、nbm、hrrr 或 urma。 |
| request | object | 是 | Runs 请求正文。使用 timesList 指定精确的 UTC 模型运行时间,或使用半开区间 forecastedFrom+forecastedUntil,其中 forecastedFrom 为包含端点,forecastedUntil 为不包含端点,且 forecastedFrom 必须早于 forecastedUntil。上下界相等时不会选中任何时间。坐标必须位于 request.coordinates 中,变量选择器必须位于 request.variables 中。 |
| request.asOf | string | 否 | 除非用户明确要求回测、时间穿越、了解当时已知的信息或历史模型运行截止时间,否则不要设置 asOf。对于最新或最佳可用预报,请省略 asOf,因为它会筛掉截止时间之后运行的预报,可能导致近期数据看起来缺失。这是 /timeseries 的 UTC 模型运行时间截止点,不是实时 API 可用性时间戳。 |
| request.coordinates | array | 否 | 点坐标。必须使用此精确字段名。不要使用 location、coord、coords、顶层 latitude/longitude 或任何单数替代形式。 |
| request.expressions | array | 否 | 可选的派生变量,由变量别名计算得出。 |
| request.filter | object | 否 | 可选的行筛选表达式,由变量别名计算得出。 |
| request.filter.alias | string | 否 | 表达式的输出字段名。 |
| request.filter.expression | string | 否 | 表达式文本。引用变量别名,而非原始选择器名称。 |
| request.filter.hidden | boolean | 否 | 可选:在响应输出中隐藏此表达式。 |
| request.forecastedFrom | string | 否 | /runs 的 UTC 模式运行时间范围起点(包含)。必须早于 forecastedUntil;如需指定一个确切的模式运行时间,请使用 timesList。 |
| request.forecastedUntil | string | 否 | /runs 的 UTC 模式运行时间范围终点(不包含)。必须晚于 forecastedFrom;如果两个边界相等,则不会选中任何时间。 |
| request.fromTime | string | 否 | /timeseries 的 UTC 有效时间范围起点(包含),例如 2025-05-01T00:00:00Z。必须早于 untilTime;如需指定一个确切的有效时间,请使用 timesList。 |
| request.grid | object | 否 | 可选的规则经纬度网格。可替代或补充 coordinates 使用。API 会保留请求的步长,不会静默地降低精细网格的分辨率。默认上限为 120000 个展开后的坐标;账户套餐或令牌设置可能设定不同的最大值,最高为 1050000,足以覆盖完整的原生 0.25 度全球 GFS 网格;超大响应错误会报告适用的上限。对于密集网格,请优先使用 URL 交付,再考虑空间分块。 |
| request.grid.maxLatitude | number | 是 | |
| request.grid.maxLongitude | number | 是 | |
| request.grid.minLatitude | number | 是 | |
| request.grid.minLongitude | number | 是 | |
| request.grid.step | number | 是 | 网格间距,单位为度。必须大于 0。 |
| request.includeMetadata | array | 否 | 可选的附加行元数据。唯一受支持的值是 index_updated_at。不要在此处请求 forecasted_at 或 forecasted_time;它们是常规响应列,会自动返回。 |
| request.maxHorizon | integer | 否 | 可选的最大提前时间,单位为小时。 |
| request.members | array | 否 | 可选的集合成员编号。 |
| request.minHorizon | integer | 否 | 可选的最小提前时间,单位为小时。 |
| request.timesList | array | 否 | 用于 /timeseries 的精确 UTC 有效时间,或用于 /runs 的精确 UTC 模式运行时间。指定一个确切时间时,请使用此参数,而不要将范围边界设为相等。 |
| request.untilTime | string | 否 | /timeseries 的 UTC 有效时间范围终点(不包含),例如 2025-05-01T06:00:00Z。必须晚于 fromTime;如果两个边界相等,则不会选中任何时间。 |
| request.variables | array | 否 | 变量选择器。必须使用此确切字段名。不要使用 parameters、parameter、variable、selector 或 selectors。值必须是通过目录工具发现的、大小写完全匹配的选择器元组。 |
详细介绍
GribStream Weather MCP
GribStream Weather MCP 是托管式 Model Context Protocol 服务,可让 AI 访问 GribStream 的天气预报数据,包括 NOAA 和 ECMWF 模型输出。
它可帮助 AI Agent 发现 NOAA GFS、HRRR 和 NBM 或 ECMWF IFS 等预报数据集,解析准确的预报变量和层级,验证请求正文,构建可运行的 GribStream Weather API 请求,并在完成 OAuth 授权后执行实时只读天气查询。
GribStream 官方天气 API 主页:
https://gribstream.com/
托管式 MCP 端点:
https://gribstream.com/mcp
使用场景
当你希望 AI 工具执行以下操作时,可使用 GribStream MCP:
- 列出 GribStream 公开的天气数据集。
- 为某个地区、预报时段或天气任务选择 NOAA、ECMWF 或其他预报模型。
- 查询 GribStream 提供的 GFS、HRRR、NBM、IFS 和其他数值天气预报模型数据。
- 查找准确的变量选择器、层级和别名。
- 构建按有效时间获取数值的
/timeseries请求。 - 构建用于比较不同模型运行结果的
/runs请求。 - 在运行前验证 GribStream API 请求。
- 在完成 OAuth 授权后执行实时
/timeseries或/runs查询。 - 将密集预报网格作为可下载文件获取,而不在对话中嵌入完整结果。
- 生成可复制粘贴的 GribStream Weather API
curl命令。
托管式 MCP 服务在 OAuth 授权前提供发现、选择器查询、请求构建和验证工具。实时 /timeseries 和 /runs 查询工具需要 OAuth。工具说明以 NO AUTH / PUBLIC / READ-ONLY 或 AUTH REQUIRED / DATA QUERY 开头,方便 AI 客户端正确处理元数据任务和实时数据查询任务。客户端通过 OAuth 连接时,GribStream 会要求用户登录并选择一个有效的 GribStream API 令牌。MCP 访问令牌的权限范围仅限于所选 API 令牌,且不会向 MCP 客户端显示原始 API 令牌。
连接
在任何支持远程 Streamable HTTP 的 MCP 客户端中,使用所示的托管端点:
https://gribstream.com/mcp
URL 末尾不要添加标点符号。
通用配置格式:
{
"mcpServers": {
"gribstream": {
"url": "https://gribstream.com/mcp"
}
}
}
LobeHub 快速导入配置:
{
"mcpServers": {
"gribstream": {
"type": "http",
"url": "https://gribstream.com/mcp"
}
}
}
某些客户端需要显式指定传输字段:
{
"mcpServers": {
"gribstream": {
"type": "streamable-http",
"url": "https://gribstream.com/mcp"
}
}
}
OAuth
实时查询工具需要 OAuth。大多数 MCP 客户端应能从托管端点自动发现 OAuth,无论是在连接器设置期间,还是在客户端请求需要身份验证的工具时。如果客户端要求手动填写 OAuth 2.0 字段,请使用:
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 发现端点:
https://gribstream.com/.well-known/oauth-protected-resource/mcp
https://gribstream.com/.well-known/oauth-authorization-server
OAuth 客户端是公共客户端,使用 PKCE,并将 token_endpoint_auth_method 设为 none。原生桌面客户端可使用环回重定向 URI,例如 http://localhost:{port}/...、http://127.0.0.1:{port}/... 或 http://[::1]:{port}/...。要求填写非空客户端密钥的设置表单使用的是机密客户端流程,与此公共 MCP OAuth 流程不兼容。
服务功能
LobeHub 和其他 MCP 爬虫可能会将 MCP 工具称为“技能”。在线 GribStream MCP 服务提供以下技能/工具、提示词和资源。
技能列表
| 名称 | 身份验证 | 描述 |
|---|---|---|
gribstream_list_datasets | 无需身份验证,公开,只读 | 列出公开的 GribStream 数据集和元数据。 |
gribstream_get_dataset | 无需身份验证,公开,只读 | 获取一个数据集代码的完整公开元数据。 |
gribstream_list_parameters | 无需身份验证,公开,只读 | 列出一个数据集的参数摘要。 |
gribstream_get_parameter | 无需身份验证,公开,只读 | 获取一个数据集参数的详细元数据和准确的选择器变体。 |
gribstream_list_shared_parameters | 无需身份验证,公开,只读 | 列出标准化的共享参数预设。 |
gribstream_resolve_shared_parameter | 无需身份验证,公开,只读 | 将一个共享参数预设解析为原生变量和表达式。 |
gribstream_get_expression_reference | 无需身份验证,公开,只读 | 获取 GribStream 表达式语言规则、示例和数学函数。 |
gribstream_build_timeseries_request | 无需身份验证,公开,只读 | 构建并验证可复制粘贴的、经过身份验证的 /timeseries API 请求,但不会发送请求。 |
gribstream_build_runs_request | 无需身份验证,公开,只读 | 构建并验证可复制粘贴的、经过身份验证的 /runs API 请求,但不会发送请求。 |
gribstream_validate_request | 无需身份验证,公开,只读 | 验证请求结构、选择器元组和表达式语法,不查询天气数值。 |
gribstream_query_timeseries | 需要 OAuth,数据查询 | 执行经过身份验证的 /timeseries 请求,并返回实际天气数值。 |
gribstream_query_runs | 需要 OAuth,数据查询 | 执行经过身份验证的 /runs 请求,并返回不同模型运行的实际天气数值。 |
公开只读的技能/工具在 OAuth 验证前可见。OAuth 实时查询技能/工具可能会从 tools/list 中隐藏,直到客户端完成 OAuth 或发送有效的 Authorization: Bearer 令牌。
提示词列表
| 名称 | 描述 |
|---|---|
build_gribstream_api_request | 将天气问题转换为经过验证的 GribStream /timeseries 或 /runs 请求和可运行的 curl 命令。 |
build_gfs_forecast_request | 为点或网格位置的常见预报变量创建经过验证的 GFS 请求。 |
build_historical_forecast_request | 为存档预报或按模型运行时间截止值筛选的预报构建请求。 |
create_grid_request | 创建覆盖纬度/经度网格而非点坐标的 GribStream 请求。 |
compare_forecast_runs | 构建 /runs 请求,以比较不同运行或预报时效的模型预报。 |
choose_weather_dataset | 根据区域、预报时段、天气信号或预报任务选择 GribStream 数据集。 |
find_weather_variable | 查找天气信号对应的准确数据集参数选择器。 |
资源列表
| URI | MIME 类型 | 描述 |
|---|---|---|
gribstream://openapi | application/yaml | 机器可读的 GribStream OpenAPI 规范。 |
gribstream://skill/gribstream-query | text/markdown | 面向使用 GribStream 的 AI 工具的厂商中立行为说明。 |
实时查询输出
经过身份验证的实时查询工具支持 CSV、JSON、NDJSON 和 Parquet 格式的结果。较小的 CSV、JSON 和 NDJSON 结果可以直接内联返回。对于密集网格或大型结果,设置 delivery=url,即可获得指向完整文件的短期有效签名 HTTPS resource_link。
- URL 交付适用于 CSV、JSON、NDJSON 和 Parquet。Parquet 始终使用 URL 交付。
- 不带 API 令牌,仅下载一次确切的签名 URL。此操作会消耗 MCP 结果,并非单独的 GribStream API 直接请求。
- 10 MB 的
max_bytes限制仅适用于内联 MCP 结果。URL 交付的文件使用单独的服务器配置大小限制,因此使用delivery=url时请省略max_bytes。 - 对于密集网格,如果已安装兼容的读取器,优先使用 Parquet;否则使用带
delivery=url的 CSV。不要仅为获取单个结果而安装依赖项或编写 Parquet 解析器。 - 使用一次网格请求,并且仅在实际请求或文件大小出错后才进行拆分。如有必要,先按时间拆分,其次按变量拆分,最后按空间拆分。
structuredContent在适用时包含content_type、rows、bytes、columns、schema、delivery、cache_hit、signed_url_expires_at和suggested_filename等元数据。- 内联表格结果还包含预览以及
request_hash、response_hash和result_hash。保存多个结果时使用suggested_filename,以免重复请求或比较结果覆盖之前的文件。 - 数据行通过并行提取流式传输,不保证已排序。绘制或比较时间序列前,
/timeseries按forecasted_time排序,/runs按forecasted_at和forecasted_time排序。
链接
- GribStream 官方天气 API 主页:
https://gribstream.com/ - 端点:
https://gribstream.com/mcp - MCP 页面:
https://gribstream.com/mcp - 图标:
https://gribstream.com/gribstream_small.png - OpenAPI:
https://gribstream.com/docs/openapi.yaml - AI 设置文档:
https://gribstream.com/ai - API 仪表板:
https://gribstream.com/app/dashboard
试用
将 GribStream MCP 连接到 AI 工具后,询问:
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.
如果客户端已完成 OAuth,也可以让它运行此查询:
Use GribStream MCP to run a GFS 2m temperature timeseries query for Houston for tomorrow at 12:00 UTC and return CSV.
要可视化密集网格:
Using GribStream, plot the latest available ICON-D2 2 metre temperature forecast over Germany at 0.025 degree resolution as a beautiful PNG.
或者:
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.
更多示例:
有关 GribStream API 本身的信息,请参阅 OpenAPI 规范。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。