関数
query()
Claude Code とやり取りするための主要な非同期関数です。メッセージが到着するたびにそれらを生成する非同期イテレータを返します。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
prompt | str | AsyncIterable[dict] | 文字列としての入力プロンプト、またはストリーミングモード用の非同期イテラブル |
options | ClaudeCodeOptions | None | オプションの設定オブジェクト(None の場合は ClaudeCodeOptions() がデフォルト) |
戻り値
会話からのメッセージを生成するAsyncIterator[Message]
を返します。
例 - シンプルなクエリ
例 - オプション付き
tool()
型安全性を持つ MCP ツールを定義するためのデコレータです。
パラメータ
パラメータ | 型 | 説明 |
---|---|---|
name | str | ツールの一意識別子 |
description | str | ツールが何をするかの人間が読める説明 |
input_schema | type | dict[str, Any] | ツールの入力パラメータを定義するスキーマ(下記参照) |
入力スキーマオプション
-
シンプルな型マッピング(推奨):
-
JSON スキーマ形式(複雑な検証用):
戻り値
ツール実装をラップし、SdkMcpTool
インスタンスを返すデコレータ関数です。
例
create_sdk_mcp_server()
Python アプリケーション内で実行されるインプロセス MCP サーバーを作成します。
パラメータ
パラメータ | 型 | デフォルト | 説明 |
---|---|---|---|
name | str | - | サーバーの一意識別子 |
version | str | "1.0.0" | サーバーのバージョン文字列 |
tools | list[SdkMcpTool[Any]] | None | None | @tool デコレータで作成されたツール関数のリスト |
戻り値
ClaudeCodeOptions.mcp_servers
に渡すことができる McpSdkServerConfig
オブジェクトを返します。
例
クラス
ClaudeSDKClient
Claude Code との双方向でインタラクティブな会話のためのクライアントです。ストリーミング、割り込み、動的メッセージ送信をサポートして、会話フローを完全に制御できます。
メソッド
メソッド | 説明 |
---|---|
__init__(options) | オプションの設定でクライアントを初期化 |
connect(prompt) | オプションの初期プロンプトまたはメッセージストリームで Claude に接続 |
query(prompt, session_id) | ストリーミングモードで新しいリクエストを送信 |
receive_messages() | Claude からのすべてのメッセージを非同期イテレータとして受信 |
receive_response() | ResultMessage を含むまでのメッセージを受信 |
interrupt() | 割り込み信号を送信(ストリーミングモードでのみ動作) |
disconnect() | Claude から切断 |
コンテキストマネージャーサポート
クライアントは自動接続管理のために非同期コンテキストマネージャーとして使用できます:
重要: メッセージを反復処理する際は、早期終了のために break
を使用することは避けてください。これは asyncio のクリーンアップ問題を引き起こす可能性があります。代わりに、反復を自然に完了させるか、必要なものを見つけたときを追跡するためにフラグを使用してください。
例 - インタラクティブな会話
型
SdkMcpTool
@tool
デコレータで作成された SDK MCP ツールの定義です。
プロパティ | 型 | 説明 |
---|---|---|
name | str | ツールの一意識別子 |
description | str | 人間が読める説明 |
input_schema | type[T] | dict[str, Any] | 入力検証のためのスキーマ |
handler | Callable[[T], Awaitable[dict[str, Any]]] | ツール実行を処理する非同期関数 |
ClaudeCodeOptions
Claude Code クエリの設定データクラスです。
プロパティ | 型 | デフォルト | 説明 |
---|---|---|---|
allowed_tools | list[str] | [] | 許可されたツール名のリスト |
max_thinking_tokens | int | 8000 | 思考プロセスの最大トークン数 |
system_prompt | str | None | None | デフォルトのシステムプロンプトを完全に置き換える |
append_system_prompt | str | None | None | デフォルトのシステムプロンプトに追加するテキスト |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | MCP サーバー設定または設定ファイルへのパス |
permission_mode | PermissionMode | None | None | ツール使用の許可モード |
continue_conversation | bool | False | 最新の会話を続行 |
resume | str | None | None | 再開するセッション ID |
max_turns | int | None | None | 最大会話ターン数 |
disallowed_tools | list[str] | [] | 禁止されたツール名のリスト |
model | str | None | None | 使用する Claude モデル |
permission_prompt_tool_name | str | None | None | 許可プロンプト用の MCP ツール名 |
cwd | str | Path | None | None | 現在の作業ディレクトリ |
settings | str | None | None | 設定ファイルへのパス |
add_dirs | list[str | Path] | [] | Claude がアクセスできる追加ディレクトリ |
extra_args | dict[str, str | None] | {} | CLI に直接渡す追加の CLI 引数 |
can_use_tool | CanUseTool | None | None | ツール許可コールバック関数 |
hooks | dict[HookEvent, list[HookMatcher]] | None | None | イベントをインターセプトするためのフック設定 |
PermissionMode
ツール実行を制御するための許可モードです。
McpSdkServerConfig
create_sdk_mcp_server()
で作成された SDK MCP サーバーの設定です。
McpServerConfig
MCP サーバー設定のユニオン型です。
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
メッセージ型
Message
すべての可能なメッセージのユニオン型です。
UserMessage
ユーザー入力メッセージです。
AssistantMessage
コンテンツブロックを持つアシスタントレスポンスメッセージです。
SystemMessage
メタデータを持つシステムメッセージです。
ResultMessage
コストと使用情報を持つ最終結果メッセージです。
コンテンツブロック型
ContentBlock
すべてのコンテンツブロックのユニオン型です。
TextBlock
テキストコンテンツブロックです。
ThinkingBlock
思考コンテンツブロック(思考機能を持つモデル用)です。
ToolUseBlock
ツール使用リクエストブロックです。
ToolResultBlock
ツール実行結果ブロックです。
エラー型
ClaudeSDKError
すべての SDK エラーのベース例外クラスです。
CLINotFoundError
Claude Code CLI がインストールされていないか見つからない場合に発生します。
CLIConnectionError
Claude Code への接続が失敗した場合に発生します。
ProcessError
Claude Code プロセスが失敗した場合に発生します。
CLIJSONDecodeError
JSON パースが失敗した場合に発生します。
フック型
HookEvent
サポートされているフックイベント型です。セットアップの制限により、Python SDK は SessionStart、SessionEnd、および Notification フックをサポートしていません。
HookCallback
フックコールバック関数の型定義です。
input_data
: フック固有の入力データ(フックドキュメントを参照)tool_use_id
: オプションのツール使用識別子(ツール関連フック用)context
: 追加情報を持つフックコンテキスト
decision
: アクションをブロックするための"block"
systemMessage
: トランスクリプトに追加するシステムメッセージhookSpecificOutput
: フック固有の出力データ
HookContext
フックコールバックに渡されるコンテキスト情報です。
HookMatcher
特定のイベントやツールにフックをマッチングするための設定です。
フック使用例
ツール入力/出力型
すべての組み込み Claude Code ツールの入力/出力スキーマのドキュメントです。Python SDK はこれらを型としてエクスポートしませんが、メッセージ内のツール入力と出力の構造を表しています。Task
ツール名:Task
入力:
Bash
ツール名:Bash
入力:
Edit
ツール名:Edit
入力:
MultiEdit
ツール名:MultiEdit
入力:
Read
ツール名:Read
入力:
Write
ツール名:Write
入力:
Glob
ツール名:Glob
入力:
Grep
ツール名:Grep
入力:
NotebookEdit
ツール名:NotebookEdit
入力:
WebFetch
ツール名:WebFetch
入力:
WebSearch
ツール名:WebSearch
入力:
TodoWrite
ツール名:TodoWrite
入力:
BashOutput
ツール名:BashOutput
入力:
KillBash
ツール名:KillBash
入力:
ExitPlanMode
ツール名:ExitPlanMode
入力:
ListMcpResources
ツール名:ListMcpResources
入力:
ReadMcpResource
ツール名:ReadMcpResource
入力:
使用例
基本的なファイル操作
エラーハンドリング
クライアントでのストリーミングモード
カスタムツールの使用
関連項目
- Python SDK ガイド - チュートリアルと例
- SDK 概要 - 一般的な SDK 概念
- TypeScript SDK リファレンス - TypeScript SDK ドキュメント
- CLI リファレンス - コマンドラインインターフェース
- 一般的なワークフロー - ステップバイステップガイド