OhMyWind について
OhMyWindは、海洋予報、艇種別ポーラ、潮汐データを使って航路を評価する、セーラー向けのMCPサーバーです。区間ごとの所要時間と難易度を示し、フランス大西洋岸では詳細な潮流データを利用します。
主な機能
- 01区間ごとの所要時間
- 021~5段階の航路難易度
- 0314日間の出発時刻比較
- 04艇種別アーキタイプとポーラ
- 05フランス大西洋岸の潮汐・潮流アトラス
活用シーン
- 01計画した航路の所要時間を見積もる
- 02時間ごとの出発枠を比較する
- 03沿岸地点の風と海況を調べる
MCP 対応
OhMyWindはHTTP MCPエンドポイントで、海洋予報と航路計画のツールを提供します。`plan_passage`は構造化データとリンクを返し、対応ホストではMCP Appsのインタラクティブ表示も利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.ohmywind.fr/mcpclaude mcp add --transport http fr-ohmywind-sailing-planner https://mcp.ohmywind.fr/mcp{"mcpServers":{"fr-ohmywind-sailing-planner":{"type":"http","url":"https://mcp.ohmywind.fr/mcp"}}}Cursor で開く{"servers":{"fr-ohmywind-sailing-planner":{"type":"http","url":"https://mcp.ohmywind.fr/mcp"}}}VS Code で開く{"mcpServers":{"fr-ohmywind-sailing-planner":{"type":"http","url":"https://mcp.ohmywind.fr/mcp"}}}{"mcpServers":{"fr-ohmywind-sailing-planner":{"serverUrl":"https://mcp.ohmywind.fr/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
4このツールにパラメーターはありません。
詳細
OhMyWind ⛵
LLM に話しかけて、自信を持って出航しましょう。
OhMyWind を使えば、MCP 対応のあらゆるアシスタント(Claude、Le Chat、Cursor、Goose、 Zed、Continue)がセーリングプランナーになります。世界中どこからでも、自然な言葉で質問するだけで、区間ごとの到着予定時刻、1〜5 の複雑度スコア、プラン全体へのディープリンクを取得できます。フランスの大西洋岸ではさらに、全球海流モデルを SHOM Atlas C2D と MARC PREVIMER の海洋アトラスに切り替えます。 無料、API キー不要、オープンソースです。
ohmywind.fr · MCP エンドポイント · 変更履歴 · AGPL-3.0 + 商標
警告
意思決定支援ツールであり、航海用計器ではありません。 OhMyWind は、 国の気象機関による公式の海洋予報、最新の海図、または船長の判断に取って代わるものではありません。予報モデルが誤ることもあります。航海に関する責任は、引き続きご自身にあります。

30 秒で試す
1. MCP クライアントを開き、エンドポイントを追加します。
https://mcp.ohmywind.fr/mcp
2. 自分の言葉で質問します。
「明日の朝、Marseille → Porquerolles を 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 では、 Connectors → Add connector → Custom MCP connectorから追加し、上記のエンドポイントを貼り付けてください。
クライアントが stdio のみ対応している場合
一部のホストでは、まだリモート MCP サーバーに直接接続できません。mcp-remoteを使って中継できます。これはローカルで動作し、エンドポイントへ転送します。
{
"mcpServers": {
"ohmywind": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.ohmywind.fr/mcp"]
}
}
}
ほかに設定は不要です。アカウント、API キー、OAuth、クレジットカードは必要ありません。 認証情報を求めるクライアントは、サーバーの情報を読み取らずに推測しているだけです。その欄は空のままにできます。
実際に質問してみる
それぞれ異なるツールを使う 3 つのプロンプトです。
- 「どんな船を知ってる? First 27 に乗ってる。」 船をポーラーアーキタイプに対応付けます。アシスタントは説明から選択します。サーバー側に参照テーブルはありません。
- 「土曜の午後、cap Sicié の風は?」 1 地点の風と波を、まず AROME からノット単位で返します。
- 「今週、Marseille → Porquerolles に最適な時間帯は?」 最大 14 日先までの毎時の出発時刻を順に調べ、1 回の呼び出しで比較します。
OhMyWind を選ぶ理由
| 🆓 無料、API キー不要 | Open-Meteo による風と海況(CC BY 4.0)。アカウントも API キーも不要です。 |
| 🌍 どこでも利用可能 | 全球モデル(ECMWF、GFS)があらゆる沿岸をカバーします。フランス上空では AROME 1.3 km に切り替わり、サーマル、ミストラル、トラモンターヌを捉えます。 |
| ⛵ 艇種を考慮 | 16 フィートのセーリング・オール兼用ディンギーや 20 フィートのトレーラークルーザーから、外洋向けの 50 フィート艇まで、8 種類の艇種モデルに対応します。実際のポーラーと、トリムやクルーの熟練度を指定する efficiency パラメーターを備えています。 |
| 🗓️ 出航可能期間を考慮 | 1 回の呼び出しで 14 日間の出航期間をスキャンし、LLM が最も穏やかな週末の枠を選べるため、手計算は不要です。 |
| 🔌 クライアントを選ばず利用可能 | HTTP の MCP エンドポイントは 1 つです。Claude Desktop、Le Chat、Cursor、Goose、Zed、Continue などで利用できます。 |
| 🖼️ 対応ホストではリッチな表示 | Claude/ChatGPT/VS Code Copilot/Goose では、MCP Apps により、インタラクティブなウィジェットがインラインで表示されます。それ以外のホストでは、見やすいテキストの要約とディープリンクにフォールバックします。 |
| 🛠️ オープンソース、AGPL | Fly、Modal、または独自の VPS でセルフホストできます。mcp-core はデプロイ先に依存しません。HF Space は複数あるラッパーの 1 つです。独自の名前とアイコンでフォークする場合は、TRADEMARK.md をご覧ください。 |
LLM が利用できる情報
4 つの MCP ツールを利用できます。すべて非同期で、API キーは不要です。
| ツール | 機能 |
|---|---|
list_boat_archetypes | 8 種類の艇種モデルを説明します。LLM は「Sun Odyssey 36」から cruiser_30ft への対応付けを自ら行います。 |
get_marine_forecast | 地点と期間を指定して、風と海況を複数モデルで取得します。まず AROME を使い、次に対象日まで予報が届くモデルを使います。必要な場合は現在の状況と潮汐も取得します。 |
get_tidal_stream | 潮汐アトラスから、地点(潮流の強い海峡や港の入口など)の潮流と潮汐を直接取得します。潮止まり、満潮、干潮、潮流に乗れる時間帯がわかります。天気予報のリクエストは行いません。 |
plan_passage | 1 回の呼び出しで、区間ごとの所要時間、1~5 の複雑さ、ohmywind.fr へのディープリンクを含む、出航計画を最初から最後まで作成します。latest_departure を指定すると、最大 14 日先までの毎時の候補を比較し、LLM が最も穏やかな時間帯を選びます。 |
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 はどちらもデプロイ先に依存せず、互いにも依存していません。API は MCP サーバーなしで動作し、MCP ツールは HTTP をまったく使わずに stdio 経由で動作します。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 の複雑さを扱います。地中海では潮汐と海流は無視します(影響が小さいため)。自動の航路最適化は行いません。LLM と人間が引き続き判断に関与します。ロードマップと対象範囲の決定は、公開せず作業コピー内に保持する 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)があり、それぞれに ORC 形式のポーラーデータが用意されています:packages/data-adapters/src/openwind_data/routing/polars/。 - (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 個の時間単位の出発時刻を調べる比較モードになります。各時間枠につき 1 件の結果が返されます。気象データは一度だけ取得され(キャッシュを事前に温めます)、シミュレーションはメモリー上で実行されます。上限は 14 d × 24 h = 336 個の時間枠です。最適な選択肢は、サーバーではなく LLM が定性的に選びます。
Currents: グローバルモデルだけでなく、なぜ SHOM と MARC なのか
Open-Meteo の SMOC 電流場は全球を対象とし、解像度は 8 km です。フランスの大西洋岸ではこれでは不十分です。潮流が航路の通過を左右する水道は、1 グリッドセルより狭いためです。そのため、このアダプターでは SHOM Atlas C2D と MARC PREVIMER アトラスという 2 つの沿岸データソースを重ねて使用し、これらのカバー範囲外では SMOC にフォールバックします。
この差は推測ではなく、実測されています。SHOM のカバー範囲にある 120 地点で、それぞれ 24 時間ごとのスナップショットを取得(計 2880 ペア、シード 42)した場合の、ペア間の流速の不一致(ノット単位)は次のとおりです。
| ペア | 平均 | 中央値 | p95 | 最大 |
|---|---|---|---|---|
| SHOM vs MARC | 0.293 | 0.177 | 0.951 | 2.879 |
| SHOM vs SMOC | 0.549 | 0.385 | 1.606 | 3.907 |
| MARC vs SMOC | 0.490 | 0.347 | 1.460 | 4.068 |
1 行目を 2 行目と比較してください。MARC の調和定数エンジンは、グローバルモデルに比べて SHOM アトラスに約 2 倍近い値を示しており、方向についても同じ傾向です(SHOM と MARC の中央値は 7.3°、SHOM と SMOC は 23.6°)。5 kn の船に対する p95 の差が 1.6 kn というのは、水道を通過するか、潮流に逆らって進むかの違いです。ただし、これは純粋な誤差指標ではありません。SMOC には SHOM の調和定数アトラスには含まれない、風による成分やストークス成分が加わるため、2 行目は予測性能と実際の物理的な差が混在した値です。5 GB のペイロードを配布する価値があると判断したのは、3 行目の結果です。
どちらの沿岸データソースがどの場所で優れているかも測定されています。SHOM C2D は観測値の集まりではありません。SHOM 自身の注意書きによると、1988 年から 2002 年の潮汐モデルの出力を、深度平均して格子上に再サンプリングしたものです。格子間隔が 1 km 未満なのは一部の細密領域(Golfe du Morbihan、Rade de Brest、Sein、ブルターニュ北部)に限られ、それ以外では 1.3~20 km です。2 回目のベンチマーク(2026 年 9 月、最寄りの SHOM 地点までの距離別に大陸棚上の 750 地点、名称のある 16 の水道、ランダムな 1,500 地点)では、沖合では距離にかかわらず 2 つのデータソースの値が一致すること、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 時間、熱風や局地風を捉えます)。航路が AROME の予報期間を超える場合は、ICON-EU(≤5 日)→ ECMWF IFS 0.25°(≤10 日)→ GFS(≤16 日)の順に自動でフォールバックします。
- 波浪モデル。 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/以下のすべて、ウェブアプリ、MCP サーバー、データアダプターが対象です。フォークや再配布は引き続き自由です。変更したインスタンスをネットワーク経由で提供する場合(独自のMCPエンドポイントや派生ウェブアプリなど)は、そのソースコードを公開する必要があります。コミットf276c3cまでのバージョンはMITライセンスであり、引き続きそのライセンスが適用されます。詳しくはCOPYING.MITをご覧ください。
AGPLライセンスの対象外となるものが2つあります。
- 「OhMyWind」という名称。フランスの工業所有権庁であるINPIに商標として出願されています。
- ビジュアルアイデンティティ(ロゴ、アプリアイコン)。引き続き著作権の保護対象です。
フォークは歓迎します。独自の名称とアイコンで公開してください。ポリシーの全文と、ブランドアイデンティティではなく技術的な図版に該当するものについては、TRADEMARK.mdをご覧ください。
データのライセンスはプロバイダーごとに異なります。Open-Meteoの予報はCC BY 4.0、SHOM Atlas C2DはLicence Ouverte Etalab 2.0、MARC PREVIMERの生のNetCDFは再配布禁止の誓約に基づいています。ソースごとの一覧はdocs/methodologie.mdにあります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。