weather_mcp_server¶
天気情報を提供する MCP(Model Context Protocol)サーバー実装。
このモジュールは以下の機能を提供します。
wttr.in API を利用した天気情報取得
日次キャッシュによる API 呼び出し最適化
MCP ツールとしての天気取得・キャッシュ操作
MCP 標準プロンプト(getPrompts)対応
主な構成要素¶
WeatherMCPServerMCP サーバー本体。ツール登録・プロンプト登録・起動制御を行います。MCP ツール -
get_weather: 都市名から天気情報を取得 -clear_cache: キャッシュ全削除 -get_cache_stats: キャッシュ統計取得MCP プロンプト -
Weather: 天気予報生成用システムプロンプト
天気情報を提供するMCPサーバー (MCP標準プロンプト形式対応版)
このサーバーは以下の機能を提供します: 1. 都市名から天気情報を取得(wttr.in APIを使用) 2. 天気情報のキャッシュ管理(日次更新) 3. キャッシュの統計情報取得とクリア 4. MCP標準形式のプロンプト提供(getPrompts)
主要コンポーネント: - WeatherCache: 天気情報のキャッシュを管理するクラス - get_weather: 天気情報を取得するツール - clear_cache: キャッシュをクリアするツール - get_cache_stats: キャッシュ統計を取得するツール - weather_forecaster: 天気予報用のシステムプロンプト(MCP標準形式) - detailed_weather_report: 詳細レポート用プロンプト(MCP標準形式)
キャッシュ戦略: - 同じ都市の情報は1日1回のみAPIから取得 - 前日以前のデータは自動的に削除 - JSONファイルに永続化
- class weather_mcp_server.WeatherMCPServer(config_file)¶
Bases:
object天気情報を提供するMCPサーバー。
wttr.in APIから天気情報を取得し、MCPツールとして提供します。 キャッシュ機能により、同じ都市への複数回リクエストは効率的に処理されます。
- clear_cache() dict¶
全てのキャッシュをクリアします。
- Returns:
クリア結果を含む辞書
- Return type:
dict
戻り値の構造(成功時):
{ "status": "success", "cleared_count": int # クリアされたエントリ数 }
戻り値の構造(エラー時):
{ "status": "error", "message": str # エラーメッセージ }
- get_cache_stats() dict¶
キャッシュの統計情報を取得します。
- Returns:
統計情報を含む辞書
- Return type:
dict
戻り値の構造(成功時):
{ "status": "success", "total_entries": int, # 総エントリ数 "today_entries": int, # 本日のエントリ数 "cities": list, # キャッシュされている都市のリスト "date": str # 現在の日付 }
戻り値の構造(エラー時):
{ "status": "error", "message": str # エラーメッセージ }
- get_weather(city: str) dict¶
指定された都市の天気予報を取得します。
wttr.in APIから天気情報を取得します。 キャッシュがある場合はキャッシュを優先的に返します。
【FastMCP2.0による自動変換】 - 関数名 → name: get_weather - 説明 → description:指定された都市の天気予報を取得します - 引数 → inputSchema:{‘type’: ‘object’,’properties’: {‘city’: {‘type’: ‘string’}}, ‘required’: [‘city’] } - 戻値 → outputSchema: {‘additionalProperties’: True, ‘type’: ‘object’}
- Parameters:
city (str) – 天気情報を取得したい都市名(英語表記: “Tokyo”, “London”など、または日本語: “東京”, “大阪”)
- Returns:
天気情報を含む辞書
- Return type:
dict
戻り値の構造(成功時):
{ "city": str, # 都市名 "temp_C": str, # 摂氏温度 "desc": str, # 天気の説明(英語) "cached": bool # キャッシュから取得したかどうか }
戻り値の構造(エラー時):
{ "city": str, # 都市名 "error": str, # エラーメッセージ "cached": bool # False }
【使用例】:
>>> get_weather("Tokyo") { "city": "Tokyo", "temp_C": "15", "desc": "Partly cloudy", "cached": False }
【注意事項】 - APIタイムアウト: 10秒 - キャッシュは日次で管理(前日のデータは使用されない) - 例外は発生させず、すべてのエラーは辞書形式で返される
- main()¶
MCPサーバーを起動します。
設定のTRANSPORT設定に基づいて、適切なモードでサーバーを起動します。
- weather_prompt(city: str = '東京') str¶
天気予報AIエージェント用のシステムプロンプトを生成します。
- Parameters:
city (str) – 対象の都市名(デフォルト: 東京)
- Returns:
生成されたプロンプト
- Return type:
str