Class: StimulusPlumbers::MCP::Plugins::Base
- Inherits:
-
Object
- Object
- StimulusPlumbers::MCP::Plugins::Base
show all
- Defined in:
- lib/stimulus_plumbers/mcp/plugins/base.rb
Overview
Plugin contract: required members raise NotImplementedError; optional members have defaults.
Defined Under Namespace
Classes: NotFound
Class Method Summary
collapse
-
.dynamic_resource_templates ⇒ Object
-
.json_resource(uri, data) ⇒ Object
-
.loader ⇒ Object
-
.loader_key ⇒ Object
-
.not_found(message) ⇒ Object
-
.read(_uri, _store) ⇒ Object
-
.register_tools(_server, _store) ⇒ Object
-
.static_resources ⇒ Object
-
.text_resource(uri, mime_type, text) ⇒ Object
-
.text_tool(server, name:, description:, input_schema: nil, &block) ⇒ Object
Declaring **args makes the MCP gem inject :server_context, which tool blocks don't want — drop it.
Class Method Details
.dynamic_resource_templates ⇒ Object
26
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 26
def dynamic_resource_templates = []
|
.json_resource(uri, data) ⇒ Object
34
35
36
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 34
def json_resource(uri, data)
[{ uri: uri, mimeType: "application/json", text: JSON.generate(data) }]
end
|
.loader ⇒ Object
16
17
18
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 16
def loader
raise NotImplementedError, "#{name} must define .loader"
end
|
.loader_key ⇒ Object
12
13
14
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 12
def loader_key
raise NotImplementedError, "#{name} must define .loader_key"
end
|
.not_found(message) ⇒ Object
30
31
32
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 30
def not_found(message)
NotFound.new(message)
end
|
.read(_uri, _store) ⇒ Object
20
21
22
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 20
def read(_uri, _store)
raise NotImplementedError, "#{name} must define .read"
end
|
28
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 28
def register_tools(_server, _store); end
|
.static_resources ⇒ Object
24
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 24
def static_resources = []
|
.text_resource(uri, mime_type, text) ⇒ Object
38
39
40
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 38
def text_resource(uri, mime_type, text)
[{ uri: uri, mimeType: mime_type, text: text }]
end
|
.text_tool(server, name:, description:, input_schema: nil, &block) ⇒ Object
Declaring **args makes the MCP gem inject :server_context, which tool blocks don't want — drop it.
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/stimulus_plumbers/mcp/plugins/base.rb', line 43
def text_tool(server, name:, description:, input_schema: nil, &block)
server.define_tool(name: name, description: description, input_schema: input_schema) do |**args|
args.delete(:server_context)
result = block.call(**args)
if result.is_a?(NotFound)
::MCP::Tool::Response.new([{ type: "text", text: JSON.generate(error: result.message) }], error: true)
else
::MCP::Tool::Response.new([{ type: "text", text: result }])
end
end
end
|