mcpField
M
MCP Weather Server

MCP Weather Server

ローカル
github.com/mr-ranselメディア・デザイン077 週間前に更新

MCP Weather Server について

FastAPIを基盤とする天気サービスで、MCP経由でHome Assistantと連携し、OpenWeatherMap One Call API 3.0のデータを利用します。地点ごとの現在の天気や日別・時間別予報を必要とするユーザー向けです。

主な機能

  1. 01現在の天気状況の取得
  2. 02最大7日間の日別予報
  3. 03最大48時間の時間別予報
  4. 04メートル法とヤード・ポンド法の選択
  5. 05地点名の置換設定

活用シーン

  1. 01Home Assistantで地点の天気を確認
  2. 02今後数日間の天気傾向を確認
  3. 03今後数時間の予報を取得

MCP 対応

`/mcp/sse`エンドポイントを通じて、現在の天気、日別予報、時間別予報のツールをHome AssistantなどのMCPクライアントに公開します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCP Weather Server

Model Context Protocol(MCP)を使用して Home Assistant と連携する、FastAPI ベースの天気サーバーです。このサーバーは OpenWeatherMap の One Call API 3.0 を使用して、あらゆる場所の現在の天気、日別予報、時間別予報など、包括的な気象情報を提供します。

前提条件

  • Python 3.7+
  • OpenWeatherMap API キー(One Call API 3.0 へのアクセス権が必要)

セットアップ

  1. このリポジトリをクローンします

  2. 依存関係をインストールします:

    pip install -r requirements.txt
    
  3. 以下のいずれかの方法で OpenWeather API キーを設定します:

    • 環境変数を設定します(推奨):
      export OPENWEATHER_API_KEY=your_api_key_here
      
    • または、config.yaml に追加します:
      settings:
        api_key: your_api_key_here
      

    注:環境変数は設定ファイルより優先されます。

  4. (任意)config.yaml で追加の設定を行います:

    # General settings
    settings:
      units: "imperial"  # Optional: "metric" (default) or "imperial"
      api_key: "your_api_key_here"  # Alternative to environment variable
      server:
        host: "0.0.0.0"  # Optional: Interface to listen on (default: "0.0.0.0")
        port: 8000       # Optional: Port to listen on (default: 8000)
    
    # Location overrides (optional)
    overrides:
      "lafayette": "Lafayette, CA, US"
      # Add more overrides as needed
    

設定

API キー

OpenWeather API キーは、次の2つの方法で設定できます:

  1. 環境変数 OPENWEATHER_API_KEY(セキュリティ上推奨)
  2. config.yaml の settings.api_key
サーバー設定

config.yaml でサーバーの待ち受けインターフェースとポートを設定します:

settings:
  server:
    host: "0.0.0.0"  # Listen on all interfaces (default)
    port: 8000       # Port number (default)
  • host:待ち受けるネットワークインターフェース
    • "0.0.0.0":すべてのインターフェースで待ち受けます(デフォルト)
    • "127.0.0.1":localhost のみで待ち受けます
    • "192.168.1.100":指定したインターフェースで待ち受けます
  • port:待ち受けるポート番号(デフォルト:8000)
単位

config.yaml でメートル法とヤード・ポンド法を選択できます:

  • metric(指定がない場合のデフォルト):
    • 気温:摂氏
    • 風速:メートル毎秒
  • imperial:
    • 気温:華氏
    • 風速:マイル毎時
場所の上書き設定

config.yaml の任意の overrides セクションでは、曖昧な都市名に対するデフォルトの場所を指定できます。例:

overrides:
  "lafayette": "Lafayette, CA, US"
  "springfield": "Springfield, IL, US"
デフォルト設定

config.yaml ファイルがない場合、サーバーは次のように動作します:

  • メートル法の単位を使用します
  • すべてのインターフェース(0.0.0.0:8000)で待ち受けます
  • 場所の上書き設定は使用しません
  • API キーを環境変数に設定する必要があります

サーバーの実行

次のコマンドでサーバーを起動します:

python server.py

サーバーは設定されたホストとポートで実行されます(デフォルト:http://0.0.0.0:8000)

API エンドポイント

従来の REST API

これらのエンドポイントでは、従来の HTTP アクセスを利用できます:

現在の天気
GET /api/current-weather/{location}

気温、体感温度、湿度、風速、UV インデックス、雲量など、現在の天気を返します。

日別予報
GET /api/daily-forecast/{location}?days={number_of_days}

最大7日分の日別予報を返します。日中・最低・最高気温、降水確率、UV インデックスが含まれます。

時間別予報
GET /api/hourly-forecast/{location}?hours={number_of_hours}

最大48時間分の時間別予報を返します。気温、体感温度、降水確率、UV インデックスが含まれます。

MCP 連携

このサーバーは、Home Assistant とシームレスに連携するための Model Context Protocol(MCP)を実装しています。MCP エンドポイントは次のとおりです:

/mcp/sse

利用可能な MCP ツール:

  • current_weather(location: str):現在の天気を取得します
  • hourly_forecast(location: str, hours: int = 24):時間別予報を取得します
  • daily_forecast(location: str, days: int = 7):日別予報を取得します

場所の解決

このサーバーでは、柔軟な場所解決システムを使用しています:

  1. 場所が overrides 設定のエントリと一致する場合、その上書き設定を使用します
  2. 州や国の指定がない都市名は、直接解決を試みます
  3. 「都市名, 州」の形式の場合、米国とみなします(例:「Portland, OR」→「Portland, Oregon, US」)
  4. 完全な「都市名, 州, 国」の形式は常にそのまま使用されます

例:

  • 「London」→「London, England, GB」
  • 「Lafayette」→「Lafayette, California, US」(overrides で設定されている場合)
  • 「Portland, OR」→「Portland, Oregon, US」
  • 「Melbourne, AU」→「Melbourne, Victoria, AU」

API レスポンス形式

天気データは設定に応じて、メートル法またはヤード・ポンド法の単位で返されます:

メートル法(デフォルト):
  • 気温:摂氏
  • 風速:メートル毎秒
  • 湿度:パーセント
  • UV インデックス:0~11+
  • 降水確率:0~1(0~100%)
  • 雲量:パーセント
ヤード・ポンド法:
  • 気温:華氏
  • 風速:マイル毎時
  • その他の単位はメートル法と同じです

現在の天気の応答例:

{
    "resolved_location": "London, England, GB",
    "temperature": 17.88,
    "feels_like": 17.29,
    "description": "few clouds",
    "humidity": 60,
    "wind_speed": 5.14,
    "uvi": 0,
    "clouds": 11,
    "timestamp": "2024-04-30T13:10:15"
}

日別予報の応答例:

{
    "resolved_location": "London, England, GB",
    "forecast": [
        {
            "date": "2024-04-30",
            "temp_day": 20.3,
            "temp_min": 15.1,
            "temp_max": 22.4,
            "description": "scattered clouds",
            "humidity": 70,
            "wind_speed": 4.2,
            "precipitation_probability": 0.3,
            "uvi": 6.1
        }
    ]
}

コメント

MCP は初めてですか?

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

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