Weather MCP Server について
National Weather Serviceの警報と予報に加え、システムコマンドやプロセス情報を提供するPython製MCPサーバーです。Claude DesktopなどのMCPクライアントで利用できます。
主な機能
- 01州ごとの気象警報の取得
- 02座標に基づく予報の取得
- 03シェルコマンドの実行
- 04システムプロセス情報の確認
活用シーン
- 01米国の州別気象警報の確認
- 02指定座標の天気予報の取得
- 03MCPクライアント経由でのシェルコマンド実行
- 04システムプロセスの調査
MCP 対応
Claude DesktopなどのMCPクライアントに、天気とシステム操作のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Weather MCP Server
概要
このプロジェクトは、気象情報サービスを提供する Model Context Protocol(MCP)サーバーを実装しています。National Weather Service(NWS)API を利用して気象警報と予報を取得し、Claude などの MCP クライアントが使用できるツールとして公開します。
このサーバーは、Python プロジェクトのベストプラクティスに従ったモジュール型アーキテクチャで構築されており、保守や拡張が容易です。
機能
- 気象ツール:州ごとの気象警報と、特定の座標の予報を取得します
- システムツール:シェルコマンドを実行し、システムのプロセス情報を表示します
- MCP 統合:Claude Desktop などの MCP クライアントとシームレスに連携します
インストール
前提条件
- Python 3.11 以降
- uv パッケージマネージャー
セットアップ
-
リポジトリをクローンします:
git clone https://github.com/yourusername/weather.git cd weather -
uv を使用して依存関係をインストールします:
make install -
開発用に追加の依存関係をインストールします:
make dev
使用方法
サーバーの起動
MCP サーバーを起動するには:
make run
または、uv で直接起動します:
uv run python -m main
Claude Desktop への接続
- 気象サーバーを含めるように Claude Desktop の設定を更新します:
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["-m", "main"],
"cwd": "/path/to/weather"
}
}
}
-
Claude Desktop を再起動して変更を適用します
-
Claude Desktop で、MCP サーバーのドロップダウンメニューから「weather」MCP サーバーを選択できるようになります
気象 MCP サーバーが Claude Desktop で利用可能になり、会話の中で気象データを直接扱えるようになります。
質問の例
接続したら、Claude に次のように質問できます:
- 「CA の現在の気象警報は何ですか?」
- 「緯度 37.7749、経度 -122.4194 の予報は何ですか?」
- 「システム上で最も CPU を使用しているプロセスは何ですか?」
プロジェクト構成
weather/
├── src/
│ └── weather/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main server setup
│ ├── tools/ # Tool implementations
│ │ ├── __init__.py
│ │ ├── weather_tools.py
│ │ └── system_tools.py
│ ├── resources/ # Resource implementations
│ │ ├── __init__.py
│ │ └── system_resources.py
│ ├── services/ # External service integrations
│ │ ├── __init__.py
│ │ ├── weather_service.py
│ │ └── system_service.py
│ └── utils/ # Helper functions
│ ├── __init__.py
│ ├── http.py
│ └── formatting.py
├── tests/ # Test suite
├── main.py # Entry point
├── pyproject.toml # Dependencies and metadata
├── Makefile # Build commands
└── README.md # This file
Make ターゲット
このプロジェクトには、開発を簡単にするための make ターゲットがいくつか用意されています:
| ターゲット | 説明 |
|---|---|
install | uv を使用してプロジェクトの依存関係をインストールします |
lint | uv を使用して自動修正付きで ruff リンターを実行します |
format | uv を使用して black フォーマッターを実行します |
format-check | black によってファイルが再フォーマットされるかどうかを確認します |
lint-format | リンターとフォーマッターの両方を実行します |
test | uv を使用して pytest でテストを実行します |
clean | ビルド成果物とキャッシュファイルを削除します |
outdated | uv を使用して古い依存関係を確認します |
upgrade-deps | 古くなった依存関係をすべて uv でアップグレードします |
run | uv を使用して MCP サーバーを起動します |
inspector | テスト用に MCP Inspector を起動します |
hooks | git フックをインストールします |
dev-server | 開発モードで MCP サーバーを起動します |
stop-server | MCP サーバーと Inspector を停止します |
claude-install | Claude Desktop にサーバーをインストールします |
claude-uninstall | Claude Desktop からサーバーをアンインストールします |
make help を実行すると、使用可能なすべてのターゲットを確認できます。
Claude Desktop での使用
Claude Desktop で気象 MCP サーバーを使用するには:
- Claude Desktop にサーバーをインストールします:
make claude-install
これにより、次の処理が行われます:
- MCP CLI を使用して Claude Desktop にサーバーをインストールします
- プロジェクトを編集可能モード(
-e .)でインストールします - サーバーを「weather」という名前で登録します
- プロジェクトディレクトリから実行されるようにサーバーを設定します
-
Claude Desktop を再起動して変更を適用します
-
Claude Desktop で、MCP サーバーのドロップダウンメニューから「weather」MCP サーバーを選択できるようになります
気象 MCP サーバーが Claude Desktop で利用可能になり、会話の中で気象データを直接扱えるようになります。
Claude Desktop からサーバーをアンインストールするには:
make claude-uninstall
これにより、Claude Desktop から気象 MCP サーバーの設定が削除されます。変更を適用するには、Claude を再起動する必要があります。
開発モード
コードの変更時に自動で再読み込みされる、開発作業向けの設定です。
# Start the server in development mode with the MCP Inspector
make dev-server
この設定では、次の処理が行われます。
mcp devコマンドを使って MCP サーバーを起動します- プロジェクトを編集可能モード(
-e .)でインストールします - MCP Inspector を自動的に起動します
- コードの変更時に自動で再読み込みされるようにします
MCP Inspector は、ウェブブラウザーで http://localhost:5173 から利用できます。
サーバーと Inspector を停止するには、次を実行します。
make stop-server
コードを変更するとサーバーが自動的に再読み込みされるため、この設定は反復的な開発に最適です。
Inspector の機能
MCP Inspector では、次の操作ができます。
- ツールを調べる:利用可能なすべてのツールと、そのパラメーターおよびドキュメントを確認できます。
- ツールを呼び出す:カスタムパラメーターを指定してツールを実行し、結果を確認できます。
- リソースを閲覧する:利用可能なすべてのリソースと現在の値を確認できます。
- プロンプトをテストする:サーバーがプロンプトテンプレートを提供している場合、さまざまな入力でテストできます。
- ログを表示する:Inspector とサーバー間のすべてのやり取りの詳細なログを確認できます。
天気ツールのテスト
Inspector を使うと、天気ツールを簡単にテストできます。
- Inspector のインターフェースで
get_weather_alertsツールを見つけます - パラメーター欄に州コード(例:「CA」、「NY」、「FL」)を入力します
- ツールを実行して結果を確認します
同様に、緯度と経度を指定すると、get_forecast ツールをテストできます。
システムツールのテスト
Inspector を使うと、システムツールも簡単にテストできます。
run_shell_commandツールを見つけます- パラメーター欄に安全なコマンド(例:「ls -la」、「echo hello」)を入力します
- ツールを実行して結果を確認します
Inspector を使ったデバッグ
Inspector は、特にデバッグに役立ちます。
- ツールの呼び出しに失敗した場合、詳細なエラーメッセージを表示します
- 正確なリクエストとレスポンスのペイロードを確認できます
- パラメーターの検証やツールの実装に関する問題の特定に役立ちます
MCP Inspector の詳細については、Model Context Protocol のドキュメントをご覧ください。
ローカルでのテスト
mcp[cli] パッケージに付属する MCP CLI ツールを使って、MCP サーバーをローカルでテストできます。
-
サーバーを起動します。
make run -
別のターミナルで、MCP CLI を使ってサーバーに接続します。
# List all available tools make inspector # Call a specific weather tool mcp call-tool http://localhost:8000 get_weather_alerts --args '{"state": "CA"}' # Get a weather forecast mcp call-tool http://localhost:8000 get_forecast --args '{"latitude": 37.7749, "longitude": -122.4194}' # List system resources mcp list-resources http://localhost:8000 # Get system processes mcp get-resource http://localhost:8000 top_processes
uv を直接使用する場合は、次のコマンドで MCP CLI を実行できます。
uv run mcp list-tools http://localhost:8000
開発
新しいツールの追加
サーバーに新しいツールを追加するには、次の手順に従います。
- 適切な tools モジュールに関数を作成します
@server.tool()デコレーターで登録しますtools/__init__.pyのツール登録を更新します
例:
@server.tool()
async def my_new_tool(param1: str, param2: int) -> str:
"""
Tool description.
Args:
param1: Description of param1
param2: Description of param2
Returns:
Description of return value
"""
# Implementation
return result
新しいリソースの追加
新しいリソースを追加するには、次の手順に従います。
- 適切な resources モジュールに関数を作成します
@server.resource()デコレーターで登録しますresources/__init__.pyのリソース登録を更新します
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
謝辞
- MCP の仕様を提供している Model Context Protocol
- 天気データを提供している National Weather Service API
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。