# Claude Agent SDKの便利だけど知られていない機能
🌍 サブエージェントにスキルやMCPサーバーを個別に設定したい?AgentDefinitionで細かくカスタマイズできます!
Claude Agent SDKのAgentDefinitionでは、skills、memory、mcpServersをはじめとする豊富なフィールドで、エージェント単位の詳細な設定が可能です。
📌 タイトル:エージェント単位の skills / memory / mcpServers 指定
🔗 URL:
🧩 概要
`AgentDefinition` には、`description` と `prompt` の必須フィールドに加え、多数のオプションフィールドがあります。`skills` でスキルをプリロード、`memory` でメモリソース(`user`/`project`/`local`)を指定、`mcpServers` でMCPサーバーを名前またはインライン設定で接続できます。さらに `tools`、`disallowedTools`、`model`(`sonnet`/`opus`/`haiku`/`inherit` またはフルモデルID)、`effort`、`permissionMode`、`maxTurns`、`background`、`initialPrompt` など、エージェントの挙動を包括的に制御できます。
🛠 使い方
```python
# Python - フル構成のエージェント定義
from claude_agent_sdk import AgentDefinition
agent = AgentDefinition(
description="データベース移行の専門家",
prompt="あなたはDB移行のエキスパートです。安全な移行戦略を提案してください。",
tools=["Read", "Grep", "Glob", "Bash"],
disallowed_tools=["Bash(rm *)"], # 特定操作を禁止
model="opus", # 高品質なモデルを使用
skills=["db-migration"], # スキルをプリロード
memory="project", # プロジェクトメモリを使用
mcpServers=["postgres-server"], # MCPサーバーに接続
effort="high", # 推論レベルを高く
max_turns=20, # 最大ターン数を制限
permission_mode="acceptEdits", # 編集を自動承認
background=False, # フォアグラウンドで実行
)
```
```typescript
// TypeScript
const agent: AgentDefinition = {
description: "Database migration specialist",
prompt: "You are a DB migration expert. Propose safe migration strategies.",
tools: ["Read", "Grep", "Glob", "Bash"],
disallowedTools: ["Bash(rm *)"],
model: "opus",
skills: ["db-migration"],
memory: "project",
mcpServers: ["postgres-server"],
effort: "high",
maxTurns: 20,
permissionMode: "acceptEdits",
background: false,
};
```
🏗 本番システムへの組み込み方
・`skills` でドメイン固有の知識をプリロードし、エージェントの専門性を高めます(未リストのスキルもSkillツール経由で呼び出し可能)
・`memory` で適切なスコープを設定し、エージェント間でのコンテキスト共有を制御します
・`mcpServers` でデータベースや外部サービスへの接続を名前またはインライン設定で管理します
・`maxTurns` でコスト制御と暴走防止を行い、`effort` でタスクの重要度に応じた推論品質を設定します
・`background: true` でノンブロッキング実行にし、並行タスクの効率を上げます
💡 ユースケース
🗄 MCPサーバー接続付きのデータベース移行エージェント
📚 ドメイン固有スキルをプリロードした専門家エージェント
⚡ バックグラウンド実行で並行分析を行う高速ワークフロー
⚠️ 注意点
・`tools` を省略するとすべてのツールを親から継承します。制限したい場合は明示的に指定してください
・サブエージェントの `permissionMode` は、親が `bypassPermissions`/`acceptEdits`/`auto` の場合、親のモードが強制的に継承されオーバーライドできません
・`skills` にリストしたスキルは起動時にプリロードされますが、リストにないスキルもSkillツール経由で呼び出せます
・Python SDKではフィールド名はcamelCaseでワイヤフォーマットに合わせます
✨ AgentDefinitionの豊富な設定フィールドを活用すれば、汎用エージェントではなく、タスクに最適化された専門家エージェントを構築できます!
#
ClaudeAgentSDK# #
AIAgent#