🚀 天気MCPサーバー
WeatherAPIサービスを使用して天気情報を提供するモデルコンテキストプロトコル(MCP)サーバーです。このサーバーを使用すると、AIアシスタントは標準入出力通信を通じて現在の天気、予報を取得し、場所を検索することができます。
✨ 主な機能
- 現在の天気:任意の場所のリアルタイムの天気状況を取得します。
- 天気予報:最大14日先までの天気予報を取得します。
- 場所検索:場所の名前を検索して検証します。
- 空気質データ:オプションで空気質情報を取得します。
- デバッグログ:トラブルシューティング用の包括的なログを提供します。
- 標準入出力通信:標準入出力を介した直接的なMCPプロトコル通信をサポートします。
📦 インストール
前提条件
- Python 3.13以上
- uvパッケージマネージャー
- WeatherAPIアカウントとAPIキー
オプション1:Smithery経由(推奨)
SmitheryのMCPレジストリを通じて自動的にインストールします。
npx -y @smithery/cli install weather-mcp-server --client claude
または、他のMCPクライアントの場合は以下のコマンドを使用します。
npx -y @smithery/cli install weather-mcp-server
これにより、以下のことが自動的に行われます。
- 天気MCPサーバーをインストールします。
- それをあなたのMCPクライアントの設定に追加します。
- WeatherAPIキーの入力を促します。
オプション2:手動インストール
- このリポジトリをクローンまたはダウンロードします
- WeatherAPIキーを取得します
- 依存関係をインストールします
uv sync
🛠️ 設定
環境変数
WeatherAPIキーを設定します。
export WEATHER_API_KEY=your_api_key_here
オプション - デバッグログを有効にする
export DEBUG=true
MCPクライアント設定
このサーバーをあなたのMCPクライアントの設定(例:config.json)に追加します。
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"/path/to/weather-mcp-server",
"run",
"server.py"
],
"env": {
"WEATHER_API_KEY": "your_api_key_here"
}
}
}
}
デバッグログを有効にするには、DEBUG環境変数を追加します。
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"--directory",
"/path/to/weather-mcp-server",
"run",
"server.py"
],
"env": {
"WEATHER_API_KEY": "your_api_key_here",
"DEBUG": "true"
}
}
}
}
💻 使用例
サーバーの起動
直接実行
WEATHER_API_KEY=your_api_key uv run server.py
デバッグログ付き
DEBUG=true WEATHER_API_KEY=your_api_key uv run server.py
MCPクライアントと共に
サーバーは、あなたのMCPクライアント(mcphostやClaude Desktopなど)が接続すると自動的に起動します。
利用可能なツール
1. weather_current
場所の現在の天気状況を取得します。
パラメーター
q(必須):場所のクエリ(都市名、座標、郵便番号)
aqi(オプション):空気質データを含めるかどうか("yes"または"no"、デフォルト:"no")
例
{
"name": "weather_current",
"arguments": {
"q": "New York, NY",
"aqi": "yes"
}
}
2. weather_forecast
1 - 14日間の天気予報を取得します。
パラメーター
q(必須):場所のクエリ
days(オプション):予報の日数(1 - 14、デフォルト:1)
例
{
"name": "weather_forecast",
"arguments": {
"q": "London, UK",
"days": 7
}
}
3. weather_search
クエリに一致する場所を検索します。
パラメーター
例
{
"name": "weather_search",
"arguments": {
"q": "Paris"
}
}
場所クエリの形式
天気ツールは、さまざまな場所の形式を受け付けます。
- 都市名:"New York"、"London"
- 都市と州/国:"New York, NY"、"London, UK"
- 座標:"40.7128,-74.0060"
- 郵便番号:"10001"、"SW1A 1AA"
- 空港コード:"JFK"、"LHR"
🧪 テスト
手動テスト
JSON-RPCリクエストでサーバーをテストします。
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | WEATHER_API_KEY=your_api_key uv run server.py
デバッグログ付き
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | DEBUG=true WEATHER_API_KEY=your_api_key uv run server.py
ツールテスト
天気ツールをテストします。
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"weather_current","arguments":{"q":"New York"}}}' | WEATHER_API_KEY=your_api_key uv run server.py
🐳 Dockerサポート
イメージのビルド
docker build -t weather-mcp-server .
Dockerでの実行
docker run --rm -i -e WEATHER_API_KEY=your_api_key weather-mcp-server
🐞 デバッグモード
サーバーにはオプションのデバッグログが含まれています。DEBUG環境変数を設定すると、詳細なログが有効になります。
ログレベル
INFO:基本的なサーバー操作(デフォルト)
DEBUG:詳細なリクエスト/レスポンス情報、API呼び出し(DEBUG=trueの場合)
❌ エラー処理
サーバーは一般的なエラーを適切に処理します。
- 無効なAPIキー:エラーメッセージとガイダンスを返します。
- 場所が見つからない:代替の検索用語を提案します。
- ネットワーク問題:再試行の提案を提供します。
- レート制限:制限を超えたときを示します。
📚 依存関係
httpx:APIリクエスト用のHTTPクライアント
asyncio:非同期/待機サポート
- 標準ライブラリ:
json、logging、sys、os
📈 API制限
WeatherAPIの無料プランには以下が含まれます。
- 月あたり100万回の呼び出し
- 現在の天気と3日間の予報
- 拡張予報とより高い制限を得るにはアップグレードが必要です。
⚙️ トラブルシューティング
一般的な問題
- "No content response received"
- APIキーが正しく設定されていることを確認します。
- ネットワーク接続を確認します。
- デバッグログを確認してエラーを確認します。
- "API key not provided"
WEATHER_API_KEY環境変数を設定します。
- MCPクライアントの設定を確認します。
- "Location not found"
- 異なる場所の形式を試してみます。
- weather_searchツールを使用して有効な場所を見つけます。
デバッグ出力
DEBUG環境変数を設定して詳細なログを有効にします。
DEBUG=true WEATHER_API_KEY=your_api_key uv run server.py 2>&1 | grep -E "(DEBUG|ERROR)"
🏗️ アーキテクチャ
このサーバーは、以下を使用してMCPプロトコルを実装しています。
- 標準入出力通信:標準入出力を介した直接的なJSON-RPC
- Asyncioイベントループ:非ブロッキングリクエスト処理
- 手動JSON-RPC:精密な制御のためのカスタム実装
- WeatherAPI統合:エラー処理付きのRESTful API呼び出し
🤝 コントリビューション
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 変更を加えます。
- 十分にテストします。
- プルリクエストを送信します。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています - 詳細についてはLICENSEファイルを参照してください。
🆘 サポート
- WeatherAPIドキュメント:https://www.weatherapi.com/docs/
- MCP仕様:https://spec.modelcontextprotocol.io/
- 問題報告:リポジトリの問題トラッカーでバグや機能リクエストを報告してください。
最終更新日: 2025年7月12日