Class: Llmemory::MCP::Tools::MemorySkills

Inherits:
MCP::Tool
  • Object
show all
Defined in:
lib/llmemory/mcp/tools/memory_skills.rb

Class Method Summary collapse

Class Method Details

.call(user_id:, query: nil, limit: nil, server_context: nil) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/llmemory/mcp/tools/memory_skills.rb', line 19

def call(user_id:, query: nil, limit: nil, server_context: nil)
  memory = Llmemory::LongTerm::Procedural::Memory.new(user_id: user_id)
  cap = (limit || 10).to_i
  skills = if query.to_s.strip.empty?
    memory.skills(limit: cap)
  else
    memory.search_candidates(query, top_k: cap).filter_map { |c| memory.get_skill(c[:id]) }
  end

  if skills.empty?
    return ::MCP::Tool::Response.new([{ type: "text", text: "No skills for user #{user_id}." }])
  end

  lines = skills.map do |s|
    "[#{s.id}] #{s.name} v#{s.version} (#{s.kind}) — success rate #{format('%.2f', s.success_rate)} (#{s.success_count}/#{s.success_count + s.failure_count})"
  end
  ::MCP::Tool::Response.new([{ type: "text", text: lines.join("\n") }])
rescue => e
  ::MCP::Tool::Response.new([{ type: "text", text: "Error listing skills: #{e.message}" }], error: true)
end