# @cyanheads/open-meteo-mcp-server 中文文档

规范地址：https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/

版本：0\.6\.0
npm 元数据更新时间：2026-11-10T10:23:50.574Z
中文译文更新时间：2026-11-14T15:37:26.071Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cyanheads/open-meteo-mcp-server
原文对照：https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/?lang=original
项目主页：https://github.com/cyanheads/open-meteo-mcp-server#readme
源码仓库：https://github.com/cyanheads/open-meteo-mcp-server

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：996 kB，158 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24\.0\.0
- 运行依赖：4 个
- 首次发布：2026-05-30T14:07:08.918Z
- 最新版本发布：2026-11-10T10:23:50.344Z
- 近 30 天下载量：2001（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：32（近 12 个月 32 个）

## 中文简介

地理编码地点、获取全球天气预报、历史气候、海洋条件、空气质量和地形高地。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.

## 安装

```sh
npm install @cyanheads/open-meteo-mcp-server
```

也可以使用：`pnpm add @cyanheads/open-meteo-mcp-server`、`yarn add @cyanheads/open-meteo-mcp-server`、`bun add @cyanheads/open-meteo-mcp-server`

## README

# @ cyanheads/ open- meteo- mcp- server (中文(简体) )

**地理编码地点、获取全球天气预报、历史气候、海洋条件、空气质量和地形高地。 (原始内容存档于2012-10-12). STIO or Streamable HTTP.**

12 个工具

[![Version](https://img.shields.io/badge/Version-0.6.0-blue.svg?style=flat-square)](https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/open-meteo-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-%5E2.4.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/open-meteo-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/open-meteo-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-%5E7.0.2-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.4.4-blueviolet.svg?style=flat-square)](https://bun.sh/)

[![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/open-meteo-mcp-server/releases/latest/download/open-meteo-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=open-meteo-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvb3Blbi1tZXRlby1tY3Atc2VydmVyIl19) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22open-meteo-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fopen-meteo-mcp-server%22%5D%7D)

[![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)

**公共主机服务器 :** [https://open-meteo.caseyjhand.com/mcp 页面存档备份,存于互联网档案馆](https://open-meteo.caseyjhand.com/mcp)

* * *

## 概览

来自开放气象的全球天气:预报,历史回溯到1940年,海洋条件,空气质量,概率共通,河流排出,气候预测. 查查任何地点的名字, 抽取小时和每日变量, 运行 SQL 对大结果。 不需要 API 密钥 .

### 工具

| 工具 | 说明 |
| :-- | :-- |
| `openmeteo_search_locations` | 确定一个地名,以与国家、区域、时区和人口进行排序坐标 |
| `openmeteo_get_forecast` | 目前的情况和每天每小时预报16天,过去最多92天,与最佳匹配者或选定的模特并肩进行 |
| `openmeteo_get_historical` | 1940年至今,从重新分析档案到现在的每小时/每天的历史 |
| `openmeteo_get_marine` | 波浪、膨胀和海平面状况:以公制或帝国单位计,目前、最多8个预报日或档案范围 |
| `openmeteo_get_air_quality` | 模拟CAMS污染物、花粉和AQI:当前,最多7个预测日,或存档范围 |
| `openmeteo_get_elevation` | 哥白尼DEM地势高地:最多1 000对坐标对,每对呼叫进行第一次抽样,其余报告重新提交 |
| `openmeteo_get_ensemble` | 按成员分列的超额和不确定性预测(最多64个成员,最多35天) |
| `openmeteo_get_flood` | GloFAS河流排出量:预测或日期范围为~6个月(接受自1984-01-01;排出量从1997-01-01起),来自无缝或所选择的v4型号 |
| `openmeteo_get_climate` | 1950-2050年经偏差校正的每日CMIP6预测,最多7个模型 |
| `openmeteo_dataframe_describe` | 列出在 DataCanvas 上设置的表格和列 |
| `openmeteo_dataframe_query` | 运行只读的 SQL `SELECT` 相对于已安排的表格 |
| `openmeteo_dataframe_drop` | 从 DataCanvas (opt- in) 中删除一个已分级的表格或视图 |

服务器还发布代理技能, `open-meteo-guide` (单位:千美元)`skill://open-meteo-guide/SKILL.md`源代码 `skills/open-meteo-guide/`:哪一个工具可以回答哪个问题,加上超常概率的门,霜,比较一个正常的,气候变化,冲浪斑点,河细胞,以及AQI计时.

## 能力参考

### `openmeteo_search_locations` 工具

-   一个空地 `name` ("巴黎",不是"法国巴黎"),可选 `country` (ISO 3166-1 alpha-2:两个字母,无论什么情况,从来不是国名)和 `language` (默认) `en`(三); `count` 1 - 10, 默认 5
-   每个结果都带有坐标,一个IANA `timezone`, (中文(简体) ), `country` 编号 : `country_code`, (中文(简体) ), `admin1` 编号 : `admin2`, (中文(简体) ), `population`,以及 `feature_code`; 无匹配失败为 `no_results`
-   A 类 `notice` 旗上标有无效或分100 000人口的顶级相配,这往往意味着一个历史外来地名("Bangalore","Calcutta")
-   缺少下面的本地标记查询 `en` (a) 用其文字所指的语文重审一次; `effective_language` 重试成功时命名它( r) :`上海` → `zh`)),结果回到本地化

* * *

### `openmeteo_get_forecast` 工具

-   至少其中一个 `current_variables`, (中文(简体) ), `hourly_variables`,或 `daily_variables` (每个最多50个),每个也作为一个逗号连接字符串接受,并在Open-Meteo自己的密钥下接受 `current`, (中文(简体) ), `hourly`, (中文(简体) ), `daily`· ; `forecast_days` 1-16(违约7), `past_days` 0-92( 默认 0)
-   `cell_selection` (单位:千美元)`land`, (中文(简体) ), `sea`, (中文(简体) ), `nearest`)取出答题的网格:省略出题,Open-Meteo从陆地取出答题,所以一分出境外读取岸上条件. 设定 `sea` 在水上加一点(风能航行,冲浪,或离岸风能航行),在地上加一点,即是默认的。 回应 `latitude` 编号 : `longitude` 将响应的单元格命名
-   时间戳 `hourly` 编号 : `daily` 记录 `hourly_units` 编号 : `daily_units`· ; `current_variables` 添加a `current` 来自15分钟数据的对象(`interval` 900个)加 `current_units`
-   选择 `models` 读取 Open-Meteo `best_match`· ; `models` 比较确定型号(例如:. `ncep_gfs_seamless`, (中文(简体) ), `ecmwf_ifs025`, (中文(简体) ), `dwd_icon_seamless`; 更古老的拼写像 `gfs_seamless` ”). 每个小时和每天的栏目都有2+型号带有型号后缀 `models` 反应一致. `current_variables` 最多只使用一个模型(`current_multi_model`(中文(简体) )
-   一个当时没有数据的区域模型从一个多模型反应中被放弃: `notice` 命名它,或者,当一个模型留下了无后缀的列时,说这些值不能归为模型;当每个被请求的模型都错过时,调用失败为: `coverage_gap`
-   偏爱 `past_days` 结束 `openmeteo_get_historical` 在上周, 存档的 ERA5 组件滞后

* * *

### `openmeteo_get_historical` 工具

-   `start_date` 财务报告和审定财务报表 `end_date` 所需(YYYY-MM-DD,从1940-01-01起),加上其中至少一个 `hourly_variables` 编号 : `daily_variables`,在预测工具上命名(列表或一个逗号连接字符串,也列在下方) `hourly` 编号 : `daily`(中文(简体) )
-   `cell_selection` (单位:千美元)`land`, (中文(简体) ), `sea`, (中文(简体) ), `nearest`与预测工具相同:省略了陆地细胞的答案,所以离岸点读取岸上的条件; `sea` 移动到水上
-   选择 `models` 读取最佳匹配(IFS HRES + ERA5 + ERA5- Land,来源按日期不同);最多8个 `models` 针入出处。 ERA5家族在一周后运行, `ecmwf_ifs` 没有拖延,和 `cerra` 仅涵盖欧洲
-   输出回声 `models` 返回时 `date_range`; 2+ 型号,每列带有模型名后缀. 此时没有数据的模型( :`cerra` 从多模式反应中放弃 `notice` 命名它,或当一个模型留下了无后缀的列时(`era5,cerra`),说这些值不能归结于模型

* * *

### `openmeteo_get_marine` 工具

-   每个呼叫一个窗口 : `forecast_days` 1-8 (上游默认7) 与 `past_days` 0-92年,或a `start_date` 编号 : `end_date` 存档范围可追溯到至少 2022 年 。 混合失败为 `forecast_window_conflict`,作为 `date_range_incomplete`,且上游范围以外的日期接受为 `date_out_of_range`
-   至少其中一个 `current_variables`, (中文(简体) ), `hourly_variables`,或 `daily_variables` (波高、波长、波高、波高、波高、海平面温度); 被保护的水返回到近零波, 内地返回的点数为零(在 `notice`),海岸附近的一个陆地点从附近的一个有真实值的海细胞中解答而无通知(请检查答复是否) `latitude` 编号 : `longitude` 那是你所说的水 `ocean_current_velocity` 已经没有海洋了
-   `current_variables` 使用小时名称并添加一个 `current` 来自15分钟数据的对象(`interval` 900个)加 `current_units`,与任意一个窗口并列;每日名称失败为 `variable_wrong_cadence`
-   `length_unit` (单位:千美元)`metric` 编号 : `imperial`确定每个高度, `sea_level_height_msl` 包括,以米或英尺计; `wind_speed_unit` (单位:千美元)`kmh`, (中文(简体) ), `mph`, (中文(简体) ), `ms`, (中文(简体) ), `kn`(组数) `ocean_current_velocity`· ; `temperature_unit` (单位:千美元)`celsius` 编号 : `fahrenheit`(组数) `sea_surface_temperature`。Open-Meteo转换值 `*_units` 标记它们的地图( e)`mph` 读取 `mp/h`(中文(简体) )

* * *

### `openmeteo_get_air_quality` 工具

-   每个呼叫一个窗口 : `forecast_days` 1-7 (上游默认 5) 与 `past_days` 0-92年,或a `start_date` 编号 : `end_date` 存档范围为2022年8月(`us_aqi` 一天后开始)。 一样 `forecast_window_conflict`, (中文(简体) ), `date_range_incomplete`,以及 `date_out_of_range` 作为海洋工具的拒绝
-   至少其中一个 `current_variables` 联合国 `current` 对象, `interval` 3600号或 `hourly_variables`:PM2.5,PM10,NO2,SO2,O3,CO,粉尘,花粉,欧美AQI. Pollen只为欧洲做模特 在花粉季节; 在其他地方它回来无效 `notice` 说吧
-   `data_source: "CAMS"` 将每个响应标记为建模网格数据,而不是站点测量

* * *

### `openmeteo_get_elevation` 工具

-   平行 `latitudes[]` 编号 : `longitudes[]` 最多为 1 000对的阵列; 长度不均, 以 `coordinate_count_mismatch`,在全数组上进行比较
-   在一项上游请求中取样前100对(Elevation API的每个请求限制); `unprocessed_count` 说还有多少人 `next_offset` 何处恢复——重新提交 `latitudes.slice(next_offset)` 财务报告和审定财务报表 `longitudes.slice(next_offset)` 直至 `next_offset` 实值 `null`. 调用100个或更少的返回 `0` 编号 : `null`。每个样本的一对都算作一个呼叫 与 Open-Meteo 的每个IP 限制(每分钟600个) , 所以一分钟内的第七个100平方块会回来 `rate_limited`
-   `elevations[]` 按输入顺序,每个 `{ latitude, longitude, elevation_m }` 哥白尼德国马克(~90米); `elevation_m` 实值 `null` 在DEM没有价值的情况下(纬度90),其余的呼叫没有成功

* * *

### `openmeteo_get_ensemble` 工具

-   至少其中一个 `hourly_variables` 编号 : `daily_variables`· ; `forecast_days` 1 - 35 (违约7), `past_days` 0-92. 大多数模型在16天内结束(`ncep_gefs05` 运行到第34天左右。过去,栏是无效的 `notice` 说数据结束之处
-   `models` 使用一个综艺名称(例如:. `ecmwf_ifs025_ensemble`51名成员; `gem_global_ensemble`, 21); 省略或空白选择 `ecmwf_ifs025_ensemble`,在 `model`
-   `cell_selection` (单位:千美元)`land`, (中文(简体) ), `sea`, (中文(简体) ), `nearest`)在预测工具上发挥作用:省略了,一个土地单元格答案;答复 `latitude` 编号 : `longitude` 将响应的单元格命名
-   每个变量返回每个成员的列(`temperature_2m_member01`.)最多64名成员; `member_count` 排除控制运行。 在其覆盖范围以外被询问的区域模型作为一个不可重复的输入错误失败;切换到全球模型

* * *

### `openmeteo_get_flood` 工具

-   `daily_variables` 需要(最多20个),全部为立方米/秒: `river_discharge` 加统计 `river_discharge_mean` 编号 : `_median` 编号 : `_min` 编号 : `_max` 编号 : `_p25` 编号 : `_p75`,在预测运行的日子里搭载综艺节目并重复 `river_discharge` 重新分析天数
-   每个呼叫一个模式: `forecast_days` 1–210(目前的GloFAS运行时间约为6个月;后天无效),或 a `start_date` 编号 : `end_date` 1984-01-01年接受范围,但从1997-01-01开始排放,更早的日子是无效的。 混合失败为 `forecast_days_conflict`,作为 `date_range_incomplete`,上游范围以外的日期接受为 `date_out_of_range`
-   选择 `models` 读取 `seamless_v4`数字 : `consolidated_v4` 2023-08-05年之前的重新分析, `forecast_v4` 从那时开始运行. `models: ["consolidated_v4"]` 阅读1997-01-01至2025-05-31年的再分析(该期间以外的数值,以及 `forecast_days`(三); `forecast_v4` 2023-06-01开通. 输出回声 `models`; 使用 2+ 型号,每列带有模型名后缀 `notice` 名称无跨度
-   排出物来自离坐标最近的GloFAS 0.05°的网格细胞,不可靠地来自你所指的河流上的细胞;当值远低于河道所携带的时,将坐标跨出航道并进行比较. GloFAS 覆盖范围以外的 Null

* * *

### `openmeteo_get_climate` 工具

-   `start_date` 编号 : `end_date` 1950-01-01至2050-12-31以及 `daily_variables` 需要( API 仅为每日); 最多 7 CMIP6 `models`,比如说. `CMCC_CM2_VHR4`, (中文(简体) ), `MRI_AGCM3_2_S`
-   有了2+模型,每个变量被后缀为模型名;一个单一或省略的模型返回平原名. 模型不携带的变数是无效的
-   `cell_selection` (单位:千美元)`land`, (中文(简体) ), `sea`, (中文(简体) ), `nearest`与预测工具相同,但反应除外 `latitude` 编号 : `longitude` 当值随它而变化时,它们可以保持不变,所以它们不会显示哪个单元格已回答

* * *

### `openmeteo_dataframe_describe` 工具

-   拿着 `canvas_id` 返回一个溢出天气工具; 列出每个表格的 `name`, (中文(简体) ), `kind`, (中文(简体) ), `row_count`,加上画布 `expires_at`
-   失败作为 `canvas_not_enabled` 当帆布关闭,或 `canvas_not_found` 当身份不明或超过其24小时滑行 TTL 时

* * *

### `openmeteo_dataframe_query` 工具

-   `canvas_id` 加上只读 `SELECT` 对抗舞台 `table_name`· ; `rows` 握住第一个 `limit` 行( 默认 25, 每个整行, 数值从不剪切) 。 一个更大的 `limit` 返回最多为一万行(或 `CANVAS_DEFAULT_ROW_LIMIT` 当下)和a `notice` 这么说的. `row_count` 准确的总数和 `truncated` 实值 `true` 当它超过 `rows`; 页使用 `OFFSET <rows.length>` 下的一个 `ORDER BY`
-   页面的大小取决于 `limit` 和所选的列,所以从一个成员后缀的组合表格中选择问题需要的列,而不是 `SELECT *`。一个回复最多载有8 000 000个行数据的字符(所写为JSON的行,这个字符需要按其逃出长度计算);一个较大的页面被拒绝,因为 `result_too_large`,永远不要剪接, 并且留言说有多少领先的行适合
-   如果计数失败或运行过5秒,行仍然返回, `row_count` 是一个下限 `count_error` 说明原因(例如:. `count_timeout`(中文(简体) )
-   失败作为 `canvas_not_enabled`, (中文(简体) ), `canvas_not_found`, (中文(简体) ), `missing_table`, (中文(简体) ), `system_catalog_access` (系统目录被封锁,DuckDB元数据视图的名称也一样) `pg_class` 用作列别名、CTE名称或表格别名),或 `result_too_large`。从查询引擎中转发的错误消息被切入到2000个字符,保留其代码和 `reason`

* * *

### `openmeteo_dataframe_drop` 工具

-   默认关闭: 列为已禁用直至 `OPENMETEO_DATAFRAME_DROP_ENABLED=true`
-   `canvas_id` 加上准确 `table_name` 从 `openmeteo_dataframe_describe`; 删除该表格或视图并返回 `dropped` 编辑 `remaining_tables`。未显示返回的名称 `dropped: false`,所以重复下降是安全的
-   失败作为 `canvas_not_enabled`, (中文(简体) ), `canvas_not_found`,或 `invalid_table_name` (不是普通的 SQL 标识符,或保留的关键字)

## 特征

建造在 [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio和可流式的 HTTP 传输器,可插接式(`none` 编号 : `jwt` 编号 : `oauth`),可互换存储(`in-memory`, (中文(简体) ), `filesystem`, (中文(简体) ), `Supabase`, (中文(简体) ), `Cloudflare KV/R2/D1`),结构化记录,可选择的OpenTeleometry tracking.

Open-Meteo 专用设备 :

-   没有非商业用途的 API 密钥; 商业用途需要 Open-Meteo 付费的 API 级
-   专栏API 响应重塑为每时标记录 `*_units` 地图,在不同的预测和存档中使用相同的可变名称
-   Data Canvas 7个气象工具的外溢效应: `CANVAS_PROVIDER_TYPE=duckdb` (默认)超预算结果作为DuckDB表(答复载有 `canvas_id`, (中文(简体) ), `table_name`, (中文(简体) ), `truncated: true`; 与 `none` 它返回一个有边框的预览并 `truncated: true`
-   `models` 在预测,历史,综艺,气候,和洪水工具上不是允许列表,所以一个模型Open-Meteo在没有服务器更新的情况下添加了后期的作品

方便代理输出 :

-   第一工作流程: `openmeteo_search_locations` 返回 IANA 数据 `timezone` 与坐标,准备任何气象工具 `timezone` 输入( 默认) `auto`(中文(简体) )
-   可变列表和模型列表取一个数组或一个逗号连接字符串(`"temperature_2m,precipitation"`; 计 数 `*_variables` 字段还回答 Open-Meteo 自己的 `current`, (中文(简体) ), `hourly`,以及 `daily` 工具有字段的键
-   输入的拒绝 : `variable_wrong_cadence` (名称正确字段), `request_too_large` (将输入命名为窄), `coverage_gap` (数据集网格或模型域外的坐标), `date_out_of_range` (范围外的日期、海洋、空气质量、气候或洪水终点接受),以及 `rate_limited`; 仅 `Too many concurrent requests` 先重审 超过三次尝试的停电失败 `upstream_unavailable`,或 `upstream_timeout` 上次尝试超时时
-   请求 URL 从未出现在错误数据或客户端可见日志中
-   一个 `notice` 对于数据本身无法显示的每个响应:无服务的可变名称,在数据集覆盖范围外的无效,以及溢出行去的地方

## 开始

连接到主机实例, 没有安装 :

```sh
claude mcp add --transport http open-meteo-mcp-server https://open-meteo.caseyjhand.com/mcp
```

或者在当地运行它:

```sh
claude mcp add open-meteo-mcp-server -- npx -y @cyanheads/open-meteo-mcp-server
```

对于其他客户端,请将此添加到 MCP 配置文件中 :

```json
{
  "mcpServers": {
    "open-meteo-mcp-server": {
      "command": "npx",
      "args": ["-y", "@cyanheads/open-meteo-mcp-server"]
    }
  }
}
```

非商业用途不需要 API 密钥; 商业用途需要 [Open-Meteo 付费 API 级](https://open-meteo.com/en/pricing)。对于 Docker 或源构建,参见 [运行服务器](https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/#readme-running-the-server)。 。 。 .

## 配置

每个变量都是可选的.

| 变量 | 说明 | 默认 |
| :-- | :-- | :-- |
| `OPEN_METEO_API_BASE_URL` | 预测和高地API基础URL. | `https://api.open-meteo.com` |
| `OPEN_METEO_ARCHIVE_BASE_URL` | 历史档案 API Base URL. | `https://archive-api.open-meteo.com` |
| `OPEN_METEO_MARINE_BASE_URL` | 海洋API基地URL. | `https://marine-api.open-meteo.com` |
| `OPEN_METEO_AIR_QUALITY_BASE_URL` | CAMS空气质量API基础URL. | `https://air-quality-api.open-meteo.com` |
| `OPEN_METEO_GEOCODING_BASE_URL` | 地理编码 API 基础 URL. | `https://geocoding-api.open-meteo.com` |
| `OPEN_METEO_ENSEMBLE_BASE_URL` | 集成 API 基础 URL. | `https://ensemble-api.open-meteo.com` |
| `OPEN_METEO_FLOOD_BASE_URL` | GloFAS洪水API基础URL. | `https://flood-api.open-meteo.com` |
| `OPEN_METEO_CLIMATE_BASE_URL` | CMIP6气候API基础URL. | `https://climate-api.open-meteo.com` |
| `CANVAS_PROVIDER_TYPE` | `duckdb` 阶段性超预算天气结果在DataCanvas上,并启用了数据框架工具; `none` 返回边框预览. | `duckdb` |
| `OPENMETEO_DATAFRAME_DROP_ENABLED` | `true` 制造 `openmeteo_dataframe_drop` 可调用;否则列为已禁用. | `false` |
| `OPENMETEO_CLAMP_LIMITS` | `true` 降低一个 `openmeteo_dataframe_query` `limit` (一) 超过按呼号计的上限,并附有通知; `false` 广告封顶为最大值并拒绝更大的值. | `true` |
| `MCP_TRANSPORT_TYPE` | 运输: `stdio` 或者说 `http`。 。 。 . | `stdio` |
| `MCP_HTTP_PORT` | HTTP 服务器端口. | `3010` |
| `MCP_SESSION_MODE` | HTTP 会话模式 : `stateless`, (中文(简体) ), `stateful`,或 `auto`。 。 。 . | `stateless` |
| `MCP_AUTH_MODE` | 认证 : `none`, (中文(简体) ), `jwt`,或 `oauth`。 。 。 . | `none` |
| `MCP_LOG_LEVEL` | 日志级别 (`debug`, (中文(简体) ), `info`, (中文(简体) ), `notice`, (中文(简体) ), `warning`, (中文(简体) ), `error`) (中文(简体) ). | `info` |
| `LOGS_DIR` | 日志文件目录(只有Node.js). | `<project-root>/logs` |
| `STORAGE_PROVIDER_TYPE` | 存储后端 : `in-memory`, (中文(简体) ), `filesystem`, (中文(简体) ), `supabase`, (中文(简体) ), `cloudflare-kv/r2/d1`。 。 。 . | `in-memory` |
| `OTEL_ENABLED` | 启用 [打开几何](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry)。 。 。 . | `false` |

见 [`.env.example`](https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/.env.example) 用于完整可选覆盖列表.

## 运行服务器

### 地方发展

要求数 [Bun v 1.4.4 (单位:千美元)](https://bun.sh/) 或更高(或Node.js v24+).

-   **克隆并安装 :**
    
    ```sh
    git clone https://github.com/cyanheads/open-meteo-mcp-server.git
    cd open-meteo-mcp-server && bun install
    ```
    
-   **构建和运行 :**
    
    ```sh
    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:stdio
    # or
    bun run start:http
    ```
    
-   **运行检查和测试 :**
    
    ```sh
    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    ```
    

### 夹克

```sh
docker run --rm -p 3010:3010 ghcr.io/cyanheads/open-meteo-mcp-server:latest
```

图像默认为 HTTP 传输、 无国籍会话模式和日志到 `/var/log/open-meteo-mcp-server`运行到一个 MCP 客户端的 stdio,使用 `"command": "docker"` 与 `"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/open-meteo-mcp-server:latest"]`为了在当地建设, `docker build -t open-meteo-mcp-server .`; OpenTeleometry 端点依赖性默认安装——用 `--build-arg OTEL_ENABLED=false` 以略去它们.

## 项目结构

| 目录 | 目的 |
| :-- | :-- |
| `src/index.ts` | `createApp()` 入口——注册工具,初始化Open-Meteo服务和DataCanvas. |
| `src/config` | 服务器特定环境变量与Zod解析并验证. |
| `src/mcp-server/tools/definitions` | 工具定义`*.tool.ts`),每个工具一个文件. |
| `src/mcp-server/tools` | 共享工具助手——模型目录,cadence验证,专栏重塑,外溢,响应通知. |
| `src/services/open-meteo` | Open-Meteo APIs的HTTP客户端——重试,错误分类,覆盖-gap拒绝. |
| `src/services/canvas-accessor.ts` | DataCanvas 与可溢出工具共享访问器. |
| `skills/` | 通过 MCP 和 npm 软件包, Docker 图像,以及 `.mcpb` 捆绑( e)`open-meteo-guide`) (中文(简体) ). |
| `tests/` | 单位,整合,模糊,和烟雾测试. |

## 发展指南

见 [`CLAUDE.md`](https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/CLAUDE.md) 发展准则和建筑规则。 简本:

-   搬运工投掷,框架渔获量——否 `try/catch` 在工具逻辑中
-   使用 `ctx.log` 请求范围伐木, `ctx.state` 租户范围储存
-   登记册中的新工具 `tools[]` 阵列 `src/index.ts`
-   环绕外部 API 调用: 验证 生 → 规范到域类型 → 返回输出计划; 永远不要编织缺失的字段

## 归属

气象数据来源 [Open-Meteo.com (中文(简体) )](https://open-meteo.com/),许可证 [CC BY 4.0 (英语)](https://creativecommons.org/licenses/by/4.0/)。 。 。 .

## 捐款

问题值得欢迎。 提交前进行检查和测试:

```sh
bun run devcheck
bun run test
```

## 许可证

阿帕奇-2.0 — 见 [自由主义](https://npmcn.com/package/%40cyanheads/open-meteo-mcp-server/LICENSE) 详细情况.

## 常见问题

### @cyanheads/open-meteo-mcp-server 是什么？

地理编码地点、获取全球天气预报、历史气候、海洋条件、空气质量和地形高地。 \(原始内容存档于2012-10-12\)\. STIO or Streamable HTTP\.

### 如何安装 @cyanheads/open-meteo-mcp-server？

在项目目录运行 npm install @cyanheads/open-meteo-mcp-server，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 open-meteo-mcp-server，可以用 npx open-meteo-mcp-server 直接运行。

### @cyanheads/open-meteo-mcp-server 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/cyanheads\_\_open-meteo-mcp-server 是否存在。

### @cyanheads/open-meteo-mcp-server 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @cyanheads/open-meteo-mcp-server 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.0\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @cyanheads/open-meteo-mcp-server 可以商用吗？

@cyanheads/open-meteo-mcp-server 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cyanheads/open-meteo-mcp-server 的下载量有多少？

根据 npm 官方下载统计，@cyanheads/open-meteo-mcp-server 在 2026/10/11 – 2026/11/09 这 30 天内被下载 2,001 次，日均约 67 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cyanheads/open-meteo-mcp-server 还在维护吗？

最新版本 0\.6\.0 发布于 2026/11/10（4 天前）；至今共发布 32 个版本，其中过去 12 个月发布了 32 个；首次发布于 2026/05/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

