
OpenAI Agents SDK 入門 (5) - MCP
「OpenAI Agents SDK」の「MCP」についてまとめました。
前回
1. MCP
「MCP」(Model Context Protocol) は、LLM にToolとコンテキストを提供する手法です。
「MCP」は、アプリケーションが LLM にコンテキストを提供する方法を標準化するオープンプロトコルです。「MCP」は、AI アプリケーション用の USB-C ポートのようなものだと考えてください。USB-C がデバイスをさまざまな周辺機器やアクセサリに接続するための標準化された方法を提供するのと同様に、「MCP」は AI モデルをさまざまなデータソースやToolに接続するための標準化された方法を提供します。
「Agents SDK」は「MCP」をサポートしています。これにより、幅広い「MCPサーバ」を使用してAgentにToolを提供できます。
2. MCPサーバ
現在、MCP仕様では、使用するトランスポートメカニズムに基づいて2種類のサーバが定義されています。
・stdio サーバはアプリケーションのサブプロセスとして実行されます。これらは「ローカル」で実行されていると考えることができます。
・HTTP over SSE サーバはリモートで実行されます。URL経由で接続します。
これらのサーバに接続するには、MCPServerStdio クラスと MCPServerSse クラスを使用できます。
たとえば、公式の「MCP filesystem server」は、次のように使用します。
async with MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
}
) as server:
tools = await server.list_tools()3. MCPサーバの使用
MCPサーバはAgentに追加できます。Agents SDK は、Agentが実行されるたびに MCPサーバで list_tools() を呼び出します。これにより、LLMはMCPサーバのToolを認識します。LLMがMCP サーバからToolを呼び出すと、SDK はそのサーバで call_tool() を呼び出します。
agent=Agent(
name="Assistant",
instructions="Use the tools to achieve the task",
mcp_servers=[mcp_server_1, mcp_server_2]
)4. キャッシュ
Agentが実行されるたびに、MCPサーバで list_tools() が呼び出されます。特にサーバがリモートサーバである場合、これはレイテンシヒットになる可能性があります。Toolのリストを自動的にキャッシュするには、MCPServerStdio と MCPServerSse の両方に cache_tools_list=True を渡します。Toolのリストが変更されないことが確実な場合にのみ、この操作を実行してください。 キャッシュを無効にする場合は、サーバで invalidate_tools_cache() を呼び出します。
5. エンドツーエンドの例
examples/mcp で完全な動作例を参照できます。
6. トレース
トレースは、次の MCP 操作を自動的にキャプチャします:
・Toolをリストするための MCPサーバへの呼び出し
・Function Callingに関する MCP 関連情報
