mcpField
C
claude-agent-sdk

claude-agent-sdk

github.com/tdiminoエージェントワークフロー4138 回インストール1 週間前に更新
リポジトリ

claude-agent-sdk について

Claude Agent SDKは、Claude Codeのファイル操作、コマンド実行、ウェブ検索などを使うエージェントを構築するPythonおよびTypeScript SDKです。単発クエリと継続セッションに対応し、カスタムツール、フック、権限、サブエージェントを設定できます。

主な機能

  1. 01単発クエリと継続クエリ
  2. 02ファイル、シェル、ウェブツール
  3. 03カスタムツールとフック
  4. 04ツールの権限制御
  5. 05サブエージェントの作成
  6. 06PythonおよびTypeScript SDK

活用シーン

  1. 01単発のファイル操作やコーディングの自動化
  2. 02継続対話が可能なエージェントの構築
  3. 03読み取り専用のコードレビューエージェントの作成
  4. 04ウェブツールを使った調査

MCP 対応

エージェントはMCPサーバーをカスタムツールとして利用できます。SDKではエージェント設定にMCPサーバーを追加できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tdimino/claude-code-minoan --skill claude-agent-sdk

インストール後、Claude Code で/claude-agent-sdkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
best-practices.md
browser-control.md
built-in-tools.md
custom-tools.md
hooks.md
message-types.md
permissions.md
python-sdk.md
subagents.md
troubleshooting.md
templates/
agent-with-tracking-python.py
continuous-chat-python.py
custom-tool-python.py
hook-example-python.py
research-agent-python.py
session-api-typescript.ts
simple-agent-python.py
workflows/
add-custom-tools.md
add-hooks.md
create-agent.md

詳細

<essential_principles>

Claude Agent SDK の概要

Claude Agent SDK は、Claude Code を支えるファイル操作、bash コマンド、ウェブ検索などのツールをエージェントに提供します。ファイルの読み取り、コマンドの実行、ウェブ検索、コードの編集、作業の検証を行う自律型エージェントを構築できます。

クエリを送る 2 つの方法
関数セッション最適な用途
query()毎回新規単発タスク、自動化
ClaudeSDKClient継続的会話、フォローアップ、フック

主な違い: query() はより簡単ですが、フック、中断、カスタムツールには対応していません。高度な機能を使う場合は ClaudeSDKClient を使用してください。

エージェントループのパターン

エージェントはフィードバックループで動作します:

gather context → take action → verify work → repeat
インストール

Python:

uv add claude-agent-sdk

TypeScript:

npm install @anthropic-ai/claude-agent-sdk

要件:

  • Claude Code CLI がインストールされていること(npm install -g @anthropic-ai/claude-code)
  • ANTHROPIC_API_KEY 環境変数が設定されていること
クイックスタート
import asyncio
from claude_agent_sdk import query, ClaudeAgentOptions

async def main():
    async for message in query(
        prompt="Find and fix bugs in auth.py",
        options=ClaudeAgentOptions(allowed_tools=["Read", "Edit", "Bash"])
    ):
        print(message)

asyncio.run(main())

</essential_principles>

何をしたいですか?

  1. 新しいエージェントを作成する - エージェントをゼロから構築します
  2. カスタムツールを追加する - @tool デコレーターまたは MCP サーバーでツールを作成します
  3. フックを追加する - ロギング、検証、変更のためにツール呼び出しをインターセプトします
  4. 権限を設定する - ツールが実行できる操作を制御します
  5. サブエージェントを作成する - 並列作業用の特化したエージェントを定義します
  6. ブラウザーを制御する - Chrome 拡張機能、dev-browser スキル
  7. API リファレンスを確認する - Python または TypeScript SDK の詳細

先に進む前に、回答を待ちます。

回答読み込むファイル
1, "create", "new", "build"workflows/create-agent.md
2, "tools", "custom", "@tool"references/custom-tools.md
3, "hooks", "intercept"references/hooks.md
4, "permissions", "can_use_tool"references/permissions.md
5, "subagent", "parallel"references/subagents.md
6, "browser", "chrome", "automation"references/browser-control.md
7, "python", "reference"references/python-sdk.md
7, "typescript", "reference"references/typescript-sdk.md
"built-in", "tools"references/built-in-tools.md
"message", "types"references/message-types.md
"best practices", "patterns"references/best-practices.md
"error", "troubleshoot"references/troubleshooting.md

<quick_reference>

ClaudeAgentOptions(主なフィールド)

ClaudeAgentOptions(
    # Tools
    allowed_tools=["Read", "Write", "Bash"],  # Built-in tools to enable
    disallowed_tools=["WebSearch"],           # Tools to block

    # Prompts
    system_prompt="You are...",               # Custom system prompt
    # Or use preset: {"type": "preset", "preset": "claude_code", "append": "..."}

    # MCP Servers
    mcp_servers={"calc": my_server},          # MCP server configs

    # Permissions
    permission_mode="acceptEdits",            # default | acceptEdits | plan | bypassPermissions
    can_use_tool=my_handler,                  # Custom permission callback

    # Execution
    cwd="/path/to/project",                   # Working directory
    max_turns=10,                             # Limit iterations
    env={"API_KEY": "..."},                   # Environment variables

    # Advanced
    hooks={"PreToolUse": [...]},              # Behavior hooks
    agents={"researcher": AgentDef(...)},     # Subagents
    sandbox={"enabled": True},                # Sandbox settings
    setting_sources=["project"],              # Load .claude settings
)

組み込みツール

ツール用途
Readファイルの読み取り(テキスト、画像、PDF、ノートブック)
Write新しいファイルの作成
Edit検索と置換による既存ファイルの編集
Bashターミナルコマンドの実行
Globパターンによるファイル検索(**/*.ts)
Grep正規表現によるファイル内容の検索
WebSearchウェブの検索
WebFetchウェブページの取得と解析
Taskサブエージェントの起動
NotebookEditJupyter ノートブックの編集
TodoWriteタスクリストの管理
KillShellバックグラウンドシェルの終了
ExitPlanMode計画モードの終了

メッセージの種類

# All messages
Message = UserMessage | AssistantMessage | SystemMessage | ResultMessage

# Content blocks in AssistantMessage
ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock | ToolResultBlock

エラーの種類

from claude_agent_sdk import (
    CLINotFoundError,      # Claude Code CLI not installed
    CLIConnectionError,    # Connection failed
    ProcessError,          # CLI process failed
    CLIJSONDecodeError,    # JSON parsing failed
)

</quick_reference>

<thinking_config>

思考と労力の設定

「慎重に考えて」のようなプロンプトレベルの指示ではなく、effort パラメーターを使ってエージェントの思考の深さを制御します:

用途労力備考
素早い調査、簡単な編集low思考のオーバーヘッドを最小限に抑えます
標準的な開発mediumほとんどのエージェントのデフォルトです
複雑なアーキテクチャ、セキュリティhighより深い推論を行います
詳細な調査、長期的な作業max思考の予算を最大化します
# Adaptive thinking (recommended for Claude 4.6)
options = ClaudeAgentOptions(
    model="claude-opus-4-6",  # or claude-sonnet-4-6
    # Effort is controlled at the API level, not in the agent options
)

エージェントのシステムプロンプトに「慎重に考えて」や「徹底してください」を追加するのは避けてください。Claude 4.6 はタスクの複雑さに応じて、思考の深さを自動的に調整します。

</thinking_config>

よくあるパターン

ファイル操作エージェント
options = ClaudeAgentOptions(
    allowed_tools=["Read", "Write", "Edit", "Glob", "Grep"],
    permission_mode="acceptEdits",
    cwd="/path/to/project"
)
コードレビューエージェント
options = ClaudeAgentOptions(
    allowed_tools=["Read", "Glob", "Grep"],  # Read-only
    system_prompt="Review code for bugs, security issues, and style"
)
リサーチエージェント
options = ClaudeAgentOptions(
    allowed_tools=["WebSearch", "WebFetch", "Write"],
    max_turns=20  # Allow more iterations for research
)
ツールを使った対話型チャット
async with ClaudeSDKClient(options) as client:
    await client.query("What files are in this directory?")
    async for msg in client.receive_response():
        print(msg)

    # Follow-up - Claude remembers context
    await client.query("Show me the largest one")
    async for msg in client.receive_response():
        print(msg)

コメント