Docker を使用した MCP サーバー
このプロジェクトは、モデル制御プロトコル (MCP) を OpenAI の API と統合し、OpenAI が Docker で実行されている MCP サーバーによって公開されるツールにアクセスして使用できるようにする方法を示します。
前提条件
システムにDockerがインストールされている
Git(リポジトリのクローンを作成する)
Related MCP server: MCP Simple OpenAI Assistant
プロジェクト構造
server.py: ツールを使ったMCPサーバ実装client.py: サーバーに接続してエージェントを呼び出すクライアントDockerfile: Dockerイメージを構築するための手順requirements.txt: プロジェクトの Python 依存関係
データフローの説明
ユーザークエリ: ユーザーはシステムにクエリを送信します (例: 「当社の休暇ポリシーは何ですか?」)
OpenAI API : OpenAIはMCPサーバーからクエリと利用可能なツールを受け取ります
ツールの選択: OpenAIはクエリに基づいてどのツールを使用するかを決定します
MCPクライアント:クライアントはOpenAIのツール呼び出し要求を受信し、MCPサーバーに転送します。
MCP サーバー: サーバーは要求されたツールを実行します (例: ナレッジ ベース データの取得)
レスポンスフロー: ツールの結果はMCPクライアントを介してOpenAIに返されます。
最終応答: OpenAIはツールデータを組み込んだ最終応答を生成する
Dockerで実行する
ステップ1: Dockerイメージを構築する
ステップ2: Dockerコンテナを実行する
これにより、Docker コンテナ内で MCP サーバーが起動し、ポート 8050 で公開されます。
クライアントの実行
サーバーが起動したら、別のターミナルでクライアントを実行できます。
クライアントはサーバーに接続し、利用可能なツールを一覧表示し、エージェントを呼び出してクエリに応答します。
トラブルシューティング
接続の問題が発生した場合:
サーバーが実行中かどうかを確認します。docker
docker psを使用して Docker コンテナが実行中であることを確認します。ポート マッピングを確認する:
docker psを使用するか、docker runコマンドの出力をチェックして、ポートが正しくマッピングされていることを確認します。サーバー ログを確認する:
docker logs <container_id>を使用してサーバー ログを表示し、エラーがあるかどうかを確認します。ホストバインディング:コンテナ外からアクセスできるようにするため、サーバーは
127.0.0.1ではなく0.0.0.0にバインドするように設定されています。それでも問題が解決しない場合は、ファイアウォールの設定を確認する必要があるかもしれません。ネットワークの問題: リモート マシンで Docker を実行している場合は、クライアント マシンからポートにアクセスできることを確認してください。
注記
サーバーは SSE (Server-Sent Events) トランスポートを使用するように構成されており、ポート 8050 でリッスンします。
クライアントは
http://localhost:8050/sseでサーバーに接続します。クライアントを起動する前に、サーバーが実行中であることを確認してください。