🌩️ MCP Weather Alerts Tool using FastMCP + Claude Desktop について
FastMCPで構築されたPython製MCPサーバーで、米国の州ごとの気象警報をリアルタイムに取得します。Claude DesktopなどのMCPクライアント向けに警報の詳細を構造化して返し、MCP Inspectorでテストできます。
主な機能
- 01州ごとの警報検索
- 02リアルタイム警報の取得
- 03警報詳細の構造化出力
- 04MCP Inspectorでのテスト
- 05Claude Desktopとの連携
活用シーン
- 01州の現在の警報を確認
- 02Claude Desktopで気象リスクを質問
- 03MCPツールのデバッグとテスト
MCP 対応
FastMCPを通じて、MCPクライアントに`get_alerts`ツールを公開します。api.weather.govから警報データを取得します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🌩️ FastMCP + Claude Desktop を使用した MCP 気象警報ツール
このプロジェクトでは、公式の FastMCP Python SDK を使用して MCP(Model Context Protocol) ツールを構築する方法を紹介します。Claude Desktop と連携し、api.weather.gov API を通じて、AI アシスタントが米国の州ごとの 気象警報 を取得できるようにします。
🚀 このプロジェクトでできること
- ✅
FastMCPを使用してカスタム MCP サーバーを実装します - 🌐
httpxを使用して、api.weather.gov からリアルタイムの気象警報を取得します - 📦 現象、深刻度、説明、指示などの構造化された情報を返します
- 🧠 Claude Desktop と連携します
- 🌈 MCP Inspector で対話的にテストできます
🧱 技術スタック
| ツール/ライブラリ | 用途 |
|---|---|
mcp[cli] | CLI ツールを備えた MCP サーバーツールキット |
httpx | 非同期 HTTP クライアント |
uv | モダンな Python パッケージ/依存関係マネージャー |
| Claude Desktop | LLM + MCP 用の AI インターフェース |
| MCP Inspector | MCP エンドポイントをデバッグするための UI |
📁 プロジェクト構成
mcpcrashcourse/
├── server/
│ └── weather.py # MCP server logic (get_alerts)
├── pyproject.toml # Project metadata + dependencies
├── uv.lock # Locked versions (auto-generated by uv)
└── README.md # You're reading it!
🧠 ツールのロジック:get_alerts
@mcp.tool()
async def get_alerts(state: str) -> list[dict]:
# Fetch weather alerts for a given U.S. state (e.g., 'CA')
url = "https://api.weather.gov/alerts/active"
params = {"area": state.upper()}
async with httpx.AsyncClient() as client:
response = await client.get(url, params=params)
data = response.json()
return [
{
"event": alert.get("event"),
"severity": alert.get("severity"),
"description": alert.get("description"),
"instruction": alert.get("instruction"),
}
for alert in data.get("features", [])
if alert.get("properties")
]
🛠️ インストールとセットアップ
1. プロジェクトの作成と設定
pipx install uv # install uv if you haven't
uv init mcpcrashcourse # start new project
cd mcpcrashcourse
uv add "mcp[cli]" httpx # add dependencies
2. ツールの追加
get_alerts のロジックを含む weather.py を server/ フォルダーに配置します。
🧪 実行と確認
MCP Inspector で起動
uv run mcp dev server/weather.py
次に、http://localhost:6757 を開いて、以下を行います。
get_alertsツールを表示する"TX"などを入力して呼び出してみる
🤖 Claude Desktop との連携
claude_desktop_config.jsonを更新します。
{
"mcpServers": {
"weather": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"<your-project-directory>/server/weather.py"
]
}
}
}
- Claude Desktop を再起動します
- 次のプロンプトを入力します。
「テキサス州の気象警報は何ですか?」
Claude が MCP ツールを呼び出し、構造化された出力を表示します。
💡 MCP とは?
Model Context Protocol は、アプリが LLM に コンテキスト(データ、ツール、プロンプト)を送信する方法を標準化します。「コンテキストプロバイダー」 と LLM レイヤーを分離します。
3 つの主要なプリミティブ:
| 種類 | 用途 | 例え |
|---|---|---|
| ツール | 関数を実行する | POST エンドポイント |
| リソース | 静的データを提供する | GET エンドポイント |
| プロンプト | 再利用可能なやり取り | LLM テンプレート |
📎 クレジット
- FastMCP Python SDK
- api.weather.gov
- Claude Desktop
- プロジェクト構成は、公式 MCP ドキュメント の例を参考にしています
📄 ライセンス
このプロジェクトは MIT License の下でオープンソースとして公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。