Class: ActiveMcp::Tool::Base
- Inherits:
-
Object
- Object
- ActiveMcp::Tool::Base
- Defined in:
- lib/active_mcp/tool/base.rb
Class Attribute Summary collapse
-
.description_value ⇒ Object
readonly
Returns the value of attribute description_value.
-
.tool_name_value ⇒ Object
readonly
Returns the value of attribute tool_name_value.
Class Method Summary collapse
- .argument(name, type, required: false, description: "", visible: ->(_context) { true }) ⇒ Object
- .default_schema ⇒ Object
- .description(value) ⇒ Object
- .render_schema(context) ⇒ Object
- .tool_name(value) ⇒ Object
- .visible?(context: {}) ⇒ Boolean
Instance Method Summary collapse
- #call(context: {}, **args) ⇒ Object
-
#initialize ⇒ Base
constructor
A new instance of Base.
- #validate(args, context) ⇒ Object
Constructor Details
#initialize ⇒ Base
Returns a new instance of Base.
52 53 |
# File 'lib/active_mcp/tool/base.rb', line 52 def initialize end |
Class Attribute Details
.description_value ⇒ Object (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 |
.tool_name_value ⇒ Object (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: "", visible: ->(_context) { true }) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/active_mcp/tool/base.rb', line 17 def argument(name, type, required: false, description: "", visible: ->(_context) { true }) @schema ||= default_schema @schema["properties"][name.to_s] = {"type" => type.to_s, "visible" => visible} @schema["properties"][name.to_s]["description"] = description if description @schema["required"] << name.to_s if required end |
.default_schema ⇒ Object
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 |
.render_schema(context) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/active_mcp/tool/base.rb', line 37 def render_schema(context) return default_schema unless @schema { "type" => "object", "properties" => @schema["properties"].filter do |_k, v| v["visible"].call(context) end.map { |k, v| [k, v.except("visible")] }.to_h, "required" => @schema["required"].filter do |item| @schema["properties"][item]["visible"].call(context) end } 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
33 34 35 |
# File 'lib/active_mcp/tool/base.rb', line 33 def visible?(context: {}) true end |
Instance Method Details
#call(context: {}, **args) ⇒ Object
63 64 65 |
# File 'lib/active_mcp/tool/base.rb', line 63 def call(context: {}, **args) raise NotImplementedError, "#{self.class.name}#call must be implemented" end |
#validate(args, context) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/active_mcp/tool/base.rb', line 55 def validate(args, context) return true unless self.class.render_schema(context) JSON::Validator.validate!(self.class.render_schema(context), args) rescue JSON::Schema::ValidationError => e {error: e.} end |