Openweathermcp について
Openweathermcpは、AIアシスタントからOpenWeatherMapの気象データを利用できるMCPサーバーです。現在の天気、予報、大気質、地図、警報、過去のデータ、場所検索に対応し、多言語の都市名を扱えます。
主な機能
- 01現在の天気と予報の取得
- 02大気質と過去データの取得
- 03気象マップと警報の参照
- 04地名と座標の相互変換
- 05複数の単位と言語に対応
活用シーン
- 01都市の現在の天気を確認
- 02数日間の天気予報を確認
- 03大気質や気象警報を確認
- 04地名を座標に変換
MCP 対応
OpenWeatherMapの気象およびジオコーディング機能を、MCPクライアント向けのツールとして提供します。利用にはOpenWeatherMap APIキーが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OpenWeatherMap MCP サーバー
Model Context Protocol(MCP)に基づく包括的な OpenWeatherMap API 統合サーバーで、AI アシスタントにあらゆる気象データへのアクセス機能を提供します。
🌟 主な機能
主な気象機能
- 🌡️ 現在の天気の照会 - 気温、湿度、風速、気圧などのリアルタイム気象データ
- 📅 天気予報 - 5日間の3時間間隔の詳細な天気予報と傾向分析
- 🏭 大気質のモニタリング - リアルタイムの大気質指数と汚染物質濃度データ
- 🗺️ 気象マップ - 複数のレイヤーに対応した気象マップタイル(雲、降水量、気温など)
- ⚠️ 気象警報 - 政府が発令する気象警報と安全に関する注意情報
- 📊 過去の気象データ - 過去の気象データの照会と複数日にわたる比較分析
スマートな都市名の照会
- 🧠 インテリジェントなフォールバック - 中国語と英語の両方の都市名を自動的に処理します
- 🔄 自動ジオコーディング - 都市名の直接照会に失敗した場合、ジオコーディングを使って座標を自動的に取得します
- 🌍 幅広い言語への対応 - ジオコーディング API を通じて、あらゆる言語の都市名を使用できます
その他の機能
- 🌍 ジオコーディング - 曖昧検索に対応した地名から座標への変換
- 📍 逆ジオコーディング - 座標から地名への変換
- 🔄 複数の単位に対応 - メートル法、ヤード・ポンド法、標準単位系
- 🌐 多言語対応 - 中国語、英語、その他多くの言語
📦 インストール
前提条件
- Node.js 18.0.0 以降
- OpenWeatherMap API キー
API キーの取得
- OpenWeatherMap にアクセスします
- アカウントを登録し、無料の API キーを取得します
- 環境変数を設定します:
export OPENWEATHER_API_KEY="your_api_key_here"
インストール方法
方法 1:NPM グローバルインストール
npm install -g openweather-mcp
方法 2:ソースからビルド
git clone https://github.com/QianJue-CN/OpenWeatherMCP.git
cd OpenWeatherMCP
npm install
npm run build
🚀 使い方
MCP サーバーとして実行
# Set API key
export OPENWEATHER_API_KEY="your_api_key_here"
# Start server
npx openweather-mcp
Claude Desktop で設定
Claude Desktop の設定ファイルに追加します:
{
"mcpServers": {
"openweather": {
"command": "npx",
"args": ["openweather-mcp"],
"env": {
"OPENWEATHER_API_KEY": "your_api_key_here"
}
}
}
}
その他の MCP クライアントで使用
MCP プロトコルに対応する任意のクライアントが、このサーバーに接続できます。
🛠️ 利用可能なツール
1. 現在の天気の照会(get_current_weather)
指定した場所のリアルタイム気象情報を取得します。
パラメーター:
city(任意):都市名。例:"Beijing"、"北京"、"Beijing,CN"lat(任意):緯度(-90~90)lon(任意):経度(-180~180)zip(任意):郵便番号。例:"10001,US"units(任意):単位系(metric/imperial/standard)lang(任意):言語コード(zh_cn/en/es/fr/de/ja/ko/ru)
スマートな都市名の対応:
- ✅ "北京"(中国語)→ 自動的に機能します
- ✅ "Beijing"(英語)→ 自動的に機能します
- ✅ "上海"(中国語)→ 自動的に機能します
- ✅ "Shanghai"(英語)→ 自動的に機能します
例:
{
"city": "北京",
"units": "metric",
"lang": "zh_cn"
}
2. 天気予報(get_weather_forecast)
5日間の天気予報データを取得します。
パラメーター:
- 場所のパラメーターは上記と同じです
cnt(任意):予報時点の数(最大40)
例:
{
"lat": 39.9042,
"lon": 116.4074,
"cnt": 16,
"units": "metric"
}
3. 大気質(get_air_quality)
大気質データを取得します。
パラメーター:
lat:緯度lon:経度start(任意):開始時刻のタイムスタンプ(過去のデータ用)end(任意):終了時刻のタイムスタンプ(過去のデータ用)
4. 気象マップ(get_weather_map)
気象マップタイルを取得します。
パラメーター:
layer:レイヤーの種類(clouds_new/precipitation_new/pressure_new/wind_new/temp_new)z:ズームレベル(0~10)x:タイルの X 座標y:タイルの Y 座標
5. 気象警報(get_weather_alerts)
気象警報情報を取得します。
パラメーター:
lat:緯度lon:経度
6. 過去の気象データ(get_historical_weather)
過去の気象データを照会します。
パラメーター:
lat:緯度lon:経度dt:照会日の Unix タイムスタンプunits:単位系lang:言語コード
7. ジオコーディング(geocoding)
地名から座標を取得します。
パラメーター:
q:場所の検索文字列limit:返す結果の数(1~5)
8. リバースジオコーディング(reverse_geocoding)
座標から地名を取得します。
パラメーター:
lat:緯度lon:経度limit:返す結果の数(1~5)
📝 使用例
北京の現在の天気を検索
{
"tool": "get_current_weather",
"parameters": {
"city": "北京",
"units": "metric",
"lang": "zh_cn"
}
}
上海の5日間の天気予報を取得
{
"tool": "get_weather_forecast",
"parameters": {
"city": "上海",
"units": "metric",
"lang": "zh_cn"
}
}
大気質を検索
{
"tool": "get_air_quality",
"parameters": {
"lat": 39.9042,
"lon": 116.4074
}
}
🌍 都市名のスマート検索の仕組み
- 直接検索:まず、指定された都市名を使って天気を直接検索します
- 自動フォールバック:直接検索に失敗した場合(404エラー)、ジオコーディングを自動的に実行します
- 座標変換:ジオコーディング API を通じて、都市名を正確な座標に変換します
- 再検索:取得した座標を使って天気データを再検索します
- シームレスな体験:このプロセス全体はユーザーに対して透過的に実行され、手動での対応は不要です
つまり、あらゆる言語の都市名を使用できます。
- 中国語:北京、上海、广州、深圳
- 英語:Beijing、Shanghai、Guangzhou、Shenzhen
- その他の言語:東京、ソウル、Paris、London
🔧 開発
プロジェクト構成
src/
├── index.ts # MCP server entry point
├── types/
│ ├── weather.ts # Weather data type definitions
│ └── mcp.ts # MCP tool type definitions
├── services/
│ └── openweather.ts # OpenWeatherMap API service
└── tools/
├── current-weather.ts # Current weather tool
├── forecast.ts # Weather forecast tool
├── air-pollution.ts # Air quality tool
├── weather-maps.ts # Weather maps tool
├── weather-alerts.ts # Weather alerts tool
└── historical-weather.ts # Historical weather tool
ビルドとテスト
# Install dependencies
npm install
# Build project
npm run build
# Development mode (watch file changes)
npm run dev
# Run tests
npm test
# Code linting
npm run lint
🌍 対応する場所の形式
都市名
"北京"- 中国語の都市名"Beijing"- 英語の都市名"Beijing,CN"- 都市名+国コード"New York,US"- 完全な形式
座標
- 緯度:-90~90
- 経度:-180~180
- 例:
lat: 39.9042, lon: 116.4074
郵便番号
"10001,US"- 米国の郵便番号"100000,CN"- 中国の郵便番号
📊 データ形式
温度単位
metric:摂氏(°C)imperial:華氏(°F)standard:ケルビン(K)
風速の単位
metric:メートル毎秒(m/s)imperial:マイル毎時(mph)
言語サポート
zh_cn:簡体字中国語en:英語es:スペイン語fr:フランス語de:ドイツ語ja:日本語ko:韓国語ru:ロシア語
⚠️ 重要な注意事項
- API の制限:無料アカウントには呼び出し回数の制限があります。適切にご利用ください
- 過去のデータ:過去の天気データには有料サブスクリプションが必要です
- One Call API:気象警報機能には One Call API 3.0 のサブスクリプションが必要です
- ネットワーク接続:サーバーが OpenWeatherMap API にアクセスできることを確認してください
🤝 コントリビューション
Issue とプルリクエストを歓迎します!
📄 ライセンス
MIT ライセンス
🔗 関連リンク
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。