# OpenAI Agent SDKの便利だけど知られていない機能
🌍 MCPサーバーへのツール一覧取得が毎回ネットワークコールになっていませんか?
`list_tools()` のキャッシュを有効にすれば、安定したツール定義の再取得を省略し、レイテンシを大幅に削減できます。
📌 タイトル:list_tools() のキャッシュ
🔗 URL:
🧩 概要
MCPサーバーのツール定義が頻繁に変わらない場合、毎回 `list_tools()` をネットワーク越しに呼ぶのは無駄です。`cache_tools_list=True` を設定するだけで、ツール一覧をメモリにキャッシュし、2回目以降の取得を高速化します。ツール定義を更新した場合は `server.invalidate_tools_cache()` で明示的にキャッシュをクリアできます。
🛠 使い方
```python
from agents.mcp import MCPServerStreamableHttp
# ツール一覧のキャッシュを有効化
server = MCPServerStreamableHttp(
params={"url": ""},
cache_tools_list=True,
)
async with server:
# 初回はネットワーク呼び出し、2回目以降はキャッシュから取得
tools = await server.list_tools()
# ツール定義が変わった場合にキャッシュをクリア
server.invalidate_tools_cache()
tools = await server.list_tools() # 再取得される
```
🏗 本番システムへの組み込み方
・ツール定義が安定しているMCPサーバーには必ず `cache_tools_list=True` を設定する
・デプロイ時やツール更新時に `invalidate_tools_cache()` を呼んでキャッシュをリフレッシュする
・複数エージェントが同一サーバーを共有する場合、キャッシュにより全体のレイテンシが改善される
・ヘルスチェックのタイミングでキャッシュを定期的にリフレッシュする運用も有効
💡 ユースケース
⚡ 高頻度でエージェントを呼び出すチャットアプリのレスポンス改善
🔄 マルチターン会話でのツール一覧取得のオーバーヘッド削減
🏢 安定したツールセットを持つ社内MCPサーバーの最適化
📉 MCPサーバーへのリクエスト数削減によるコスト最適化
⚠️ 注意点
キャッシュを有効にすると、MCPサーバー側でツールが追加・削除されても反映されません。ツール定義が動的に変わる環境では、適切なタイミングで `invalidate_tools_cache()` を呼ぶか、キャッシュを無効のままにしてください。
✨ シンプルなフラグ一つで、MCPツール取得のオーバーヘッドを解消しましょう。
#
OpenAIAgentSDK# #
AIAgent#