mcpField
O
Open-Meteo MCP Server

Open-Meteo MCP Server

ローカル
github.com/cmer81地図・旅行721 日前に更新

Open-Meteo MCP Server について

Open-Meteo MCP Server は、無料の Open-Meteo 天気 API に LLM からアクセスできるようにする MCP サーバーです。天気予報、過去の気象データ、大気質、海洋・洪水情報を扱い、API キーは不要です。

主な機能

  1. 01予報・履歴・大気質・気候データを扱う 17 のツール
  2. 02DWD ICON、GFS、ECMWF などモデル別の予報
  3. 03stdio またはステートレスな Streamable HTTP で動作
  4. 04エンドポイントごとに TTL を設定できるインメモリキャッシュ
  5. 05エンドポイントをセルフホストの Open-Meteo に向けられる設定

活用シーン

  1. 01特定地点の過去の気温と降水量の取得
  2. 02複数の気象モデルによる数日先の予報の比較
  3. 03大気質指数、紫外線指数、花粉量の確認

MCP 対応

本プロジェクトは MCP サーバーであり、17 の天気関連ツールを MCP クライアントに公開します。サーバー側の指示により、モデルが適切なツールを選択できるよう支援します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Open-Meteo MCP Server

あらゆる LLM に正確な気象データを提供します:予報、1940 年までさかのぼる過去のデータ、大気質、海洋状況、洪水、気候予測。

npm version CI Docker image Node.js License

機能 • はじめに • ツール • リモートデプロイ • 設定 • 開発

無料の Open-Meteo API を利用する Model Context Protocol サーバーです。Claude Desktop、Claude Code、または任意の MCP クライアントに接続して、自然な言葉で質問できます:

What were the temperatures in London during January 2023?
Compare the ICON and GFS ensemble forecasts for Berlin over the next 5 days.
Give me the current European AQI, UV index and pollen levels in Paris.

API キーは不要です。Open-Meteo は非商用利用であれば無料です。

機能

  • 17 個のツールで、予報、ERA5 の過去データ、大気質、海洋、洪水、季節予報、アンサンブル、CMIP6 気候データに加え、ジオコーディングと標高データを利用できます
  • モデルごとの予報:DWD ICON、NOAA GFS、Météo-France、ECMWF、JMA、MET Norway、Environment Canada GEM に対応します
  • LLM 向けに構築:厳格な入力スキーマ、どの質問にどのツールが答えるかをモデルに伝えるサーバー指示、25,000 文字を上限とするコンパクトな JSON レスポンスを備えています
  • 2 種類のトランスポート:ローカルクライアント向けの stdio と、API キー認証、レート制限、オリジンチェックを備えたリモートデプロイ向けのステートレスな Streamable HTTP に対応します
  • メモリ内レスポンスキャッシュ:エンドポイントごとに TTL を設定できるため、同じ質問を繰り返しても Open-Meteo に再度アクセスしません
  • セルフホストに対応:すべての Open-Meteo エンドポイントを独自のインスタンスに向けられます

はじめに

Node.js 22 以降が必要です。事前のインストールは不要です。初回実行時に npx がサーバーを取得します。

Claude Desktop

claude_desktop_config.json にサーバーを追加します:

{
  "mcpServers": {
    "open-meteo": {
      "command": "npx",
      "args": ["-y", "-p", "open-meteo-mcp-server", "open-meteo-mcp-server"]
    }
  }
}
Claude Code
claude mcp add open-meteo -- npx -y -p open-meteo-mcp-server open-meteo-mcp-server
その他の MCP クライアント

stdio サーバーを起動できるクライアントであれば、同じコマンドで利用できます:npx -y -p open-meteo-mcp-server open-meteo-mcp-server。また、npm install -g open-meteo-mcp-server でグローバルにインストールし、open-meteo-mcp-server を実行することもできます。

ヒント

すべてのデータツールでは座標が必要です。地名を使って質問すると、モデルはまず geocoding を呼び出して地名を解決します。

ツール

カテゴリーツール回答する内容
コアweather_forecast位置に最適なモデルを選択し、最大16日先までの予報を取得します。past_days を指定すると、直近の過去(最大92日)も取得できます
weather_archive1940年から昨日までの過去の天気(ERA5再解析)
air_qualityPM2.5、PM10、オゾン、NO₂、花粉、欧州および米国のAQI、UV指数
marine_weather波高、周期、波向、うねり、海面水温
geocoding地名または郵便番号から座標を取得します
elevation座標地点の標高
モデルdwd_icon_forecastDWD ICON(ドイツ、ヨーロッパを高解像度で予測)
gfs_forecastNOAA GFS(全球、北米を高解像度で予測)
meteofrance_forecastMétéo-France AROMEおよびARPEGE
ecmwf_forecastECMWF IFSおよびAIFS
jma_forecast気象庁
metno_forecastMET Norway(北欧諸国)
gem_forecastEnvironment Canada GEM
高度な機能ensemble_forecastアンサンブルメンバー間の予報の不確実性。models の指定が必須です
seasonal_forecast数週間先から約7か月先までの見通し
climate_projection1950年から2050年までのCMIP6気候予測
flood_forecastGloFASによる河川流量

通常は weather_forecast を使用します。モデル固有のツールは、特定のモデルが指定された場合や、各モデルを1回ずつ呼び出して比較する場合に使用します。

レスポンス
  • timezone を設定しない場合、時刻はGMTです。timezone: "auto" を指定すると、位置の現地時間が使用されます。
  • 系列内の null は、その時刻の値がモデルにないことを意味し、ゼロを意味するものではありません。
  • 25,000文字を超えるレスポンスでは、系列の対応関係を保つため、hourly/daily/minutely_15 配列が同じ比率で短縮され、truncated: true と truncation_message が追加されます。すべてのデータを取得するには、日付範囲または変数を絞り込んでください。

変数とパラメーターの全一覧は、各ツールの入力スキーマとOpen-Meteoのドキュメントに記載されています。

リモートデプロイ

TRANSPORT=http を設定すると、stdioの代わりに /mcp でStreamable HTTP経由のMCPを提供します。

TRANSPORT=http HOST=0.0.0.0 PORT=3000 API_KEY=your-secret-key npx open-meteo-mcp-server

クライアントは各リクエストでキーを送信します。Authorization: Bearer <key> または X-API-Key: <key> として指定してください。コンテナのプローブ用に、GET /health はキーなしで {"status":"ok"} を返します。

トランスポートはステートレスです。各 POST /mcp は個別に処理され、セッションIDは発行されません。また、GET/DELETE /mcp は 405 を返します。ツールは呼び出し間で状態を保持しないため、クライアント側で失われるものはありません。

重要

サーバーはデフォルトで 127.0.0.1 にバインドされるため、ローカルマシンからのみアクセスできます。リモート接続を受け入れるには HOST=0.0.0.0 を設定し、その場合は必ず API_KEY も設定してください。設定しないと、サーバーはオープンモードで動作します。

Docker

ビルド済みイメージがGitHub Container Registryで公開されています。このイメージはすでに 0.0.0.0 にバインドされます。

docker run -d --name open-meteo-mcp -p 3000:3000 \
  -e API_KEY=your-secret-key \
  ghcr.io/cmer81/open-meteo-mcp:latest

タグは、v 接頭辞を除いたnpmのバージョンに従います。latest、2.5.1、2.5、2 があります。

リポジトリには docker-compose.yml(ビルド済みイメージ)と docker-compose.dev.yml(ソースからビルド)もあります。.env.example を .env にコピーして設定してください。

claude.aiのトラフィック

すべてのclaude.aiユーザーは、Anthropicの送信元範囲 160.79.104.0/21 からリモートサーバーにアクセスします。この範囲には専用のレート制限プール(RATE_LIMIT_ANTHROPIC_RPM)が割り当てられるため、全員が1つのIPごとの上限を共有することはありません。リバースプロキシの背後で運用する場合は、実際のクライアントIPが認識されるよう、プロキシを TRUSTED_PROXIES に登録してください。

設定

すべての変数は任意です。

サーバー
変数デフォルト説明
TRANSPORTstdioStreamable HTTP の場合は http
PORT3000HTTP ポート
HOST127.0.0.1バインドするインターフェース。0.0.0.0 はリモート接続を受け付けます
OPEN_METEO_CACHE_MAX_BYTES20000000シリアライズされた JSON のバイト数で表したレスポンスキャッシュのサイズ。0 にすると無効になります

キャッシュでは、予報とアンサンブルを 15 分間、空気質と海洋を 30 分間、洪水を 1 時間、季節予報を 6 時間、過去データと気候データを 24 時間、ジオコーディングを 7 日間、標高を 30 日間保持します。終了日が直近 5 日以内の過去データの期間は、Open-Meteo が引き続きデータを補完しているため、1 時間のみ保持します。失敗したリクエストはキャッシュされません。

メモ

キャッシュサイズの計算にはシリアライズされた JSON を使用しますが、メモリ内の解析済みオブジェクトはその約 1.2~2.6 倍のサイズになります。デフォルトのサイズでキャッシュをいっぱいにすると、ヒープを約 50 MB 消費します。

HTTP セキュリティ
変数デフォルト説明
API_KEY未設定(公開)すべての /mcp リクエストで必要なキー
RATE_LIMIT_RPM60クライアント IP ごとの 1 分あたりのリクエスト数。IPv6 クライアントは /56 ごとにグループ化されます
RATE_LIMIT_ANTHROPIC_RPM600claude.ai の全トラフィックで共有される 1 分あたりのリクエスト数
TRUSTED_PROXIES未設定X-Forwarded-For を信頼する IP または CIDR のカンマ区切りリスト
ALLOWED_ORIGINS空許可するブラウザーオリジンのカンマ区切りリスト。一覧にない Origin ヘッダーを含むリクエストには 403 を返します(DNS リバインディング対策)。ヘッダーのないリクエストには影響しません
カスタム Open-Meteo インスタンス

各エンドポイントの接続先は、たとえばセルフホストした Open-Meteo に変更できます。

変数デフォルト
OPEN_METEO_API_URLhttps://api.open-meteo.com
OPEN_METEO_ARCHIVE_API_URLhttps://archive-api.open-meteo.com
OPEN_METEO_AIR_QUALITY_API_URLhttps://air-quality-api.open-meteo.com
OPEN_METEO_MARINE_API_URLhttps://marine-api.open-meteo.com
OPEN_METEO_SEASONAL_API_URLhttps://seasonal-api.open-meteo.com
OPEN_METEO_ENSEMBLE_API_URLhttps://ensemble-api.open-meteo.com
OPEN_METEO_GEOCODING_API_URLhttps://geocoding-api.open-meteo.com
OPEN_METEO_FLOOD_API_URLhttps://flood-api.open-meteo.com
OPEN_METEO_CLIMATE_API_URLhttps://climate-api.open-meteo.com

Claude Desktop では、サーバーエントリーの env キーを使ってこれらを渡します。

スキル

skills/ ディレクトリには、適切なツールとパラメーターを選ぶ際にアシスタントを支援する SKILL.md ガイドが 2 つあります。

スキル用途
open-meteo日常的な気象情報:予報、過去データ、空気質、海洋、標高
open-meteo-advanced特定のモデル、アンサンブルの不確実性、季節予報、気候予測

Claude Code の場合は、~/.claude/skills/ にコピーします。

cp -r skills/open-meteo skills/open-meteo-advanced ~/.claude/skills/

Claude Desktop の場合は、該当する SKILL.md を会話にアップロードします。

開発

git clone https://github.com/cmer81/open-meteo-mcp.git
cd open-meteo-mcp
npm install
npm run build
コマンド説明
npm run dev / npm run dev:http自動リロードを有効にしてソースから実行します(stdio / HTTP)
npm test単体テスト(ネットワークはモック)
npm run typecheck / npm run lint型チェックと Biome によるリント
npm run smoke実際の MCP クライアントを介して、ライブ API に対して 17 個すべてのツールを呼び出します。事前のビルドが必要です
npm run evalLLM の使いやすさを測るベンチマークです。下記を参照してください

Claude Desktop からローカルビルドを使うには、"command": "node" と "args": ["/path/to/open-meteo-mcp/dist/index.js"] を指定します。

評価

evals/evaluation.xmlでは、このサーバーのツールだけを与えられたLLMが、現実的な質問に回答できるかを確認します。14問の質問は、安定したデータ(ERA5アーカイブ、CMIP6予測、ジオコーディング、標高)に基づいているため、期待される回答が変わることはありません。

pip install -r evals/scripts/requirements.txt
export ANTHROPIC_API_KEY=...        # or put it in .env

npm run build && npm run eval
npm run eval -- --no-server-instructions   # baseline without the server instructions

警告

評価では、質問ごとに実際のAnthropic APIを呼び出し、クレジットを消費します。これは手動で行う確認であり、CIの一部ではありません。

貢献を歓迎します。CONTRIBUTING.mdをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。