OpenAI Agents SDKは、エージェントを使ったAIアプリケーションを作るためのPython SDKです。LLMにツールを接続し、コンテキストを組み立て、ユーザーの要求を構造化して処理することに重点を置いています。
このSDKにModel Context Protocol(MCP)が統合され、エージェントが外部サーバーと連携して、さまざまなコンテキストやツール情報を取得できるようになりました。
今回はSDKの基本構造と考え方から、MCPの統合方法、実際のコード例まで、順に見ていきます。
エージェントは指示(instruction)を受け取り、目標の達成に向けてツールを使い、対話を続ける実行単位です。OpenAI Agents SDKは、これをコードで実装するための高水準APIです。
主な機能は次のとおりです。
- ユーザーの指示を解釈して目標を設定する
- 検索、計算機、外部APIなどのツールと連携する
- 実行計画を立て、ツールを呼び出す
- 結果を整理してユーザーに返す
この過程ではコンテキストの管理が重要です。MCPを使うと、より構造化された方法で管理できます。
MCP(Model Context Protocol)は、system、user、filesなどの複数の層にコンテキストを分け、構造化するプロトコルです。Agents SDKは、MCPサーバーとの通信でツールを取得し、そのコンテキストに合った応答を作れるよう設計されています。
公式の例では、@modelcontextprotocol/server-filesystem というMCPサーバーでファイルシステムを操作します。ファイルを開いたり一覧表示したりするツールが自動で登録されます。
from agents.mcp.server import MCPServerStdio
mcp_server = MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "samples_dir"]
},
cache_tools_list=True
)
このMCPサーバーは、ローカルファイルシステムを参照するツールの一覧を返し、エージェントがそれらを使えるようにします。
エージェントを作る基本コードは次のとおりです。
from agents import Agent
agent = Agent(
name="FileAssistant",
instructions="파일 시스템 도구를 사용해 작업을 도와주세요.",
mcp_servers=[mcp_server]
)
これでエージェントを実行できます。
from agents import Runner
async def main():
result = await Runner.run(agent, "현재 디렉토리의 모든 파일을 보여줘")
print(result.final_output)
エージェントは内部でMCPサーバーの list_tools() を通じてツールの一覧を取得し、適切なツールを使って指示に応じた結果を返します。
Agents SDKでは、次の2つの方法でMCPサーバーに接続できます。
MCPServerStdio
は、ローカルで動くMCPサーバーに接続します。
MCPServerSse
は、HTTPベースのリモートMCPサーバーにServer-Sent Eventsで接続します。
ローカル開発では Stdio が手軽で、リモートにデプロイする場合は Sse が便利です。
OpenAI Agents SDKは、AIエージェントをコードで実装するための強力なツールです。MCPとの組み合わせにより、外部システムとの接続、コンテキストの拡張、ツールの再利用がしやすくなりました。
MCPサーバーを自分で実装したり、既存のサーバーを利用したりして、柔軟で拡張しやすいエージェントを作れます。
- 検索API、データベース、外部APIなどをツールとしてつなぐMCPサーバーを作ってみてはどうでしょうか。
- LangChainやLlamaIndexなど、ほかのエージェントフレームワークと比較すると、どんな違いがあるでしょうか。