MCP Weather Application (Client-Server) について
MCP Weather Application (Client-Server)は、MCPサーバーとチャットクライアントを含む天気アプリのサンプルです。サーバーはNational Weather Serviceから警報と予報を取得し、クライアントはLangChainとGroqで自然言語の依頼を処理します。
主な機能
- 01気象警報と予報の取得
- 02MCP経由でサーバーツールを検出
- 03自然言語クエリ用チャット画面
- 04LangChainとGroqの利用
活用シーン
- 01チャットで気象警報を確認
- 02自然言語で天気予報を依頼
MCP 対応
サーバーはNational Weather Service APIを利用する`get_alerts`と`get_forecast`ツールを公開します。クライアントはstdioで接続し、ツールを検出してMCP経由で呼び出します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Weather Application(クライアント・サーバー)
このプロジェクトでは、MCP(Model Context Protocol)フレームワークを使用して天気情報を取得するクライアント・サーバーアプリケーションを紹介します。
weather/:National Weather Service(NWS)APIからデータを取得するMCPサーバーのコードが含まれています。mcp-client/:サーバーと連携し、GroqとともにLangChainを使用して自然言語のクエリを処理するMCPクライアントのコードが含まれています。
説明
MCP サーバー(weather/)は、MCP経由で利用できる特定のツール(get_alerts、get_forecast)を提供します。これらのツールを通じて行われたリクエストに対応するため、NWS APIに接続します。
MCP クライアント(mcp-client/)はMCPサーバーに接続してツールを検出し、チャットインターフェースを通じてユーザーが操作できるようにします。LangChainとGroq API(Llama 3モデル)を使用して自然言語のクエリを処理し、サーバーのツールが必要かどうかを判断し、必要に応じてMCP経由でツールを呼び出し、最終的な回答を作成します。
アーキテクチャ
- クライアントが起動し、サーバースクリプトへのMCP接続(stdio経由)を開始します。
- クライアントがサーバーで利用可能なツールを検出します。
- ユーザーがクライアントに自然言語のクエリを入力します。
- クライアントがGroq LLM(LangChain経由)を使用してクエリを解釈し、サーバーのツールを使用する必要があるかどうかを判断します。
- ツールが必要な場合、クライアントは必要な引数を指定したMCPリクエストをサーバーに送信し、特定のツール(例:
get_forecast)を実行します。 - サーバーがツールのロジックを実行し、NWS APIからデータを取得します。
- サーバーがMCP経由で結果をクライアントに返します。
- クライアントがツールの結果をLLMとの会話に取り込みます。
- クライアントがLLMによって生成された最終回答をユーザーに提示します。
セットアップ
依存関係のインストールやAPIキーなどの環境設定を含む詳しいセットアップ手順については、各コンポーネントのディレクトリにあるREADMEファイルを参照してください。
- サーバーのセットアップ:
weather/README.mdを参照してください - クライアントのセットアップ:
mcp-client/README.mdを参照してください
アプリケーションの実行
クライアントを実行してサーバーを自動的に起動・接続するには、mcp-client/(client.pyがあるディレクトリ)から次のコマンドを実行してください。
uv run client.py ../weather/weather.py
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。