Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

OpenAIエージェントSDKを使ってMCPサーバーを構築する方法

@apidog

@apidog

Updated on 3月 28, 2025

OpenAIエージェントSDKは、AI相互運用性のゲームチェンジャーであるMCP(モデルコンテキストプロトコル)をサポートするようになりました。これにより、開発者はAIモデルを外部ツールやデータソースに効率的に接続できます。この技術ガイドでは、OpenAIエージェントSDKを使用してMCPサーバーを構築し、AIアプリケーションを強化する手順を説明します。

💡
API開発の効率化を図りたいですか? Apidogを試してみてください。これは、APIを設計、テスト、管理するための強力なツールであり、API開発サイクルをより早くするのに最適です。
ボタン

MCPサーバーとは何か、そしてOpenAIエージェントSDKで使用する理由は?

MCP(モデルコンテキストプロトコル)は、アプリケーションが大規模言語モデル(LLM)にコンテキストを提供する方法を標準化するオープンプロトコルです。MCPはAIアプリケーションにとってのUSB-Cポートのようなもので、さまざまなデータソースやツールとシームレスにインターフェースするための汎用コネクタとして機能します。

OpenAIエージェントSDKは、エージェントが外部ツールやデータにアクセスできるようにMCPサーバーを統合しています。MCPサーバーの使用は、AIエージェントとリモート及びローカルリソースの間の円滑な相互作用を保証します。この統合により、ツール呼び出しの複雑さが軽減され、エージェントの機能が向上します。

OpenAI + MCPサーバーの組み合わせで構築できるいくつかの例を以下に示します:

OpenAI MCP統合を使用する手順

OpenAIエージェントSDKを使用したMCPサーバー構築の前提条件

始める前に、次のものが必要です:

  • システムにインストールされたPython 3.8以上
  • pip経由でインストールされたOpenAIエージェントSDK: pip install openai-agents
  • 特定の例のためにMCPサーバーコマンドを実行するように設定されたNode.js
  • 依存関係管理のための初期化された仮想環境を持つプロジェクトディレクトリ
  • SDKがasync/awaitを使用しているため、Pythonの非同期プログラミングの基本的な理解

ステップ1: MCPサーバーのための開発環境を設定する

# プロジェクト用の新しいディレクトリを作成
mkdir mcp-agent-project && cd mcp-agent-project

# Pythonの仮想環境を初期化
python -m venv venv && source venv/bin/activate

# 必要な依存関係をインストール
pip install openai-agents pyyaml

mcp_agent.config.yamlという名前の構成ファイルを設定し、MCPサーバーを定義します。この構成は、ローカルファイルにアクセスするためのファイルシステムMCPサーバーを指します。

ステップ2: OpenAIエージェントSDKにおけるMCPサーバーの種類を理解する

MCPサーバーには、MCP仕様で定義されている2種類があります:

  1. stdioサーバー: アプリケーションのサブプロセスとしてローカルで実行される
  2. HTTP over SSEサーバー: リモートで動作し、URL経由で接続される

OpenAIエージェントSDKは、これらのサーバーを扱うための2つのクラスを提供します:

  • MCPServerStdio: ローカルのサブプロセスベースのサーバー用
  • MCPServerSse: リモートのHTTP over SSEサーバー用

アプリケーションのアーキテクチャとレイテンシ要件に基づいてサーバータイプを選択してください。stdioサーバーはローカル開発に理想的ですが、SSEサーバーは分散システムに適しています。

ステップ3: MCPサーバーをOpenAIエージェントに接続する

OpenAIエージェントSDKから必要なクラスをインポートし、MCPサーバーを定義します:

from openai_agents import Agent, MCPServerStdio

# サンプルファイルへのパスを定義
samples_dir = "/path/to/your/files"

# サーバーを初期化するために非同期コンテキストマネージャを使用
async with MCPServerStdio(
    params={
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
    }
) as server:
    # MCPサーバーが提供するツールをリスト
    tools = await server.list_tools()

    # MCPサーバーを使用するエージェントを作成
    agent = Agent(
        name="Assistant",
        instructions="ファイルシステムツールを使用してユーザーのタスクを支援してください。",
        mcp_servers=[server]
    )

    # エージェントを実行
    result = await agent.run("ディレクトリ内のファイルをリストしてください。")

この設定により、エージェントは実行中にファイルシステムツールを動的に使用できるようになります。

ステップ4: ツールキャッシュを使用してパフォーマンスを最適化する

MCPサーバーは、エージェントが実行されるたびにlist_tools()を呼び出すため、レイテンシが生じる可能性があります。特にリモートサーバーでは、これが問題となることがあります。このオーバーヘッドを削減するために、ツールキャッシュを有効にすることができます:

# サーバー初期化時にキャッシュを有効にする
async with MCPServerStdio(
    params={
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
    },
    cache_tools_list=True  # キャッシュを有効化
) as server:
    # 最初の呼び出しの後、ツールリストはキャッシュされます
    tools = await server.list_tools()

キャッシュに関する重要な考慮事項:

  • ツールリストが実行時に変更されないことを確信している場合にのみキャッシュを使用してください。
  • ツールを更新する必要がある場合は、キャッシュを無効化してください: await server.invalidate_tools_cache()
  • キャッシュはstdioサーバーとSSEサーバーの両方に対して機能し、リモートサーバーではより大きなパフォーマンス向上が得られます。

ステップ5: エージェントのワークフローにMCPサーバー統合を実装する

MCPサーバーをエージェントと完全に統合するには:

from openai_agents import Agent, MCPServerStdio, MCPServerSse

async def run_agent_with_mcp_servers():
    # ローカルstdio MCPサーバーを初期化
    local_server = MCPServerStdio(
        params={
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-filesystem", "./local_files"],
        },
        cache_tools_list=True
    )

    # リモートSSE MCPサーバーを初期化(必要に応じて)
    remote_server = MCPServerSse(
        url="<https://your-remote-mcp-server.com/stream>",
        cache_tools_list=True
    )

    async with local_server, remote_server:
        # 両方のサーバーを使用するエージェントを作成
        agent = Agent(
            name="MultiToolAgent",
            instructions="利用可能なツールを使用してタスクを達成してください。",
            mcp_servers=[local_server, remote_server]
        )

        # エージェントを実行
        result = await agent.run("適切なツールを使用して要求されたタスクを完了してください。")
        return result

このアプローチにより、エージェントは標準化されたMCPインターフェースを通じてローカルおよびリモートのツールにアクセスできるようになります。

ステップ6: MCPサーバーをデバッグし、監視する

効果的なデバッグおよび監視戦略には以下が含まれます:

  • ツール実行中のエラーについてMCPサーバーログを確認すること
  • ツール呼び出しを監視するためにOpenAIエージェントSDKのトレースダッシュボードを使用すること
  • 無効なツール名やサーバーダウンタイムなどのエッジケースをテストして堅牢性を確保すること
  • リモートSSEサーバーを使用する際のレイテンシを監視し、必要に応じてキャッシュで最適化すること
  • SDKの組み込みトレース機能を活用することで、自動的に以下の内容をキャッチします:
  • ツールをリストするためのMCPサーバーへの呼び出し
  • 関数呼び出しに関するMCP関連情報

さらに、API開発サイクルをより簡単にするために、オールインワンAPIテストツールの使用も検討するべきです。

Apidogは、API開発を簡素化する強力なツールであり、OpenAIエージェントSDKでのMCPサーバーを構築する際に非常に適したコンパニオンです。MCPサーバーはリモートHTTP over SSEサーバーまたはツール呼び出しのテストのいずれかでAPIとの相互作用が必要となるため、Apidogはワークフローを強化できます。

ボタン

結論

OpenAIエージェントSDKを使用してMCPサーバーを構築することで、外部ツールやデータソースを使用したAIエージェントの強化に新たな可能性が広がります。標準化されたMCPインターフェースにより、異なる環境間での統合がよりシンプルかつ信頼性の高いものになります。

このガイドに従うことで、モデルコンテキストプロトコルを介してローカルおよびリモートリソースを活用する強力なエージェントを作成することができます。MCPエコシステムが成長し続けるにつれて、エージェントはますます多様なツールや機能にアクセスできるようになります。

より多くの例や詳細なドキュメントについては、公式のOpenAIエージェントSDK MCPドキュメントを訪れてください。SDKのMCPサポートは、AIエージェントをより強力でデジタル世界に接続されたものにするための重要な一歩を示しています。

ボタン