For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
メインナビゲーション
Theme

MCP 接続

OpenAI またはセッション環境から MCP サーバーに接続します。

MCP サーバーはツールの定義を公開し、呼び出されたツールを実行します。Agents API は利用可能なツールを検出し、サーバーを呼び出して結果をエージェントに返します。アプリケーション側で呼び出しを個別に処理する必要はありません。

サーバーにアクセスできる場所に応じて、接続元を選びます。

接続方式 接続元 セッション環境の要否
HTTP(connection_origin: "service"、デフォルト) OpenAI 不要
HTTP(connection_origin: "environment") セッション環境 必要
stdio セッション環境内のプロセス 必要

OpenAI からの接続

HTTP で通信する MCP サーバーを agent.tools に追加します。OpenAI からアクセスできるサーバーを指定してください。この接続方式は、セッション環境の有無にかかわらず利用できます。

たとえば、OpenAI ドキュメントの MCP サーバーは匿名アクセスを許可しています。

{
  "type": "mcp",
  "server_label": "openai_docs",
  "transport": {
    "type": "http",
    "server_url": "https://developers.openai.com/mcp"
  },
  "connection_origin": "service",
  "required": true
}
Agents API サービスがリモートの MCP サーバーに接続し、ツールを呼び出して結果を受け取ります。ボールトを接続している場合は、サーバーの URL に一致する認証情報がボールトから提供されます。

セッション環境からの接続

エグゼキューターを使う場合は、セッション環境から MCP サーバーに接続します。プライベートネットワーク上のサーバーや、セッション環境にインストールしたソフトウェアを利用する場合に適しています。

セッションの environment.type を self_hosted または openai_hosted に設定します。セルフホスト環境では、エージェントがツールを使用する前にエグゼキューターを接続してください。

HTTP での接続

すでに稼働しているサーバーには HTTP で接続します。次の設定の URL をセッション環境からアクセスできるアドレスに置き換え、agent.tools に追加します。

{
  "type": "mcp",
  "server_label": "internal_search",
  "transport": {
    "type": "http",
    "server_url": "https://mcp.internal.example.com/search"
  },
  "connection_origin": "environment",
  "required": true
}

この設定では、URL の localhost はセッション環境を指します。connection_origin を省略すると、OpenAI から接続します。

stdio を使ったサーバーの起動

エグゼキューターからサーバープロセスを起動するには、stdio を使用します。あらかじめサーバーとその依存関係をセッション環境にインストールしてください。

次の顧客検索の例では、MCP SDK をインストールします。

python3 -m venv /workspace/mcp-demo
/workspace/mcp-demo/bin/python -m pip install 'mcp==1.26.0'

サーバーのコードを /workspace/lookup_mcp.py に保存します。

顧客検索用 MCP サーバーの実行
import sys

from mcp.server.fastmcp import FastMCP

server = FastMCP("customer-lookup", host="127.0.0.1", port=8765, stateless_http=True)


@server.tool()
def get_customer(customer_id: str) -> dict:
    """Look up a customer in the example data."""
    customers = {"123": {"name": "Example Customer", "plan": "pro"}}
    return {"customer": customers.get(customer_id)}


if __name__ == "__main__":
    transport = sys.argv[1] if len(sys.argv) > 1 else "streamable-http"
    server.run(transport=transport)

サーバーを agent.tools に追加します。スクリプトに渡す引数 stdio で通信方式を指定します。

{
  "type": "mcp",
  "server_label": "customer_lookup",
  "transport": {
    "type": "stdio",
    "command": "/workspace/mcp-demo/bin/python",
    "args": ["/workspace/lookup_mcp.py", "stdio"],
    "cwd": "/workspace"
  },
  "required": true
}

stdio では、command と絶対パスで指定した cwd が必須です。args は任意です。connection_origin は省略してください。

顧客 123 を検索するようエージェントにメッセージを送ります。ツールは顧客名として Example Customer、利用プランとして pro を返します。

OpenAI がホストする環境で stdio を使って MCP サーバーに接続する場合は、ネットワークポリシーを省略するか、enabled に設定してください。この接続方式では、ネットワークポリシーの disabled と restricted はサポートされていません。

認証の設定

匿名アクセスを許可するサーバーでは、認証用のフィールドと vault_ids を省略します。それ以外の場合は、接続に使用する認証情報の取得元を選びます。

  • 単一セッション用の HTTP 認証情報: セッションの作成時に transport.authorization または transport.headers を設定します。Agents API はこれらの値を暗号化し、レスポンスのセッションリソースから除外します。
  • 再利用可能な HTTP 認証情報: MCP の認証情報をボールトに保存し、vault_ids でボールトをセッションに接続します。ボールトを使った MCP 認証を利用できるのは、OpenAI から接続する場合のみです。サーバーの URL に一致する認証情報が使用されます。複数の認証情報が一致する場合は、credential_id で使用するものを指定します。
  • stdio の認証情報: 環境変数に値を設定し、変数名を transport.env_vars に列挙します。環境内で実行されるコードは、これらの値を読み取ることができます。セルフホストのセッションでは、transport.env に値を直接指定できません。

たとえば、HTTP トランスポートには Bearer トークンと追加のヘッダーを指定できます。

{
  "type": "http",
  "server_url": "https://mcp.example.com/mcp",
  "authorization": "Bearer YOUR_MCP_ACCESS_TOKEN",
  "headers": { "X-Tenant-ID": "tenant_123" }
}

Authorization の値は、設定に直接指定するか、サーバーの URL に一致するボールトの認証情報から取得するか、どちらか一方を選んでください。ボールト認証には他のヘッダーを併用できます。セッション環境からの HTTP 接続ではボールトの認証情報を使用しないため、認証情報を設定に直接指定するか、信頼できるプロキシを使用してください。

再利用するエージェント定義、プラグインのアーカイブ、ログにはシークレットを含めないでください。エージェントが生成したコードから認証情報にアクセスできないようにするには、環境の外部で認証情報を提供する信頼できるプロキシまたはサーバーを使用します。

ツールへのアクセスと起動時の動作の制御

allowed_tools を設定すると、エージェントが検出して呼び出せるツールを制限できます。required: true を設定すると、サーバーを初期化できなかった場合にターンが失敗します。デフォルトでは、初期化の成功は必須ではありません。

MCP の設定フィールドの一覧は、セッション作成のリファレンスを参照してください。

接続のトラブルシューティング

必須のサーバーを初期化できない場合は、agent.session.turn.failed のエラーを確認してください。stdio サーバーの場合は、MCP プロセスのログも確認してください。

  • ネットワークアクセス: URL と connection_origin を確認してください。セッション環境から接続する場合は、エグゼキューターが接続されていることと、そのネットワークからサーバーにアクセスできることを確認してください。
  • 認証情報: トークンまたはヘッダーを確認してください。ボールトを使用する場合は、認証情報がサーバーの URL に一致することを確認してください。
  • 実行ファイルと依存関係: 設定したコマンドを環境内で実行できることを確認してください。
  • 作業ディレクトリ: stdio の設定をインラインで指定する場合は、既存のディレクトリの絶対パスを cwd に指定してください。

関連ガイド

  • プラグインを使うと、MCP の設定とスキルをまとめて、複数のセッションで再利用できます。
  • ツール検索では、対応するモデルとプロバイダーで MCP ツールを自動検出する仕組みを説明しています。