Funciones
query()
La función async principal para interactuar con Claude Code. Devuelve un iterador async que produce mensajes a medida que llegan.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
prompt | str | AsyncIterable[dict] | El prompt de entrada como string o iterable async para modo streaming |
options | ClaudeCodeOptions | None | Objeto de configuración opcional (por defecto ClaudeCodeOptions() si es None) |
Retorna
Devuelve unAsyncIterator[Message]
que produce mensajes de la conversación.
Ejemplo - Consulta simple
Ejemplo - Con opciones
tool()
Decorador para definir herramientas MCP con seguridad de tipos.
Parámetros
Parámetro | Tipo | Descripción |
---|---|---|
name | str | Identificador único para la herramienta |
description | str | Descripción legible de lo que hace la herramienta |
input_schema | type | dict[str, Any] | Esquema que define los parámetros de entrada de la herramienta (ver abajo) |
Opciones de Esquema de Entrada
-
Mapeo de tipo simple (recomendado):
-
Formato de esquema JSON (para validación compleja):
Retorna
Una función decoradora que envuelve la implementación de la herramienta y devuelve una instanciaSdkMcpTool
.
Ejemplo
create_sdk_mcp_server()
Crear un servidor MCP en proceso que se ejecuta dentro de tu aplicación Python.
Parámetros
Parámetro | Tipo | Por defecto | Descripción |
---|---|---|---|
name | str | - | Identificador único para el servidor |
version | str | "1.0.0" | String de versión del servidor |
tools | list[SdkMcpTool[Any]] | None | None | Lista de funciones de herramientas creadas con el decorador @tool |
Retorna
Devuelve un objetoMcpSdkServerConfig
que puede pasarse a ClaudeCodeOptions.mcp_servers
.
Ejemplo
Clases
ClaudeSDKClient
Cliente para conversaciones bidireccionales e interactivas con Claude Code. Proporciona control completo sobre el flujo de conversación con soporte para streaming, interrupciones y envío dinámico de mensajes.
Métodos
Método | Descripción |
---|---|
__init__(options) | Inicializar el cliente con configuración opcional |
connect(prompt) | Conectar a Claude con un prompt inicial opcional o flujo de mensajes |
query(prompt, session_id) | Enviar una nueva solicitud en modo streaming |
receive_messages() | Recibir todos los mensajes de Claude como un iterador async |
receive_response() | Recibir mensajes hasta e incluyendo un ResultMessage |
interrupt() | Enviar señal de interrupción (solo funciona en modo streaming) |
disconnect() | Desconectar de Claude |
Soporte de Context Manager
El cliente puede usarse como un context manager async para gestión automática de conexión:
Importante: Al iterar sobre mensajes, evita usar break
para salir temprano ya que esto puede causar problemas de limpieza de asyncio. En su lugar, deja que la iteración se complete naturalmente o usa flags para rastrear cuando hayas encontrado lo que necesitas.
Ejemplo - Conversación interactiva
Tipos
SdkMcpTool
Definición para una herramienta SDK MCP creada con el decorador @tool
.
Propiedad | Tipo | Descripción |
---|---|---|
name | str | Identificador único para la herramienta |
description | str | Descripción legible |
input_schema | type[T] | dict[str, Any] | Esquema para validación de entrada |
handler | Callable[[T], Awaitable[dict[str, Any]]] | Función async que maneja la ejecución de la herramienta |
ClaudeCodeOptions
Dataclass de configuración para consultas de Claude Code.
Propiedad | Tipo | Por defecto | Descripción |
---|---|---|---|
allowed_tools | list[str] | [] | Lista de nombres de herramientas permitidas |
max_thinking_tokens | int | 8000 | Tokens máximos para el proceso de pensamiento |
system_prompt | str | None | None | Reemplazar completamente el prompt del sistema por defecto |
append_system_prompt | str | None | None | Texto para agregar al prompt del sistema por defecto |
mcp_servers | dict[str, McpServerConfig] | str | Path | {} | Configuraciones de servidor MCP o ruta al archivo de configuración |
permission_mode | PermissionMode | None | None | Modo de permisos para uso de herramientas |
continue_conversation | bool | False | Continuar la conversación más reciente |
resume | str | None | None | ID de sesión para reanudar |
max_turns | int | None | None | Turnos máximos de conversación |
disallowed_tools | list[str] | [] | Lista de nombres de herramientas no permitidas |
model | str | None | None | Modelo de Claude a usar |
permission_prompt_tool_name | str | None | None | Nombre de herramienta MCP para prompts de permisos |
cwd | str | Path | None | None | Directorio de trabajo actual |
settings | str | None | None | Ruta al archivo de configuración |
add_dirs | list[str | Path] | [] | Directorios adicionales a los que Claude puede acceder |
extra_args | dict[str, str | None] | {} | Argumentos CLI adicionales para pasar directamente al CLI |
can_use_tool | CanUseTool | None | None | Función callback de permisos de herramientas |
hooks | dict[HookEvent, list[HookMatcher]] | None | None | Configuraciones de hooks para interceptar eventos |
PermissionMode
Modos de permisos para controlar la ejecución de herramientas.
McpSdkServerConfig
Configuración para servidores SDK MCP creados con create_sdk_mcp_server()
.
McpServerConfig
Tipo unión para configuraciones de servidor MCP.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
Tipos de Mensaje
Message
Tipo unión de todos los mensajes posibles.
UserMessage
Mensaje de entrada del usuario.
AssistantMessage
Mensaje de respuesta del asistente con bloques de contenido.
SystemMessage
Mensaje del sistema con metadatos.
ResultMessage
Mensaje de resultado final con información de costo y uso.
Tipos de Bloque de Contenido
ContentBlock
Tipo unión de todos los bloques de contenido.
TextBlock
Bloque de contenido de texto.
ThinkingBlock
Bloque de contenido de pensamiento (para modelos con capacidad de pensamiento).
ToolUseBlock
Bloque de solicitud de uso de herramienta.
ToolResultBlock
Bloque de resultado de ejecución de herramienta.
Tipos de Error
ClaudeSDKError
Clase de excepción base para todos los errores del SDK.
CLINotFoundError
Se lanza cuando el CLI de Claude Code no está instalado o no se encuentra.
CLIConnectionError
Se lanza cuando falla la conexión a Claude Code.
ProcessError
Se lanza cuando falla el proceso de Claude Code.
CLIJSONDecodeError
Se lanza cuando falla el análisis JSON.
Tipos de Hook
HookEvent
Tipos de eventos de hook soportados. Nota que debido a limitaciones de configuración, el SDK de Python no soporta hooks SessionStart, SessionEnd y Notification.
HookCallback
Definición de tipo para funciones callback de hook.
input_data
: Datos de entrada específicos del hook (ver documentación de hooks)tool_use_id
: Identificador opcional de uso de herramienta (para hooks relacionados con herramientas)context
: Contexto del hook con información adicional
decision
:"block"
para bloquear la acciónsystemMessage
: Mensaje del sistema para agregar a la transcripciónhookSpecificOutput
: Datos de salida específicos del hook
HookContext
Información de contexto pasada a los callbacks de hook.
HookMatcher
Configuración para hacer coincidir hooks con eventos o herramientas específicas.
Ejemplo de Uso de Hook
Tipos de Entrada/Salida de Herramientas
Documentación de esquemas de entrada/salida para todas las herramientas integradas de Claude Code. Aunque el SDK de Python no exporta estos como tipos, representan la estructura de entradas y salidas de herramientas en mensajes.Task
Nombre de herramienta:Task
Entrada:
Bash
Nombre de herramienta:Bash
Entrada:
Edit
Nombre de herramienta:Edit
Entrada:
MultiEdit
Nombre de herramienta:MultiEdit
Entrada:
Read
Nombre de herramienta:Read
Entrada:
Write
Nombre de herramienta:Write
Entrada:
Glob
Nombre de herramienta:Glob
Entrada:
Grep
Nombre de herramienta:Grep
Entrada:
NotebookEdit
Nombre de herramienta:NotebookEdit
Entrada:
WebFetch
Nombre de herramienta:WebFetch
Entrada:
WebSearch
Nombre de herramienta:WebSearch
Entrada:
TodoWrite
Nombre de herramienta:TodoWrite
Entrada:
BashOutput
Nombre de herramienta:BashOutput
Entrada:
KillBash
Nombre de herramienta:KillBash
Entrada:
ExitPlanMode
Nombre de herramienta:ExitPlanMode
Entrada:
ListMcpResources
Nombre de herramienta:ListMcpResources
Entrada:
ReadMcpResource
Nombre de herramienta:ReadMcpResource
Entrada:
Ejemplo de Uso
Operaciones básicas de archivos
Manejo de errores
Modo streaming con cliente
Usando herramientas personalizadas
Ver también
- Guía del SDK de Python - Tutorial y ejemplos
- Resumen del SDK - Conceptos generales del SDK
- Referencia del SDK de TypeScript - Documentación del SDK de TypeScript
- Referencia del CLI - Interfaz de línea de comandos
- Flujos de trabajo comunes - Guías paso a paso