Skip to main content
Glama

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 依存関係

データフローの説明

  1. ユーザークエリ: ユーザーはシステムにクエリを送信します (例: 「当社の休暇ポリシーは何ですか?」)

  2. OpenAI API : OpenAIはMCPサーバーからクエリと利用可能なツールを受け取ります

  3. ツールの選択: OpenAIはクエリに基づいてどのツールを使用するかを決定します

  4. MCPクライアント:クライアントはOpenAIのツール呼び出し要求を受信し、MCPサーバーに転送します。

  5. MCP サーバー: サーバーは要求されたツールを実行します (例: ナレッジ ベース データの取得)

  6. レスポンスフロー: ツールの結果はMCPクライアントを介してOpenAIに返されます。

  7. 最終応答: OpenAIはツールデータを組み込んだ最終応答を生成する

Dockerで実行する

ステップ1: Dockerイメージを構築する

docker build -t mcp-server .

ステップ2: Dockerコンテナを実行する

docker run -p 8050:8050 mcp-server

これにより、Docker コンテナ内で MCP サーバーが起動し、ポート 8050 で公開されます。

クライアントの実行

サーバーが起動したら、別のターミナルでクライアントを実行できます。

python client.py

クライアントはサーバーに接続し、利用可能なツールを一覧表示し、エージェントを呼び出してクエリに応答します。

トラブルシューティング

接続の問題が発生した場合:

  1. サーバーが実行中かどうかを確認します。docker docker psを使用して Docker コンテナが実行中であることを確認します。

  2. ポート マッピングを確認する: docker psを使用するか、 docker runコマンドの出力をチェックして、ポートが正しくマッピングされていることを確認します。

  3. サーバー ログを確認する: docker logs <container_id>を使用してサーバー ログを表示し、エラーがあるかどうかを確認します。

  4. ホストバインディング:コンテナ外からアクセスできるようにするため、サーバーは127.0.0.1ではなく0.0.0.0にバインドするように設定されています。それでも問題が解決しない場合は、ファイアウォールの設定を確認する必要があるかもしれません。

  5. ネットワークの問題: リモート マシンで Docker を実行している場合は、クライアント マシンからポートにアクセスできることを確認してください。

注記

  • サーバーは SSE (Server-Sent Events) トランスポートを使用するように構成されており、ポート 8050 でリッスンします。

  • クライアントはhttp://localhost:8050/sseでサーバーに接続します。

  • クライアントを起動する前に、サーバーが実行中であることを確認してください。

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TomasRodriguez2002/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server