MCPChatbot Example について
MCPChatbot Example は、MCP をQwen などのカスタム LLM と統合する方法を示すチャットボットのサンプルで、ターミナル版と Streamlit 版を提供します。MCP クライアントの実装を学びたい Python 開発者に向いています。
主な機能
- 01通常モードとストリーミングモードに対応したコマンドラインチャットボット
- 02Streamlit による Web チャット画面
- 03MCP ツール呼び出しのワークフロー表示
- 04Qwen や Ollama を含む LLM 設定
- 05同梱の Markdown 処理 MCP サーバーの例
活用シーン
- 01チャットアプリケーションに MCP ツールを接続する方法の学習
- 02サンプルを基に独自の MCP チャット画面を構築する
- 03ローカルの Markdown ファイルを使った会話の試験
MCP 対応
本プロジェクトは MCP クライアントの例で、設定ファイルに定義された MCP サーバーに接続し、そのツールを LLM が呼び出せるようにします。
詳細
MCPChatbot Example

このプロジェクトは、Model Context Protocol (MCP) をカスタマイズされた LLM (例:Qwen) と統合し、MCP サーバーを通じてさまざまなツールと対話できる強力なチャットボットを作成する方法を示しています。この実装は、LLM が外部ツールをシームレスに使用できるようにすることで、MCP の柔軟性を示しています。
ヒント
中国語版については、README_ZH.md を参照してください。
Overview
Chatbot Streamlit Example
Workflow Tracer Example
- 🚩 Update (2025-04-11):
- Chatbot streamlit example を追加しました。
- 🚩 Update (2025-04-10):
- より複雑な LLM レスポンス解析、複数の MCP ツール呼び出しと複数のチャット反復に対応。
- 通常モードとストリーミングモードの両方を備えた単一プロンプト例を追加しました。
- インタラクティブなターミナルチャットボット例を追加しました。
このプロジェクトには以下が含まれます:
- シンプル / 複雑な CLI チャットボットインターフェース
- Markdown 処理ツールなどの組み込み MCP サーバーとの統合
- カスタマイズされた LLM (例:Qwen) と Ollama のサポート
- 通常モードとストリーミングモードの両方での単一プロンプト処理用スクリプト例
- 通常モードとストリーミングレスポンスモードを備えたインタラクティブなターミナルチャットボット
Requirements
- Python 3.10+
- 依存関係(requirements 経由で自動インストール):
- python-dotenv
- mcp[cli]
- openai
- colorama
Installation
-
リポジトリをクローンします:
git clone [email protected]:keli-wen/mcp_chatbot.git cd mcp_chatbot -
仮想環境をセットアップします(推奨):
cd folder # Install uv if you don't have it already pip install uv # Create a virtual environment and install dependencies uv venv .venv --python=3.10 # Activate the virtual environment # For macOS/Linux source .venv/bin/activate # For Windows .venv\Scripts\activate # Deactivate the virtual environment deactivate -
依存関係をインストールします:
pip install -r requirements.txt # or use uv for faster installation uv pip install -r requirements.txt -
環境を設定します:
-
.env.exampleファイルを.envにコピーします:cp .env.example .env -
.envファイルを編集して、Qwen API キーを追加します(デモ用です。任意の LLM API キーを使用できます。.env ファイルで base_url と api_key を設定してください)。パスを設定します:LLM_MODEL_NAME=your_llm_model_name_here LLM_BASE_URL=your_llm_base_url_here LLM_API_KEY=your_llm_api_key_here OLLAMA_MODEL_NAME=your_ollama_model_name_here OLLAMA_BASE_URL=your_ollama_base_url_here MARKDOWN_FOLDER_PATH=/path/to/your/markdown/folder RESULT_FOLDER_PATH=/path/to/your/result/folder
-
Important Configuration Notes ⚠️
アプリケーションを実行する前に、以下の項目を変更する必要があります:
-
MCP サーバー設定:
mcp_servers/servers_config.jsonを編集して、ローカル設定に合わせます:{ "mcpServers": { "markdown_processor": { "command": "/path/to/your/uv", "args": [ "--directory", "/path/to/your/project/mcp_servers", "run", "markdown_processor.py" ] } } }/path/to/your/uvを uv 実行ファイルの実際のパスに置き換えてください。which uvコマンドを使用してパスを取得できます。/path/to/your/project/mcp_serversをプロジェクト内の mcp_servers ディレクトリへの絶対パスに置き換えてください。(Windows ユーザーの場合、Troubleshooting セクションの例を参照できます) -
環境変数:
.envファイルで適切なパスを設定してください:MARKDOWN_FOLDER_PATH="/path/to/your/markdown/folder" RESULT_FOLDER_PATH="/path/to/your/result/folder"アプリケーションはこれらのパスを検証し、プレースホルダー値が含まれている場合はエラーをスローします。
次のコマンドを実行して設定を確認できます:
bash scripts/check.sh
Usage
Unit Test
次のコマンドを実行してユニットテストを実行できます:
bash scripts/unittest.sh
Examples
Single Prompt Examples
プロジェクトには 2 つの単一プロンプト例が含まれています:
-
通常モード: 単一プロンプトを処理して完全なレスポンスを表示
python example/single_prompt/single_prompt.py -
ストリーミングモード: 単一プロンプトをリアルタイムストリーミング出力で処理
python example/single_prompt/single_prompt_stream.py
両方の例は、使用する LLM プロバイダーを指定するオプション --llm パラメーターを受け入れます:
python example/single_prompt/single_prompt.py --llm=ollama
メモ
詳細については、Single Prompt Example README を参照してください。
ターミナルチャットボット例
このプロジェクトには、2 つのインタラクティブなターミナルチャットボット例が含まれています。
-
通常モード: 完全な応答を含むインタラクティブなターミナルチャット
python example/chatbot_terminal/chatbot_terminal.py -
ストリーミングモード: ストリーミング応答を含むインタラクティブなターミナルチャット
python example/chatbot_terminal/chatbot_terminal_stream.py
どちらの例も、使用する LLM プロバイダーを指定するためのオプションの --llm パラメータを受け入れます。
python example/chatbot_terminal/chatbot_terminal.py --llm=ollama
メモ
詳細については、ターミナルチャットボット例の README を参照してください。
Streamlit ウェブチャットボット例
このプロジェクトには、Streamlit を使用したインタラクティブなウェブベースのチャットボット例が含まれています。
streamlit run example/chatbot_streamlit/app.py
この例の特徴:
- インタラクティブなチャットインターフェース。
- リアルタイムストリーミング応答。
- 詳細な MCP ツールワークフローの視覚化。
- サイドバーを使用した設定可能な LLM 設定 (OpenAI/Ollama) と MCP ツール表示。

メモ
詳細については、Streamlit チャットボット例の README を参照してください。
プロジェクト構成
mcp_chatbot/: コアライブラリコードchat/: チャットセッション管理config/: 設定処理llm/: LLM クライアント実装mcp/: MCP クライアントとツール統合utils/: ユーティリティ関数 (WorkflowTraceとStreamPrinterなど)
mcp_servers/: カスタム MCP サーバー実装markdown_processor.py: Markdown ファイルを処理するサーバーservers_config.json: MCP サーバーの設定
data-example/: テスト用のサンプル Markdown ファイルexample/: さまざまなユースケースのサンプルスクリプトsingle_prompt/: 単一プロンプト処理の例 (通常およびストリーミング)chatbot_terminal/: インタラクティブなターミナルチャットボット例 (通常およびストリーミング)chatbot_streamlit/: Streamlit を使用したインタラクティブなウェブチャットボット例
プロジェクトの拡張
このプロジェクトは次の方法で拡張できます。
mcp_servers/ディレクトリに新しい MCP サーバーを追加するservers_config.jsonを更新して、新しいサーバーを含める- 既存のサーバーに新しい機能を実装する
- 提供されたテンプレートに基づいて新しい例を作成する
トラブルシューティング
Windows ユーザーの場合、次の servers_config.json を例として使用できます。
{
"mcpServers": {
"markdown_processor": {
"command": "C:\\Users\\13430\\.local\\bin\\uv.exe",
"args": [
"--directory",
"C:\\Users\\13430\\mcp_chatbot\\mcp_servers",
"run",
"markdown_processor.py"
]
}
}
}
- パスの問題: 設定ファイル内のすべてのパスがお使いのシステムに適した絶対パスであることを確認してください
- MCP サーバーエラー: ツールが正しくインストールされ設定されていることを確認してください
- API キーエラー: API キーが
.envファイルに正しく設定されていることを確認してください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。