Class: ActiveMcp::Tool::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/active_mcp/tool/base.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBase

Returns a new instance of Base.



38
39
# File 'lib/active_mcp/tool/base.rb', line 38

def initialize
end

Class Attribute Details

.description_valueObject (readonly)

Returns the value of attribute description_value.



7
8
9
# File 'lib/active_mcp/tool/base.rb', line 7

def description_value
  @description_value
end

.schemaObject (readonly)

Returns the value of attribute schema.



7
8
9
# File 'lib/active_mcp/tool/base.rb', line 7

def schema
  @schema
end

.tool_name_valueObject (readonly)

Returns the value of attribute tool_name_value.



7
8
9
# File 'lib/active_mcp/tool/base.rb', line 7

def tool_name_value
  @tool_name_value
end

Class Method Details

.argument(name, type, required: false, description: "") ⇒ Object



17
18
19
20
21
22
23
# File 'lib/active_mcp/tool/base.rb', line 17

def argument(name, type, required: false, description: "")
  @schema ||= default_schema

  @schema["properties"][name.to_s] = {"type" => type.to_s}
  @schema["properties"][name.to_s]["description"] = description if description
  @schema["required"] << name.to_s if required
end

.default_schemaObject



25
26
27
28
29
30
31
# File 'lib/active_mcp/tool/base.rb', line 25

def default_schema
  {
    "type" => "object",
    "properties" => {},
    "required" => []
  }
end

.description(value) ⇒ Object



13
14
15
# File 'lib/active_mcp/tool/base.rb', line 13

def description(value)
  @description_value = value
end

.tool_name(value) ⇒ Object



9
10
11
# File 'lib/active_mcp/tool/base.rb', line 9

def tool_name(value)
  @tool_name_value = value
end

.visible?(context: {}) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/active_mcp/tool/base.rb', line 33

def visible?(context: {})
  true
end

Instance Method Details

#call(context: {}, **args) ⇒ Object

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/active_mcp/tool/base.rb', line 49

def call(context: {}, **args)
  raise NotImplementedError, "#{self.class.name}#call must be implemented"
end

#validate(args) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/active_mcp/tool/base.rb', line 41

def validate(args)
  return true unless self.class.schema

  JSON::Validator.validate!(self.class.schema, args)
rescue JSON::Schema::ValidationError => e
  {error: e.message}
end