本稿では、Model Context Protocol(MCP)を基盤とするインテリジェントなアシスタントサーバーについて解説します。このシステムは、ユーザーが指定した地点のリアルタイムな天気情報を提供するだけでなく、その気象状況に応じた最適な旅行または外出計画を自動的に生成する能力を持っています。
主要機能と提供価値
このAIアシスタントは、ユーザーの利便性を最大化するための複数の機能を提供します。
- 詳細な気象情報照会: 世界中の主要都市に対応し、温度、湿度、風速といった詳細な気象データを提供します。日本語および英語の地名入力に対応しています。
- 気象条件に基づく旅行計画生成: 現在の天気状況(晴れ、雨、曇り、霧など)を識別し、それに適した活動や持ち物に関する具体的なアドバイスを自動で提案します。
- 多言語対応: 地名入力や天気情報の記述において、複数の言語をサポートします。
- 状況に応じたスマートな推奨: 特定の天気タイプ(例: 雨天時は屋内活動、晴天時は日焼け対策)に基づき、具体的な行動指針や注意事項を提供します。
システム運用フロー
ユーザーからのリクエストを受けてから情報を提供するまでの主要なプロセスは以下の通りです。
1. 天気情報取得プロセス
- ユーザーが地点名を入力。
- システムが入力された地点名を解析し、天気情報提供APIに問い合わせ。
- APIからの生データを処理・整形。
- 整形された天気情報をユーザーに提示。
2. 旅行計画生成プロセス
- まず天気情報を取得。
- 取得した天気情報から天気タイプ(晴れ、雨など)を識別。
- 識別された天気タイプと事前に定義されたルールに基づいて、適切な旅行または活動の推奨事項を生成。
- 生成された推奨事項をユーザーに出力。
3. ユーザーインタラクションの全体像
システムは歓迎メッセージから始まり、ユーザーからの入力待ちに入ります。天気情報の照会後、旅行計画の必要性を確認し、関連する推奨を生成・表示します。その後、ユーザーは継続または終了を選択できます。
主要ビジネスロジックと規則
天気タイプの識別規則
- 晴天: "clear", "sunny", "fair", "晴" などのキーワードを検出。
- 雨天・降雪: "rain", "shower", "drizzle", "雨", "雪" などのキーワードを検出。
- 曇天: "cloud", "overcast", "partly", "雲" などのキーワードを検出。
- 霧天: "fog", "mist", "haze", "霧" などのキーワードを検出。
旅行・活動推奨の生成規則
- 持ち物提案: 天気タイプに応じた雨具、日焼け止め、防寒具などを推奨。
- 活動提案: 屋内/屋外活動の優先順位付け。
- 安全上の注意: 特殊な気象条件下での安全に関する警告。
- 一般情報: 交通状況や必要書類などの基本的な旅行情報。
システムアーキテクチャの概要
このアシスタントシステムは、以下の論理層で構成されています。
- ユーザーインターフェース層: コマンドラインやWebインターフェース、MCPインターフェースを通じてユーザーと対話します。
- ビジネスロジック層: 天気情報の照会処理、旅行計画の生成エンジン、入力検証、エラーハンドリングなどを担当します。
- データアクセス層:
wttr.inなどの外部天気APIとの連携、データキャッシュ管理を行います。
ツールインターフェースの設計
MCPを介して利用可能なツールのインターフェースは、以下のように定義されています。
{
"weather_forecast_service": {
"description": "指定された地点の現在の気象情報を取得します。",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "天気情報を取得する都市または地域の名称(例: '東京', 'ロンドン')"
}
},
"required": ["location"]
},
"returns": {
"type": "string",
"description": "取得した気象情報(温度、湿度、天気概要など)のテキスト形式"
}
},
"travel_recommendation_engine": {
"description": "現在の気象状況に基づき、旅行または外出計画の推奨事項を生成します。",
"parameters": {
"type": "object",
"properties": {
"destination_area": {
"type": "string",
"description": "計画を立てる目的地の名称"
},
"weather_summary": {
"type": "string",
"description": "目的地の現在の気象状態に関する簡潔な情報"
}
},
"required": ["destination_area", "weather_summary"]
},
"returns": {
"type": "string",
"description": "気象条件に合わせた旅行や活動に関する具体的なアドバイスと注意事項"
}
}
}
開発と運用
本システムはPythonで開発されており、以下の手順でセットアップと実行が可能です。
依存関係のインストール
pip install -e .
テストの実行
システムの正確性を確認するため、自動テストおよび対話型テストが用意されています。
# 自動テストの実行
python test_tools.py --auto
# 対話型テストの実行
python test_tools.py
MCPサーバーの起動
以下のコマンドでMCPサーバーを起動し、リクエストの処理を開始します。
python main.py