Enables deployment of the weather API MCP server as a remote service on Cloudflare Workers with OAuth 2.0 authentication and KV storage for authentication data
MCP-Weather
気象庁APIを使用した天気情報取得MCPサーバー(OAuth 2.0認証付き)
概要
mcp-weatherは、気象庁の天気予報API(livedoor 天気互換)を使用して、日本各地の天気情報を取得するMCPサーバーです。OAuth 2.0認証を使用したセキュアなアクセス制御により、Cloudflare Workersでリモートサーバーとしてデプロイ可能です。
特徴
OAuth 2.0認証: セキュアなアクセス制御とトークンベース認証
豊富な気象データ: 天気概況、降水確率、風速情報を提供
全国対応: 主要都市の天気データを取得可能
リモート対応: Cloudflare Workersにデプロイしてリモートサーバーとして利用可能
モバイル対応: 標準的なOAuthフローでモバイルアプリからも利用可能
利用できるツール
1. get_weather_overview
指定した都市の天気概況を取得します。
発表時刻
天気概況文
今日・明日・明後日の天気予報
詳細な天気情報
2. get_precipitation_probability
指定した都市の降水確率を取得します。
時間帯別(0-6時、6-12時、12-18時、18-24時)の降水確率
今日・明日・明後日の予報
3. get_wind_speed
指定した都市の風速情報を取得します。
風向・風速の詳細情報
今日・明日・明後日の予報
対応都市
札幌、青森、盛岡、仙台、秋田、山形、福島、水戸、宇都宮、前橋、さいたま、千葉、東京、横浜、新潟、富山、金沢、福井、甲府、長野、岐阜、静岡、名古屋、津、大津、京都、大阪、神戸、奈良、和歌山、鳥取、松江、岡山、広島、山口、徳島、高松、松山、高知、福岡、佐賀、長崎、熊本、大分、宮崎、鹿児島、那覇
セットアップ
利用方法の選択
このMCPサーバーは2つの利用方法をサポートしています:
利用方法 | 特徴 | 認証 | 設定の複雑さ |
ローカルMCPサーバー | 高速、プライバシー保護、信頼性 | 不要 | 簡単 |
リモートMCPサーバー | 最新機能、スケーラビリティ | OAuth 2.0 | 中程度 |
方法A: ローカルMCPサーバー(推奨・簡単)
認証不要でシンプルに利用できます。
1. 依存関係のインストール
2. ローカルMCPサーバーをビルド
3. Cursorのmcp.jsonに設定
4. 使用開始
Cursorを再起動して、「東京の天気を教えて」と入力してください。
方法B: リモートMCPサーバー(OAuth認証)
方法1: 自動トークン更新(推奨)
方法2: 手動設定
OAuth認証トークンの取得
トークンを手動で更新
src/client/mcp-weather-remote.cjsのACCESS_TOKENを更新
Cursorのmcp.jsonに設定
環境変数を使用する場合
トラブルシューティング
ローカルMCPサーバーの問題
依存関係のインストール確認
TypeScriptの直接実行
リモートMCPサーバーの問題
デバッグ版を使用
トークンの期限切れ
Cursorのログを確認
Cursor > View > Output > MCP
ファイル構成
開発者向けセットアップ
依存関係のインストール
ローカルMCPサーバーの開発
Cloudflare Workersへのデプロイ
Wranglerのインストール(未インストールの場合)
Cloudflareアカウントへのログイン
KVストレージの作成 OAuth認証データを保存するためのKVネームスペースを作成します:
wrangler.tomlのKV IDを更新 作成したKVネームスペースのIDをwrangler.tomlに設定してください。デプロイ
ローカル開発
使用方法
ローカルMCPサーバーでの利用
設定完了後、Cursorを再起動
天気情報の取得
Cursorで「東京の天気を教えて」と入力
自動的に適切なツールが呼び出されます
リモートMCPサーバーでの利用
トークンの取得と設定
天気情報の取得
Cursorで「東京の天気を教えて」と入力
自動的に適切なツールが呼び出されます
デモ認証情報(リモートMCPサーバー用)
開発・テスト用のデモ認証情報:
ユーザー名: demo
パスワード: demo123
※ローカルMCPサーバーを使用する場合は認証不要です。
モバイルアプリ開発者向け
OAuth 2.0 APIエンドポイント
クライアント作成:
POST /oauth/client認証開始:
GET /oauth/authorizeトークン取得:
POST /oauth/tokenMCP API:
POST /(Bearer認証)
対応プラットフォーム
iOS: SFSafariViewController, ASWebAuthenticationSession
Android: Chrome Custom Tabs, WebView
React Native: react-native-app-auth
Flutter: flutter_appauth
詳細な実装例は、プロジェクトのサーバー側コード(src/)を参照してください。
データソース
本サーバーは「天気予報 API(livedoor 天気互換)」(https://weather.tsukumijima.net/)を使用しています。 このAPIは気象庁が配信している天気予報データをJSON形式で提供しています。
セキュリティ
OAuth 2.0認証
認証コード: 10分間の有効期限
アクセストークン: 1時間の有効期限
PKCE対応: モバイルアプリでのセキュアな認証
本番環境での設定
本番環境では以下の点にご注意ください:
クライアントシークレット: 安全に管理し、公開しないでください
リダイレクトURI: 信頼できるドメインのみを設定してください
アクセストークン: 適切に保護し、HTTPSでのみ送信してください
注意事項
APIのレスポンスが予期しないデータになった場合、エラーが発生する可能性があります
気象庁HPのAPI構造が変更された場合、サービスが停止する可能性があります
連続したAPIアクセスは避け、適切な間隔を空けてご利用ください
OAuth認証のトークンは適切に管理し、第三者に漏洩しないよう注意してください