Class: KairosMcp::SkillToolAdapter

Inherits:
Tools::BaseTool show all
Defined in:
lib/kairos_mcp/skill_tool_adapter.rb

Overview

Adapter that wraps a Skill with tool_config as an MCP Tool This allows skills defined in kairos.rb to be exposed as MCP tools

Instance Method Summary collapse

Methods inherited from Tools::BaseTool

#category, #examples, #invoke_tool, #related_tools, #to_full_schema, #to_schema, #usecase_tags

Constructor Details

#initialize(skill, safety = nil, registry: nil) ⇒ SkillToolAdapter

Returns a new instance of SkillToolAdapter.



8
9
10
11
12
# File 'lib/kairos_mcp/skill_tool_adapter.rb', line 8

def initialize(skill, safety = nil, registry: nil)
  super(safety, registry: registry)
  @skill = skill
  @tool_config = skill.tool_config
end

Instance Method Details

#call(arguments) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/kairos_mcp/skill_tool_adapter.rb', line 26

def call(arguments)
  # Record execution to action log
  record_tool_execution(arguments)

  # Execute the tool's execute block
  result = @tool_config.executor&.call(arguments)

  # Format result based on type
  format_result(result)
rescue StandardError => e
  text_content("Error executing skill tool '#{name}': #{e.message}")
end

#descriptionObject



18
19
20
# File 'lib/kairos_mcp/skill_tool_adapter.rb', line 18

def description
  @tool_config.tool_description || @skill.title || "Skill-based tool: #{@skill.id}"
end

#input_schemaObject



22
23
24
# File 'lib/kairos_mcp/skill_tool_adapter.rb', line 22

def input_schema
  @tool_config.input_schema
end

#nameObject



14
15
16
# File 'lib/kairos_mcp/skill_tool_adapter.rb', line 14

def name
  @tool_config.tool_name || "skill_#{@skill.id}"
end