Module: ClaudeAgentSDK
- Defined in:
- lib/claude_agent_sdk.rb,
lib/claude_agent_sdk/query.rb,
lib/claude_agent_sdk/types.rb,
lib/claude_agent_sdk/errors.rb,
lib/claude_agent_sdk/version.rb,
lib/claude_agent_sdk/transport.rb,
lib/claude_agent_sdk/message_parser.rb,
lib/claude_agent_sdk/sdk_mcp_server.rb,
lib/claude_agent_sdk/subprocess_cli_transport.rb
Overview
Claude Agent SDK for Ruby
Defined Under Namespace
Classes: AgentDefinition, AssistantMessage, CLIConnectionError, CLIJSONDecodeError, CLINotFoundError, ClaudeAgentOptions, ClaudeSDKError, Client, HookMatcher, McpHttpServerConfig, McpSSEServerConfig, McpSdkServerConfig, McpStdioServerConfig, MessageParseError, MessageParser, PermissionResultAllow, PermissionResultDeny, PermissionRuleValue, PermissionUpdate, ProcessError, Query, ResultMessage, SdkMcpServer, SdkMcpTool, StreamEvent, SubprocessCLITransport, SystemMessage, TextBlock, ThinkingBlock, ToolPermissionContext, ToolResultBlock, ToolUseBlock, Transport, UserMessage
Constant Summary collapse
- VERSION =
'0.1.0'
Class Method Summary collapse
-
.create_sdk_mcp_server(name:, version: '1.0.0', tools: []) ⇒ Hash
Create an SDK MCP server.
-
.create_tool(name, description, input_schema, &handler) ⇒ SdkMcpTool
Helper function to create a tool definition.
-
.query(prompt:, options: nil) {|Message| ... } ⇒ Enumerator
Query Claude Code for one-shot or unidirectional streaming interactions.
Class Method Details
.create_sdk_mcp_server(name:, version: '1.0.0', tools: []) ⇒ Hash
Create an SDK MCP server
155 156 157 158 159 160 161 162 163 164 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 155 def self.create_sdk_mcp_server(name:, version: '1.0.0', tools: []) server = SdkMcpServer.new(name: name, version: version, tools: tools) # Return configuration for ClaudeAgentOptions { type: 'sdk', name: name, instance: server } end |
.create_tool(name, description, input_schema, &handler) ⇒ SdkMcpTool
Helper function to create a tool definition
122 123 124 125 126 127 128 129 130 131 |
# File 'lib/claude_agent_sdk/sdk_mcp_server.rb', line 122 def self.create_tool(name, description, input_schema, &handler) raise ArgumentError, 'Block required for tool handler' unless handler SdkMcpTool.new( name: name, description: description, input_schema: input_schema, handler: handler ) end |
.query(prompt:, options: nil) {|Message| ... } ⇒ Enumerator
Query Claude Code for one-shot or unidirectional streaming interactions
This function is ideal for simple, stateless queries where you don’t need bidirectional communication or conversation management.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/claude_agent_sdk.rb', line 43 def self.query(prompt:, options: nil, &block) return enum_for(:query, prompt: prompt, options: ) unless block ||= ClaudeAgentOptions.new ENV['CLAUDE_CODE_ENTRYPOINT'] = 'sdk-rb' Async do transport = SubprocessCLITransport.new(prompt, ) begin transport.connect transport. do |data| = MessageParser.parse(data) block.call() end ensure transport.close end end.wait end |