mcpField
O
OhMyWind

OhMyWind

远程服务
ohmywind.fr地图与出行116 天前更新

关于 OhMyWind

OhMyWind 是面向水手的 MCP 服务,利用海洋预报、船型极曲线和潮汐数据评估航程。它提供分段耗时与复杂度,并在法国大西洋沿岸使用更细致的潮流数据源。

主要功能

  1. 01分段航程耗时
  2. 021–5 级航程复杂度
  3. 03比较 14 天内的出发时段
  4. 04船型原型与帆船极曲线
  5. 05法国大西洋潮汐与潮流图集

适用场景

  1. 01估算计划航线的航行时间
  2. 02比较逐小时出发时段
  3. 03查询沿海地点的风况与海况

MCP 相关

OhMyWind 通过 HTTP MCP 端点提供海洋预报和航程规划工具。`plan_passage` 可返回结构化结果和链接,并在支持的客户端中显示交互式 MCP Apps 视图。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.ohmywind.fr/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

4

此工具无需参数。

详细介绍

OhMyWind ⛵

与大模型对话,自信扬帆。

OhMyWind 可将任何支持 MCP 的助手(Claude、Le Chat、Cursor、Goose、 Zed、Continue)变成航行规划工具。无论身在世界何处,都可以用日常语言提问:获取每段航程的预计时间、1–5 级复杂度评分,以及完整计划的深层链接。在法国大西洋沿岸,它还能更进一步,将全球海流模型替换为 SHOM Atlas C2D 和 MARC PREVIMER 图集。 免费、无需密钥、开源。

CI

ohmywind.fr · MCP 端点 · 更新日志 · AGPL-3.0 + 商标

警告

决策支持工具,不是导航仪器。 OhMyWind 不能替代国家气象服务发布的官方海洋预报、最新海图或船长的判断。预报模型有时会出错:航行责任仍由你承担。

在 Web 应用中呈现的 OhMyWind 航程计划


30 秒快速体验

1. 打开你的 MCP 客户端并添加端点:

https://mcp.ohmywind.fr/mcp

2. 用自己的话提问:

“明天早上,马赛 → 波克罗勒岛,驾驶一艘 Sun Odyssey 36。是个好主意吗?需要多久?航行会有多紧张?”

3. 助手会调用 OhMyWind 工具,并用日常语言作答。在支持 MCP Apps 规范 (Claude、Claude Desktop、ChatGPT、VS Code Copilot、Goose、Postman、MCPJam)的宿主中,你还会看到一个实时交互式小组件:在页面内直接呈现 ohmywind.fr 计划视图。不支持该规范的宿主(Cursor、Le Chat、终端)则会向你提供同一计划的 ohmywind.fr 深层链接。无需账户、API 密钥或信用卡。

第一次使用 MCP? 只需 2 分钟。前往 modelcontextprotocol.io/clients 选择你的客户端,然后按照 远程服务快速入门进行操作。 Claude Desktop 用户可以从 用户快速入门开始。在 Le Chat 中, 前往 连接器 → 添加连接器 → 自定义 MCP 连接器,粘贴上面的端点。

如果你的客户端只支持 stdio

有些宿主目前还无法直接连接远程 MCP 服务。可以通过 mcp-remote 建立桥接;它会在本地运行并转发至该端点:

{
  "mcpServers": {
    "ohmywind": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.ohmywind.fr/mcp"]
    }
  }
}

无需进行其他配置:无需账户、API 密钥、OAuth 或信用卡。 如果客户端要求你提供凭据,那说明它是在猜测,而不是读取服务信息;这些字段可以留空。

提出实际问题

以下三个提示词分别会调用不同的工具:

  • “你认识哪些船?我有一艘 First 27。” 可将你的船映射到一个极曲线类别。助手会根据描述进行选择;服务端没有查找表。
  • “周六下午西谢角的风怎么样?” 返回一个地点的风况和海况,优先使用 AROME 数据,单位为节。
  • “这周从马赛到波克罗勒岛,哪个出发时段最好?” 会遍历未来 14 天内每个小时的出发时段,并在一次调用中进行比较。

为什么选择 OhMyWind

🆓 免费,无需密钥通过 Open-Meteo 获取风况和海况(CC BY 4.0)。无需账户或 API 密钥。
🌍 随处可用全球模型(ECMWF、GFS)覆盖任何海岸。在法国上空,由 AROME 1.3 km 接管,可捕捉热气流、密史脱拉风和特拉蒙塔纳风。
⛵ 适配船只提供八种船型,从 16 ft 的帆桨两用小艇、20 ft 的拖车式巡航艇,到适合远洋航行的 50 英尺帆船;采用真实极曲线,并提供用于调整帆船配平和船员水平的 efficiency 参数。
🗓️ 考虑出航窗口一次调用即可扫描 14 天的出发日期范围,让你的大模型选出风浪最平稳的周末时段,无需手动计算。
🔌 兼容各种客户端一个 HTTP MCP 端点。可用于 Claude Desktop、Le Chat、Cursor、Goose、Zed、Continue 等。
🖼️ 在支持的宿主中呈现丰富内容在 Claude / ChatGPT / VS Code Copilot / Goose 中,交互式小组件通过 MCP Apps 内嵌呈现。其他宿主则回退为简洁的文本摘要和深层链接。
🛠️ 开源,采用 AGPL 协议可部署在 Fly、Modal 或自己的 VPS 上:mcp-core 与部署方式无关。HF Space 只是众多封装之一。你可以用自己的名称和图标创建分支,详见 TRADEMARK.md。

大模型看到的内容

四个 MCP 工具,全部为异步,无需密钥:

工具功能说明
list_boat_archetypes提供八种描述性船型;由大模型自行将“Sun Odyssey 36”映射为 cruiser_30ft。
get_marine_forecast获取某个位置和时间窗口附近的风况与海况,支持多种模型;优先使用 AROME,然后选择覆盖目标日期的模型;在有参考价值时提供当前状况和潮汐信息。
get_tidal_stream获取某个位置(如海峡或港口入口)的潮流和潮汐数据,直接来自潮汐图集:包括憩流、高潮和低潮,以及潮流会助你前行的时段。不会请求天气数据。
plan_passage端到端规划:一次调用即可提供每段航程的时间安排、1‑5 级复杂度和 ohmywind.fr 深层链接。传入 latest_departure,即可比较未来 14 天内每个小时的出发窗口,并由大模型选出风浪最平稳的时段。
read_me返回 OhMyWind 的计算方法。用户询问计算方式时调用。

plan_passage 会在 _meta 中声明一个 MCP Apps UI 资源(ui://openwind/plan-passage)。 支持 MCP Apps 的宿主会自动在沙盒 iframe 中呈现实时的 ohmywind.fr/plan?… 视图, 无需宿主专属 CSS,也不会造成供应商锁定。不支持 MCP Apps 的宿主 则会静默返回结构化数据和 openwind_url 深层链接。

架构

packages/
├── data-adapters/   # pure domain logic (forecast adapters, polars, routing, complexity)
├── api/             # REST API as a Starlette app: create_app(settings, mcp_app=None)
├── mcp-core/        # FastMCP server (cloud-agnostic, no Gradio, no HF deps)
├── hf-space/        # Docker wrapper for Hugging Face Spaces (~100 lines + Dockerfile)
└── web/             # React 19 + Vite app deployed to Cloudflare Pages (ohmywind.fr)

api 和 mcp-core 都与部署方式无关,彼此也没有依赖:即使没有 MCP 服务,API 也能独立提供服务;MCP 工具则通过 stdio 运行,无需 HTTP。要重新部署到 Fly、Modal 或 VPS,只需使用不同的 Dockerfile,并通过入口点调用 create_app() 和 build_server()。详见 docs/architecture.md。

本地运行

# Tests + lint (data-adapters & mcp-core, Python via uv)
cd packages/mcp-core
uv sync --all-extras
uv run pytest -x -q
uv run ruff check .

# Local HTTP MCP smoke
cd packages/hf-space
uv run python app.py   # serves :7860, point any MCP client at /mcp

# Web app (ohmywind.fr)
cd packages/web
npm install
npm run dev            # vite dev server
npm run build          # outputs packages/web/dist

V1 范围

风况、海况(最大 Hs)、每段航程的预计到达时间、1–5 级复杂度。地中海的潮汐和洋流会被忽略(影响可忽略)。不自动优化航线:大模型和用户会共同参与决策。路线图和范围决策保存在工作副本本地的 plan/ 目录中,不会发布到此处。

计算方法

除非工具参数覆盖,否则 MCP 服务将使用以下默认值。 实现代码:packages/data-adapters/src/openwind_data/routing/passage.py。

极坐标速度模型
  • 8 种船型(cruiser_20ft、cruiser_25ft、cruiser_30ft、cruiser_40ft、cruiser_50ft、racer_cruiser、catamaran_40ft、voile_aviron_16ft),每种船型都在 packages/data-adapters/src/openwind_data/routing/polars/ 中有一份 ORC 风格的极坐标数据。
  • 查询时采用 (TWS、TWA) 的双线性插值,并将值限制在网格边界内。
  • TWA 仅对称覆盖 [0°, 180°],不区分左舷和右舷。
船速调整
  • 效率系数(默认值 0.75)。 ORC 极坐标数据表示理论最大值。实际巡航速度通常会降低约 25%(帆型调整、舒适度余量、操舵者因素、未追踪的洋流)。每次调用时可覆盖此值:竞赛时用 0.85,巡航时用 0.75,载有家人时巡航用 0.65,大浪或船体污损时用 0.55。
  • VMG/抢风修正。 当航线 TWA 小于船只的最佳迎风角(通常约为 42-48°)时,模拟器会假设水手采用抢风航行。朝目的地的有效速度为 polar(optimal_TWA) × cos(optimal_TWA − route_TWA)。正迎风时,该值降为 polar(opt) × cos(opt) ≈ polar / √2;当 TWA=20°、opt=45° 时,速度仅降低 cos(25°) ≈ 0.91。
  • 波浪折减(可选启用)。 max(0.5, 1 − 0.05 × Hs^1.75 × cos²(TWA/2))。默认禁用;海况会影响警告栏,而不会降低船速。
  • 最低船速。 下限为 0.5 kn,可避免极端失速时出现除法溢出。
时间计算
  • 单次遍历近似。 使用 6 kn 的启发式速度估算各路段的中间时刻,再根据各中间时刻的实际风况计算极坐标速度。不进行迭代收敛。由于地中海风况的相关长度为数小时,误差偏差有限。
  • 默认将航线拆分为约 10 nm 的子路段,以便逐段采样天气。沿岸精细航行时可缩短至 5 nm;长距离远洋航段可增至 20 nm。
出发时间窗口比较模式

plan_passage 接受可选参数 latest_departure,用于将调用转换为时间窗口比较:沿同一航线按小时遍历 N 个出发时间,并为每个窗口返回一条结果。天气仅获取一次(预热缓存),模拟在内存中进行。硬性上限:14 d × 24 h = 336 个窗口。由 LLM(而非服务端)定性选择最佳方案。

洋流:为什么需要 SHOM 和 MARC,而不只是全球模型

Open-Meteo 的 SMOC 洋流场覆盖全球,网格间距为 8 km。在法国大西洋沿岸,这还不够:决定能否通过的水道比一个网格单元还窄。因此,适配器在此基础上叠加了两个沿海数据源:SHOM Atlas C2D 和 MARC PREVIMER 图集,并在覆盖范围之外回退到 SMOC。

这个差距是测量得出的,而非凭空假设。在 SHOM 覆盖的 120 个点上,每个点取 24 个逐小时快照(共 2880 对,随机种子为 42),成对流速差异(单位:节)如下:

配对平均值中位数p95最大值
SHOM 与 MARC0.2930.1770.9512.879
SHOM 与 SMOC0.5490.3851.6063.907
MARC 与 SMOC0.4900.3471.4604.068

比较第一行和第二行。MARC 谐波引擎对 SHOM 图集的拟合度约为全球模型的两倍,流向也得出了相同结论(SHOM 与 MARC 的中位差为 7.3°,SHOM 与 SMOC 为 23.6°)。对于一艘航速为 5 kn 的船,p95 差异达到 1.6 kn,可能意味着顺利通过,也可能意味着要与洋流搏斗。需要注意,这并不代表什么:SMOC 加入了 SHOM 谐波图集未包含的风生分量和斯托克斯分量,因此第二行混合了预测能力与真实的物理差异,并非纯粹的误差指标。正是第三行的结果,让我们认为值得发布这个 5 GB 的数据包。

两个沿海数据源在不同地点各有优势,这一点也经过了测量。SHOM C2D 并非一组实测数据:根据其自身说明,它是 1988 至 2002 年潮汐模型的输出,经过深度平均,并重采样到一个网格上;网格间距只有少数局部区域(Golfe du Morbihan、Rade de Brest、Sein、布列塔尼北部)小于 1 km,其他地区则为 1.3 至 20 km。另一项基准测试(2026 年 9 月,在 750 个陆架点上按距最近 SHOM 点的距离分组,覆盖 16 条有名称的水道和 1,500 个随机点)发现:无论距离多远,两个数据源在离岸区域都一致;在 Fromveur,MARC 与 HF 雷达测得的最大流速相符,而 SHOM 的 1994 年文件则不符;SHOM 仅在其高精度局部区域保有优势。因此,级联仅在 C2D 点位于 500 m 范围内时采用 SHOM,其次采用 MARC,最后采用 SMOC。

完整报告、各图集细分数据和方法: docs/bench/currents_3way_2026-05-10_1818.md 和 docs/bench/currents_resolution_2026-09-12_1347.md。

地中海默认设置
  • 忽略潮汐。 地中海的潮差 < 40 cm,与预报的不确定性相比可以忽略。
  • 忽略洋流。 利古里亚—普罗旺斯洋流太弱且变化太大,不适用于 V1。
  • 风模型。 AROME 1.3 km(预报时效 ≤48 h,可捕捉热风和局地风)。如果航段超出 AROME 的预报范围,则自动依次回退到 ICON-EU(≤5 d)→ ECMWF IFS 0.25°(≤10 d)→ GFS(≤16 d)。
  • 波浪模型。 Open-Meteo Marine(有效波高 Hs、周期、方向)。
未建模的内容(V1)
  • 无自动航线优化:选择出发时间仍由 LLM 和人工共同参与。
  • 无沿海加速区(岬角、半岛):调用方需添加中间航路点。
  • 不考虑左舷/右舷极曲线的不对称性、专用大三角帆曲线,也不对船体状况建模,efficiency 参数除外。

致谢

法国大西洋沿岸的潮汐洋流:SHOM Atlas C2D 和 MARC PREVIMER (Ifremer)。预构建图集存放在私有 HF 数据集中,并会一直保持私有:原始 MARC NetCDF 数据是在不允许再分发的承诺下使用的,因此 Space 会使用读取令牌拉取数据,而不会随此处一同发布。支持在没有该令牌的情况下构建,并会回退到全球洋流模型。

风和海况:Open-Meteo(CC BY 4.0)。托管: Hugging Face Spaces。ohmywind.fr 上的地图图块:CARTO / OpenStreetMap。

许可证与商标

代码: AGPL-3.0-or-later。这适用于 packages/ 下的所有内容,包括 Web 应用、MCP 服务和数据适配器。分叉和再分发仍然免费;如果你通过网络提供修改后的实例(自己的 MCP 端点、衍生 Web 应用),则必须发布其源代码。f276c3c 提交之前的版本采用 MIT 许可证,且仍受其约束:请参阅 COPYING.MIT。

AGPL 许可证不涵盖以下两项:

  • 名称「OhMyWind」,该名称已在法国工业产权局 INPI 注册为商标。
  • 视觉识别元素(徽标、应用图标),这些内容仍受版权保护。

欢迎分叉。请使用自己的名称和图标发布。完整政策,以及技术图示与品牌识别元素的界定,请参阅 TRADEMARK.md。

数据由各提供方分别授权:Open-Meteo 预报采用 CC BY 4.0 许可证,SHOM Atlas C2D 采用 Licence Ouverte Etalab 2.0 许可证,MARC PREVIMER 的原始 NetCDF 数据则承诺不再分发。各数据来源的具体信息见 docs/methodologie.md。

评论

支持 Markdown

第一次接触 MCP?

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

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