Class: StimulusPlumbers::MCP::Plugins::ComponentDocs

Inherits:
Base
  • Object
show all
Defined in:
lib/stimulus_plumbers/mcp/plugins/component_docs.rb

Class Method Summary collapse

Methods inherited from Base

json_resource, not_found, static_resources, text_resource, text_tool

Class Method Details

.dynamic_resource_templatesObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/stimulus_plumbers/mcp/plugins/component_docs.rb', line 12

def dynamic_resource_templates
  [
    ::MCP::ResourceTemplate.new(
      uri_template: "component://{name}/docs",
      name:         "component-docs",
      description:  "Full markdown documentation and ERB examples for a component",
      mime_type:    "text/markdown"
    ),
    ::MCP::ResourceTemplate.new(
      uri_template: "component://{name}/helper",
      name:         "component-helper",
      description:  "Full sp_ helper option surface: keyword options with defaults and slot methods",
      mime_type:    "application/json"
    )
  ].freeze
end

.loaderObject



10
# File 'lib/stimulus_plumbers/mcp/plugins/component_docs.rb', line 10

def loader = ComponentDocsLoader

.loader_keyObject



8
# File 'lib/stimulus_plumbers/mcp/plugins/component_docs.rb', line 8

def loader_key = :component_docs

.read(uri, store) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/stimulus_plumbers/mcp/plugins/component_docs.rb', line 29

def read(uri, store)
  docs = store[:component_docs]

  case uri
  when %r{\Acomponent://([^/]+)/docs\z}
    doc = docs[Regexp.last_match(1).to_sym]
    doc ? text_resource(uri, "text/markdown", doc[:content]) : missing(uri, Regexp.last_match(1))
  when %r{\Acomponent://([^/]+)/helper\z}
    doc = docs[Regexp.last_match(1).to_sym]
    doc ? json_resource(uri, doc[:signature]) : missing(uri, Regexp.last_match(1))
  end
end

.register_tools(server, store) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/stimulus_plumbers/mcp/plugins/component_docs.rb', line 42

def register_tools(server, store)
  docs = store[:component_docs]

  register_list_component_docs(server, docs)
  register_get_component_examples(server, docs)
  register_get_component_helper(server, docs)
end