MCP-ChatBot について
MCP-ChatBotは、MCPを使ったLLMアプリケーションを試す人向けの、コンテナ化された天気チャットボットの例です。Streamlitの画面、FastMCPの天気サービス、GPT-4oを組み合わせ、サーバーを追加できる構成です。
主な機能
- 01Streamlitチャット画面
- 02自然言語での天気検索
- 03WeatherAPIからのデータ取得
- 04クライアントとサーバーの分離コンテナ
- 05拡張可能なMCPサーバー構成
活用シーン
- 01都市ごとの現在の天気の確認
- 02コンテナ型MCPチャットボットの検証
- 03サンプルへのサービスバックエンド追加
MCP 対応
FastMCPサーバーがMCP経由でStreamlitクライアントに天気情報の取得機能を提供します。追加のMCPサーバーを接続できる構成です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-ChatBot
MCP(Modular Capability Protocol)を使用して、複数のサービスバックエンドと連携する多用途のチャットボットアプリケーションです。
概要
MCP-ChatBotは、Modular Capability Protocol(MCP)を活用して、LLMが外部サービスとやり取りできるようにするコンテナ化アプリケーションです。この実装には、天気サービスのバックエンドと、自然言語で天気情報を問い合わせられるStreamlitベースのフロントエンドが含まれています。
特長
- コンテナ化アーキテクチャ:MCP サーバーとクライアントアプリケーション用の個別コンテナ
- 天気サービスとの連携:WeatherAPIを使用したリアルタイムの天気データ
- Streamlit UI:チャットボットとやり取りするための、すっきりとしたレスポンシブなユーザーインターフェイス
- 拡張性の高い設計:追加機能に対応するMCP サーバーを追加できる設計
- GPT-4oとの連携:自然言語理解にOpenAIのGPT-4oモデルを使用
アーキテクチャ
アプリケーションは、次の2つの主要コンポーネントで構成されています。
- MCP サーバー:天気データの取得を処理するFastMCPベースのサービス
- Streamlitクライアント:チャットボットとやり取りするためのウェブベースのUI
はじめに
前提条件
- DockerとDocker Compose
- WeatherAPIキー(WeatherAPIで登録してください)
- OpenAI APIキー(OpenAIで登録してください)
インストール
- リポジトリをクローンします。
git clone https://github.com/yourusername/MCP-ChatBot.git
cd MCP-ChatBot
- サンプルを基に
.envファイルを作成します。
cp .env.example .env
.envファイルを編集し、APIキーを追加します。
PYTHONUNBUFFERED=1
OPENAI_API_KEY=your_openai_api_key_here
WEATHER_API_KEY=your_weather_api_key_here
- Docker Composeを使用してアプリケーションを起動します。
docker-compose up --build
http://localhost:8501でStreamlit UIにアクセスします。
使用方法
アプリケーションの起動後、Streamlitインターフェイスからチャットボットを利用できます。
- テキスト入力欄に、天気について自然言語で質問を入力します。
- 質問の例:
- 「ニューヨークの天気はどうですか?」
- 「東京は今、どれくらい暑いですか?」
- 「ロンドンの天気について教えてください」
アプリケーションの拡張
MCP サーバーの追加
serversディレクトリに新しいサーバーファイルを作成します。docker-compose.ymlファイルに新しいサービスを追加します。- エージェントの設定に新しいサーバーを含めるよう、client.pyを更新します。
client.pyに新しいサーバーを追加する例:
server_1 = MCPServerHTTP(url="http://mcp_server:8001/sse")
server_2 = MCPServerHTTP(url="http://new_server:8002/sse") # New server
return Agent("openai:gpt-4o", mcp_servers=[server_1, server_2])
開発
プロジェクト構成
MCP-ChatBot/
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── client.py # Streamlit client application
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile.client # Dockerfile for Streamlit client
├── Dockerfile.server # Dockerfile for MCP server
├── LICENSE # MIT license
├── README.md # Project documentation
└── servers/ # MCP server implementations
└── server.py # Weather service implementation
技術スタック
- FastMCP:MCP サーバーを作成するためのフレームワーク
- Streamlit:UI用のウェブフレームワーク
- Pydantic-AI:LLMとのやり取りを行うエージェントシステム
- Docker:コンテナ化プラットフォーム
- OpenAI GPT-4o:自然言語処理用のLLM
トラブルシューティング
よくある問題
-
接続に失敗する:すべてのサービスが起動していることを確認してください。クライアントには再試行の仕組みがありますが、失敗する場合はアプリケーションを再起動してください。
-
APIキーのエラー:有効なAPIキーが
.envファイルに追加されていることを確認してください。 -
Dockerネットワークの問題:コンテナ間で通信できない場合は、Dockerネットワークの設定を確認し、サービス名がコード内の名前と一致していることを確認してください。
ライセンス
このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルをご覧ください。
謝辞
- MCP サーバーの実装にはFastMCPを使用しています。
- フロントエンドのフレームワークにはStreamlitを使用しています。
- 天気データにはWeatherAPIを使用しています。
Murali Anand作成 © 2025
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。