# Claude Agent SDKの便利だけど知られていない機能
🌍 エージェントのツール実行が遅い?読み取り専用ツールを並列化すれば大幅に高速化できます!
readOnlyHint を設定するだけで、安全なツールが自動的に並列実行されるようになります。
📌 タイトル:読み取り専用ツールの並列実行 (readOnlyHint)
🔗 URL:
🧩 概要
Claude Agent SDKでは、読み取り専用のツール(Read、Glob、Grep、および `readOnlyHint` が設定されたMCPツール)が自動的に並列実行されます。一方、書き込みを伴うツール(Edit、Write、Bash)は安全のため逐次実行されます。カスタムツールはデフォルトで逐次実行ですが、MCP SDKのアノテーションで `readOnlyHint` を設定することで並列実行の対象にできます。
🛠 使い方
```typescript
// MCP ツール定義で readOnlyHint を設定
const tool = {
name: "search_database",
description: "Search the database for records",
inputSchema: { /* ... */ },
annotations: {
readOnlyHint: true, // これで並列実行の対象になる
},
};
```
```python
# Python - MCP サーバーでのツール定義
@server.tool(
name="search_database",
annotations={"readOnlyHint": True},
)
async def search_database(query: str) -> str:
# 読み取り専用の処理
return results
```
🏗 本番システムへの組み込み方
・データベース検索や外部API参照など、副作用のないカスタムツールには必ず `readOnlyHint` を設定します
・書き込みを伴うツールは逐次実行のままにして、データの整合性を保ちます
・並列実行による速度向上を計測し、ボトルネックを特定します
・MCP サーバーの設計段階で、読み取り専用と書き込みツールを明確に分離します
💡 ユースケース
🔍 複数のファイルを同時に検索して、コードベース全体の調査を高速化する
📊 複数のデータソースから同時にデータを取得して、分析レポートを素早く作成する
🌐 複数の外部APIを並列で呼び出して、情報収集のレイテンシーを削減する
⚠️ 注意点
・`readOnlyHint` はあくまでヒントであり、ツールが実際に副作用を持たないことは開発者が保証する必要があります
・副作用のあるツールに誤って `readOnlyHint` を設定すると、並列実行による競合が発生する可能性があります
・カスタムツールはデフォルトで逐次実行のため、明示的に設定しないと並列化されません
・フィールド名は MCP SDK の仕様に由来しています
✨ ちょっとした設定一つで、エージェントの実行速度が劇的に変わることがあります。読み取り専用ツールへの `readOnlyHint` 設定は、最もコスパの良い最適化の一つです!
#
ClaudeAgentSDK# #
AIAgent#