mcpField
F
foehn

foehn

本地服务
github.com地图与出行452 天前更新

关于 foehn

foehn 是用于处理 MeteoSwiss 开放气象数据的 Python API、命令行工具和 MCP 服务。它支持表格与网格数据,可将站点数据转为 Parquet,并将网格数据作为 xarray 数据集或 Zarr 存储打开。

主要功能

  1. 01通过 STAC 下载 MeteoSwiss 数据集
  2. 02将站点数据转换为 Parquet
  3. 03以 xarray 或 Zarr 打开网格
  4. 04增量下载数据集
  5. 05可选导入 Databricks Delta

适用场景

  1. 01加载瑞士站点观测数据进行分析
  2. 02探索气候网格和雷达合成数据
  3. 03向兼容 MCP 的 LLM 提供气象数据

MCP 相关

MCP 服务为兼容 MCP 的客户端提供 MeteoSwiss 开放数据的实时访问,可通过 `foehn mcp` 配置运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kayhendriksen-foehn": {
"command": "uvx",
"args": [
"foehn"
]
}
}
}
启动命令uvx foehn

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypifoehn0.5.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

foehn

MeteoSwiss 开放数据 — Python API、CLI 和 MCP 服务 · 表格数据以 DataFrames/Parquet 表示,网格数据以 xarray/Zarr 表示

PyPI 最新版本 Python 版本 MIT 许可证 OpenSSF 安全评分卡 每月下载量


foehn 通过 STAC API 下载 MeteoSwiss OGD 的所有数据集,使用 Polars 将 CSV/TXT 站点数据转换为 Parquet,并将网格数据集(NetCDF 气候网格、GRIB2 预报和 ODIM 雷达合成数据)作为 xarray Dataset 或 Zarr 存储打开。它还可选择按日计划将所有数据导入 Databricks Unity Catalog Delta 表,并提供 MCP 服务,让大模型能够直接查询瑞士天气数据。

由 foehn 提供支持的伯尔尼每日天气

由 foehn 的 MCP 服务和 MeteoSwiss 开放数据提供支持的伯尔尼每日天气。

为什么选择 foehn?

  • 一条命令处理 20 多个数据集 — 气象站、雷达、冰雹图、预报、气候情景等
  • 表格数据和网格数据 — CSV 站点数据可作为 Polars DataFrame 或 Parquet;NetCDF、GRIB2 和 ODIM 雷达网格可作为 xarray Dataset 或 Zarr 存储
  • 面向大模型的 MCP 服务 — 通过 MCP 服务让你喜爱的大模型实时访问 MeteoSwiss 数据
  • 磁盘占用显著更小 — 与原始 CSV 相比,列式 Parquet 使用 Zstandard 压缩
  • 默认增量处理 — 仅重新下载自上次运行以来发生变化的文件,并在 _last_run.json 中按数据集和时间片记录
  • 本地无需 Spark — 下载和转换仅使用 Polars;导入 Delta 时可选用 Spark
  • 附带声明式自动化 Bundle — 可直接部署的每日作业和历史数据回填,无需配置流水线

快速开始

pip install foehn
foehn download

系统会下载从 1 月 1 日到昨天的最新数据,并将其转换为 Parquet,保存到 ./data/meteoswiss/。

foehn CLI 演示

安装

从 PyPI 安装:

pip install foehn

从源代码安装:

git clone https://github.com/kayhendriksen/foehn
cd foehn
pip install -e .

安装可选依赖:

pip install "foehn[databricks]"   # PySpark + Delta, and Polars' build for CPUs without AVX2
pip install "foehn[mcp]"          # MCP server
pip install "foehn[grids]"        # xarray + Zarr for all gridded data (NetCDF, GRIB2, radar)

需要 Python 3.11 或更高版本。


Python API

import foehn

df = foehn.load("smn", station="BER", frequency="d")

直接将数据加载到 Polars DataFrame 中、探索元数据、下载到磁盘并转换为 Parquet,所有操作均可通过 Python 完成。请参阅完整的 Python API 文档。


CLI

foehn download smn pollen
foehn load smn --station BER --frequency d

CLI 与 Python API 相对应,提供用于下载、转换、加载和检查元数据的子命令。请参阅完整的 CLI 文档。


网格数据

ds = foehn.open_dataset("surface_derived_grid", match="rhiresd")  # NetCDF climate grid
ds = foehn.open_dataset("forecast_icon_ch1", match="YYYYMMDDHHMM-0-t_2m-ctrl")  # one GRIB2 field
ds = foehn.open_dataset("radar_precip", match="cpcYYDDDHHMM")  # one radar composite
# Forecast and radar files roll off after a day / two weeks: fill in a recent time.
# A match that finds nothing lists the times the collection holds now.
foehn.to_zarr("surface_derived_grid", match="rhiresd")  # Zarr store

NetCDF 气候网格/气候常年值/情景、GRIB2 预报(ICON-CH1/CH2、KENDA)和 HDF5/ODIM 雷达合成数据均可作为 xarray Dataset 打开,而非 DataFrame。只需安装一个额外依赖即可使用:pip install "foehn[grids]"。请参阅网格数据文档。


MCP 服务

{
  "mcpServers": {
    "foehn": {
      "command": "foehn",
      "args": ["mcp"]
    }
  }
}

让任何兼容 MCP 的大模型实时访问 MeteoSwiss 数据。请参阅完整的 MCP 服务文档。


文档

数据集20 多个 MeteoSwiss 数据集、类别和时间切片约定
Python API数据加载、元数据、下载和 Parquet 转换
网格数据作为 xarray Datasets 和 Zarr 存储读取 NetCDF 网格
命令行界面所有子命令、标志和环境变量
MCP 服务设置、配置和可用工具
Databricks Pipeline声明式 Automation Bundle 部署

数据源

STAC APIhttps://data.geo.admin.ch/api/stac/v1
文档https://opendatadocs.meteoswiss.ch
MeteoSwiss OGDhttps://github.com/MeteoSwiss/opendata

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。