Class: Mcp::Tools::BaseService

Inherits:
Object
  • Object
show all
Defined in:
app/services/mcp/tools/base_service.rb

Direct Known Subclasses

AggregatedService, CustomService, GraphqlService

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:) ⇒ BaseService

Returns a new instance of BaseService.



11
12
13
# File 'app/services/mcp/tools/base_service.rb', line 11

def initialize(name:)
  @name = name
end

Class Method Details

.tool_aliasesObject

override this method when renaming tools



7
8
9
# File 'app/services/mcp/tools/base_service.rb', line 7

def self.tool_aliases
  []
end

Instance Method Details

#available?Boolean

Tool availability check, returns true by default. Tools should override this method if they need to check for specific conditions.

Returns:

  • (Boolean)


47
48
49
# File 'app/services/mcp/tools/base_service.rb', line 47

def available?
  true
end

#descriptionObject

Raises:

  • (NoMethodError)


19
20
21
# File 'app/services/mcp/tools/base_service.rb', line 19

def description
  raise NoMethodError
end

#execute(request: nil, params: nil) ⇒ Object

rubocop: disable Lint/UnusedMethodArgument – request param to match Mcp::Tools::ApiTool



27
28
29
30
31
32
33
34
35
# File 'app/services/mcp/tools/base_service.rb', line 27

def execute(request: nil, params: nil) # rubocop: disable Lint/UnusedMethodArgument -- request param to match Mcp::Tools::ApiTool
  args = params[:arguments]
  validate_arguments!(args)
  perform(args)
rescue ArgumentError => e
  Response.error("Validation error: #{e.message}")
rescue StandardError => e
  Response.error("Tool execution failed: #{e.message}")
end

#input_schemaObject

Raises:

  • (NoMethodError)


23
24
25
# File 'app/services/mcp/tools/base_service.rb', line 23

def input_schema
  raise NoMethodError
end

#set_credObject

Raises:

  • (NoMethodError)


15
16
17
# File 'app/services/mcp/tools/base_service.rb', line 15

def set_cred(**)
  raise NoMethodError
end

#to_hObject



37
38
39
40
41
42
43
# File 'app/services/mcp/tools/base_service.rb', line 37

def to_h
  {
    name: name,
    description: description,
    inputSchema: input_schema
  }
end