OpenAI Integration with MCP について
OpenAI から MCP サーバーのツールを利用する方法を示す統合例で、ツール対応アプリを作る開発者向けです。ナレッジベース検索と stdio 通信を扱い、クライアントとサーバーを分離する場合の SSE についても説明します。
主な機能
- 01ナレッジベース検索ツールの公開
- 02MCP ツールを OpenAI 関数に変換
- 03ツール呼び出しと結果の中継
- 04stdio 通信の例示
活用シーン
- 01社内ポリシーの Q&A を使った問い合わせ対応
- 02MCP ツールを呼び出す OpenAI アプリの構築
- 03stdio によるツール通信の検証
MCP 対応
サンプルサーバーは `get_knowledge_base` を公開し、クライアントがサーバーに接続してツールと結果を OpenAI に中継します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP と OpenAI の連携
このセクションでは、Model Context Protocol(MCP)と OpenAI の API を連携させ、OpenAI が MCP サーバーから提供されるツールにアクセスして使用できるシステムを構築する方法を紹介します。
概要
この例では、次の方法を説明します。
- ナレッジベースツールを公開する MCP サーバーを作成する
- OpenAI をこの MCP サーバーに接続する
- ユーザーのクエリに応答する際、OpenAI がツールを動的に使用できるようにする
接続方法
この例では、クライアントとサーバー間の通信にstdio トランスポートを使用します。つまり、次のようになります。
- クライアントとサーバーは同じプロセス内で実行されます
- クライアントがサーバーをサブプロセスとして直接起動します
- 別個のサーバープロセスは必要ありません
クライアントとサーバーを別々のアプリケーションに分ける場合(例:サーバーを別のマシンで実行する場合)は、代わりにSSE(Server-Sent Events)トランスポートを使用する必要があります。SSE 接続の設定方法については、シンプルなサーバーのセットアップセクションを参照してください。
データフローの説明
- ユーザークエリ:ユーザーがシステムにクエリを送信します(例:「当社の休暇ポリシーを教えてください」)
- OpenAI API:OpenAI がクエリと、MCP サーバーから利用可能なツールを受け取ります
- ツールの選択:OpenAI がクエリに基づいて使用するツールを決定します
- MCP クライアント:クライアントが OpenAI からのツール呼び出しリクエストを受け取り、MCP サーバーに転送します
- MCP サーバー:サーバーが要求されたツールを実行します(例:ナレッジベースのデータを取得する)
- 応答のフロー:ツールの結果が MCP クライアントを経由して OpenAI に返されます
- 最終応答:OpenAI がツールのデータを組み込んだ最終応答を生成します
OpenAI によるツールの実行方法
OpenAI の関数呼び出しメカニズムは、次の手順で MCP ツールと連携します。
- ツールの登録:MCP クライアントが MCP ツールを OpenAI の関数形式に変換します
- ツールの選択:OpenAI がユーザークエリに基づいて使用するツールを決定します
- ツールの実行:MCP クライアントが選択されたツールを実行し、結果を返します
- コンテキストへの統合:OpenAI がツールの結果を応答に組み込みます
MCP の役割
MCP は、AI モデルとバックエンドシステムをつなぐ標準化された橋渡し役です。
- 標準化:MCP は、AI モデルがツールとやり取りするための一貫したインターフェースを提供します
- 抽象化:MCP は、バックエンドシステムの複雑さを抽象化します
- セキュリティ:MCP を使用すると、AI モデルに公開するツールやデータを正確に制御できます
- 柔軟性:AI 連携を変更せずに、バックエンドの実装を変更できます
実装の詳細
サーバー(server.py)
MCP サーバーは、JSON ファイルから Q&A ペアを取得する get_knowledge_base ツールを公開します。
クライアント(client.py)
クライアントは、次の処理を行います。
- MCP サーバーに接続します
- MCP ツールを OpenAI の関数形式に変換します
- OpenAI と MCP サーバー間の通信を処理します
- ツールの結果を処理し、最終応答を生成します
ナレッジベース(data/kb.json)
MCP サーバー経由でクエリできる、会社のポリシーに関する Q&A ペアが含まれています。
サンプルの実行
- 必要な依存関係がインストールされていることを確認します
.envファイルに OpenAI API キーを設定します- クライアントを実行します:
python client.py
注:この例で使用している stdio トランスポートでは、クライアントがサーバーを自動的に起動するため、サーバーを別途実行する必要はありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。