mcpField
M
MCP Knowledge Base Assistant

MCP Knowledge Base Assistant

ローカル
github.com/kofiadomメモリ・ナレッジ078 週間前に更新

MCP Knowledge Base Assistant について

MCP Knowledge Base Assistant は、OpenAI を使うクライアントがサーバーに接続し、JSON のナレッジベースから社内規定の回答を取得する例です。Docker によるサーバーのコンテナ化にも対応した MCP 入門用プロジェクトです。

主な機能

  1. 01社内規定の Q&A ナレッジベース
  2. 02情報取得用 MCP ツール
  3. 03SSE によるクライアント接続
  4. 04OpenAI API による自然言語応答
  5. 05Docker によるサーバーの任意コンテナ化

活用シーン

  1. 01社内規定に関する質問への回答
  2. 02MCP クライアントとサーバーの接続学習
  3. 03JSON 項目を追加した規定 Q&A の拡張

MCP 対応

サーバーは `get_knowledge_base` ツールを通じて JSON のナレッジベースを公開します。Python クライアントが SSE で接続し、そのツールを OpenAI に利用させます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP ナレッジベースアシスタント

OpenAI を利用したクライアントをナレッジベースサーバーに接続する、Model Context Protocol(MCP)のデモです。このプロジェクトでは、MCP を通じてナレッジベースにアクセスし、会社のポリシーに関する質問に答える、シンプルながらも強力な AI アシスタントの構築方法を紹介します。

📋 概要

このプロジェクトでは、以下の方法を紹介します。

  1. ナレッジベースをツールとして公開する MCP サーバーの構築
  2. サーバーに接続する MCP クライアントの作成
  3. OpenAI の API を統合して、自然言語インターフェースを作成
  4. 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 キー
インストール
  1. リポジトリをクローンします。

    git clone <repository-url>
    cd MCP-Get-Started
    
  2. 仮想環境を作成し、依存関係をインストールします。

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
    pip install -r requirements.txt
    
  3. プロジェクトのルートに 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)

クライアントは以下を行います。

  1. SSE トランスポートを使用して MCP サーバーに接続します
  2. 利用可能なツールの一覧を取得します
  3. ユーザーから自然言語のクエリを受け取ります
  4. 利用可能なツールとともにクエリを OpenAI に送信します
  5. OpenAI がツールを使用すると判断した場合、クライアントがツール呼び出しを実行します
  6. 最終的な応答をユーザーに返します
ナレッジベース(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 ドキュメントをご覧ください。

📄 ライセンス

MIT ライセンス

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。