Class: MCP::Server::Tool

Inherits:
Object
  • Object
show all
Defined in:
lib/mcp/server/tool.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, description = nil, parameters = {}, &handler) ⇒ Tool

Returns a new instance of Tool.



6
7
8
9
10
11
12
# File 'lib/mcp/server/tool.rb', line 6

def initialize(name, description = nil, parameters = {}, &handler)
  @name = name
  @description = description
  @parameters = parameters
  @required_parameters = []
  @handler = handler
end

Instance Attribute Details

#description(value) ⇒ Object

Returns the value of attribute description.



4
5
6
# File 'lib/mcp/server/tool.rb', line 4

def description
  @description
end

#nameObject

Returns the value of attribute name.



4
5
6
# File 'lib/mcp/server/tool.rb', line 4

def name
  @name
end

#parametersObject

Returns the value of attribute parameters.



4
5
6
# File 'lib/mcp/server/tool.rb', line 4

def parameters
  @parameters
end

Instance Method Details

#call(input) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/mcp/server/tool.rb', line 14

def call(input)
  # TODO: validate and handle errors
  output = @handler.call(input)
  
  {
    content: [
      {
        type: "text",
        text: output
      }
    ]
  }
end

#handler(&block) ⇒ Object



39
40
41
# File 'lib/mcp/server/tool.rb', line 39

def handler(&block)
  @handler = block
end

#parameter(name, type:, description: nil, required: false) ⇒ Object



28
29
30
31
32
33
# File 'lib/mcp/server/tool.rb', line 28

def parameter(name, type:, description: nil, required: false)
  @parameters[name.to_sym] = { type: type }.tap do |param|
    param[:description] = description if description
  end
  @required_parameters << name.to_sym if required
end

#showObject



43
44
45
46
47
48
49
# File 'lib/mcp/server/tool.rb', line 43

def show
  {
    name: @name,
    description: @description,
    inputSchema: input_schema
  }
end