MCP Knowledge Base Assistant について
MCP Knowledge Base Assistant は、OpenAI を使うクライアントがサーバーに接続し、JSON のナレッジベースから社内規定の回答を取得する例です。Docker によるサーバーのコンテナ化にも対応した MCP 入門用プロジェクトです。
主な機能
- 01社内規定の Q&A ナレッジベース
- 02情報取得用 MCP ツール
- 03SSE によるクライアント接続
- 04OpenAI API による自然言語応答
- 05Docker によるサーバーの任意コンテナ化
活用シーン
- 01社内規定に関する質問への回答
- 02MCP クライアントとサーバーの接続学習
- 03JSON 項目を追加した規定 Q&A の拡張
MCP 対応
サーバーは `get_knowledge_base` ツールを通じて JSON のナレッジベースを公開します。Python クライアントが SSE で接続し、そのツールを OpenAI に利用させます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ナレッジベースアシスタント
OpenAI を利用したクライアントをナレッジベースサーバーに接続する、Model Context Protocol(MCP)のデモです。このプロジェクトでは、MCP を通じてナレッジベースにアクセスし、会社のポリシーに関する質問に答える、シンプルながらも強力な AI アシスタントの構築方法を紹介します。
📋 概要
このプロジェクトでは、以下の方法を紹介します。
- ナレッジベースをツールとして公開する MCP サーバーの構築
- サーバーに接続する MCP クライアントの作成
- OpenAI の API を統合して、自然言語インターフェースを作成
- Docker を使用してサーバーコンポーネントをコンテナ化
このシステムでは、ユーザーが会社のポリシーについて自然言語で質問すると、AI がナレッジベースから関連情報を取得し、正確な回答を提供します。
🏗️ アーキテクチャ
このプロジェクトは、MCP のクライアント・ホスト・サーバーアーキテクチャに従っています。
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ OpenAI Model │◄────┤ MCP Client │◄────┤ MCP Server │
│ (GPT-4o) │ │ (client.py) │ │ (server.py) │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ │
│ Knowledge Base │
│ (kb.json) │
│ │
└─────────────────┘
- MCP サーバー:照会可能なツールとしてナレッジベースを公開します
- MCP クライアント:サーバーに接続し、OpenAI の API と統合します
- OpenAI モデル:自然言語のクエリを処理し、応答を生成します
- ナレッジベース:会社のポリシーに関する質問と回答のペアを含む JSON ファイルです
🚀 はじめに
前提条件
- Python 3.11 以降
- Docker(任意。サーバーのコンテナ化に使用)
- OpenAI API キー
インストール
-
リポジトリをクローンします。
git clone <repository-url> cd MCP-Get-Started -
仮想環境を作成し、依存関係をインストールします。
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate pip install -r requirements.txt -
プロジェクトのルートに OpenAI API キーを記載した
.envファイルを作成します。OPENAI_API_KEY=your_openai_api_key_here
サーバーの実行
オプション 1:Python で直接実行する
python server.py
オプション 2:Docker で実行する
# Build the Docker image
docker build -t mcp-server .
# Run the container
docker run -p 8050:8050 mcp-server
クライアントの実行
サーバーを起動した状態で、新しいターミナルを開いて次のコマンドを実行します。
python client.py
📝 使用方法
クライアントはサーバーに接続し、会社の機会均等に関するポリシーについてサンプルの質問をします。client.py のクエリを変更すると、会社のポリシーについて別の質問をすることができます。
出力例:
Connected to server with tools:
- get_knowledge_base: Retrieve the entire knowledge base as a formatted string.
Query: What is the company's equal opportunity policy?
Response: The company's equal opportunity policy is as follows: The company is an equal opportunity employer and prohibits discrimination based on race, gender, age, religion, disability, or any other protected characteristic.
🔧 プロジェクト構成
server.py:ナレッジベースを公開する MCP サーバーの実装client.py:サーバーに接続し、OpenAI と統合する MCP クライアントdata/kb.json:会社のポリシーに関する質問と回答のペアを含むナレッジベースDockerfile:サーバーをコンテナ化するための設定requirements.txt:Python の依存関係
🧩 仕組み
MCP サーバー(server.py)
サーバーは get_knowledge_base という単一のツールを公開し、ナレッジベースファイル(data/kb.json)から情報を取得します。SSE(Server-Sent Events)トランスポートを使用し、ポート 8050 で実行されます。
MCP クライアント(client.py)
クライアントは以下を行います。
- SSE トランスポートを使用して MCP サーバーに接続します
- 利用可能なツールの一覧を取得します
- ユーザーから自然言語のクエリを受け取ります
- 利用可能なツールとともにクエリを OpenAI に送信します
- OpenAI がツールを使用すると判断した場合、クライアントがツール呼び出しを実行します
- 最終的な応答をユーザーに返します
ナレッジベース(data/kb.json)
ナレッジベースは、会社のポリシーに関する質問と回答のペアを含むシンプルな JSON ファイルです。必要に応じて、ポリシーや情報を追加して拡張できます。
🔄 ライフサイクル管理
クライアントは、Python の非同期コンテキストマネージャーを使用して、適切なライフサイクル管理を実装しています。
async with MCPOpenAIClient() as client:
await client.connect_to_server()
response = await client.process_query("What is the policy?")
# Resources are automatically cleaned up when exiting the context
これにより、MCP のベストプラクティスに従って、すべてのリソースが適切に初期化およびクリーンアップされます。
🛠️ カスタマイズ
ナレッジの追加
ナレッジベースを拡張するには、data/kb.json ファイルに質問と回答のペアを追加するだけです。
ツールの追加
server.py で @mcp.tool() デコレーターを使用して関数を追加すると、サーバーにツールを追加できます。
モデルの変更
別の OpenAI モデルを使用するには、client.py の MCPOpenAIClient クラスにある model パラメーターを変更します。
📚 MCP について詳しく知る
Model Context Protocol(MCP)は、LLM が外部のツールやサービスとやり取りするための標準化された方法です。次のようなメリットがあります。
- 再利用性:サーバーを一度構築すれば、MCP 互換のあらゆるクライアントで使用できます
- 組み合わせ可能性:複数のサーバーを組み合わせて、複雑な機能を実現できます
- エコシステムの拡大:ほかの人が作成したサーバーを活用できます
詳しくは、MCP ドキュメントをご覧ください。
📄 ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。