Module: Archsight::MCP

Defined in:
lib/archsight/mcp/base.rb

Overview

Shared database and helper methods for MCP tools

Defined Under Namespace

Classes: AnalyzeResourceTool, ExecuteAnalysisTool, QueryTool, ResourceDocTool

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dbObject

Returns the value of attribute db.



10
11
12
# File 'lib/archsight/mcp/base.rb', line 10

def db
  @db
end

Class Method Details

.annotations_summary(resource, omit_kind: false) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/archsight/mcp/base.rb', line 30

def annotations_summary(resource, omit_kind: false)
  result = {
    name: resource.name,
    metadata: {
      annotations: resource.annotations
    }
  }
  result[:kind] = resource.class.to_s.split("::").last unless omit_kind
  result
end

.brief_summary(resource, omit_kind: false) ⇒ Object



24
25
26
27
28
# File 'lib/archsight/mcp/base.rb', line 24

def brief_summary(resource, omit_kind: false)
  result = { name: resource.name }
  result[:kind] = resource.class.to_s.split("::").last unless omit_kind
  result
end

.complete_summary(resource, omit_kind: false) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/archsight/mcp/base.rb', line 12

def complete_summary(resource, omit_kind: false)
  result = {
    name: resource.name,
    metadata: {
      annotations: resource.annotations
    },
    spec: resource.spec
  }
  result[:kind] = resource.class.to_s.split("::").last unless omit_kind
  result
end

.extract_description(resource) ⇒ Object



41
42
43
44
45
46
# File 'lib/archsight/mcp/base.rb', line 41

def extract_description(resource)
  description = resource.annotations["architecture/description"]
  return "No description" if description.nil?

  description.split("\n").first
end

.extract_relations(instance) ⇒ Object



48
49
50
51
52
53
54
55
56
57
# File 'lib/archsight/mcp/base.rb', line 48

def extract_relations(instance)
  relations = {}

  instance.class.relations.each do |verb, kind_name, _|
    relations[verb] ||= {}
    relations[verb][kind_name] = instance.relations(verb, kind_name).map(&:name)
  end

  relations
end