OCI Generative AIでのMCPコール

MCP (Model Context Protocol)ツールは、AIモデルが外部システムと対話するために使用できる実行可能関数または機能です。OCI生成AIでMCPコールを使用して、Responses APIリクエスト中にリモートMCPサーバーによって公開される実行可能ツールにモデルがアクセスできるようにします。これらのツールは、API、データベース、ファイル・システム、アプリケーション・エンドポイントなどの外部システムへのアクセスを提供できます。OCI Generative AIは、リクエスト・ワークフローの一環として、リモートMCPサーバーと直接通信します。

ノート

OCI MCPコール・ツールは、OCI OpenAI互換エンドポイントとともに、レスポンスAPIのOpenAI MCPコールと同じ形式を使用します。構文およびリクエストの詳細は、OpenAI MCPのドキュメントを参照してください。

MCP呼び出しを使用するタイミング

モデルがリモートMCPサーバーでホストされているツールにアクセスする必要がある場合は、MCP呼び出しを使用します。この方法は、次の場合に役立ちます。

  • MCPサーバーと直接通信するためのエンタープライズAIエージェント・プラットフォーム
  • クライアント側のオーケストレーション・ステップの削減
  • クライアントが実行するツール・パターンより短いレイテンシ
  • リモートMCPサーバーを介して公開されるツールへのアクセス

主な機能

MCPコールには次の利点があります。

  • プラットフォーム間直接通信: クライアント・アプリケーションに制御を戻す標準関数コールとは異なり、MCPコールを使用すると、OCI生成AIはリモートMCPサーバーと直接通信できます。
  • レイテンシの低減: リクエストに余分なクライアント・ラウンドトリップが必要ないため、MCPコールによってオーケストレーションのオーバーヘッドを削減できます。

  • トランスポート・サポート: ストリーム可能なHTTP (SSEは非推奨およびサポート対象外)をサポートします。

MCPツールの定義

MCPツールを定義するには、"type": "mcp"を使用してtoolsプロパティにエントリを追加します。

response_stream = client.responses.create(
    model="openai.gpt-5.4",
    tools=[
        {
            "type": "mcp",
            "server_label": "dmcp",
            "server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.",
            "server_url": "https://mcp.deepwiki.com/mcp",
            "require_approval": "never",
        },
    ],
    input="Roll 2d4+1",
    stream=True,
)

for event in response_stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

この例では、レスポンスをストリーミングし、生成されたテキストを出力します。

MCPサーバーが公開するツールを制限する

リモートMCPサーバーは、多くのツールを公開できるため、コストと待ち時間を増やすことができます。アプリケーションでこれらのツールのサブセットのみが必要な場合は、allowed_toolsを使用してセットを制限します。

response_stream = client.responses.create(
    model="openai.gpt-oss-120b",
    tools=[
        {
            "type": "mcp",
            "server_label": "dmcp",
            "server_description": "A Dungeons and Dragons MCP server to assist with dice rolling.",
            "server_url": "https://mcp.deepwiki.com/mcp",
            "require_approval": "never",
            "allowed_tools": ["roll"],
        },
    ],
    input="Roll 2d4+1",
    stream=True,
    store=False,
)

MCPサーバーへの認証を提供する

リモートMCPサーバーに認証が必要な場合は、authorizationフィールドにアクセス・トークンを渡します。

response_stream = client.responses.create(
    model="xai.grok-4-1-fast-reasoning",
    tools=[
        {
            "type": "mcp",
            "server_label": "calendar",
            "server_url": "https://calendar.example.com/mcp",
            "authorization": "$CALENDAR_OAUTH_ACCESS_TOKEN"
        },
    ],
    input="List my meetings for 2026-02-02.",
    stream=True
)

rawトークン値のみを渡します。Bearer接頭辞は含めないでください。

OCIは、TLS経由でAPIリクエスト本文のトークンを送信します。OCIでは、トークンをデコード、検査、格納またはログに記録しません。TLSで暗号化されたMCPサーバー・エンドポイントを使用することをお薦めします。