17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/llmemory/mcp/tools/memory_stats.rb', line 17
def call(user_id:, server_context: nil)
stats = {
user_id: user_id,
short_term: {},
long_term: {}
}
store = build_short_term_store
sessions = store.list_sessions(user_id: user_id)
total_messages = 0
sessions.each do |session_id|
state = store.load(user_id, session_id)
next unless state.is_a?(Hash)
messages = state[:messages] || state["messages"] || []
total_messages += messages.size
end
stats[:short_term] = {
sessions: sessions.size,
total_messages: total_messages
}
storage = build_long_term_storage
begin
item_count = storage.count_items(user_id: user_id)
categories = storage.list_categories(user_id)
resources = storage.list_resources(user_id: user_id)
stats[:long_term] = {
facts: item_count,
categories: categories.size,
category_names: categories,
resources: resources.size
}
rescue => e
stats[:long_term] = { error: e.message }
end
::MCP::Tool::Response.new([{
type: "text",
text: format_stats(stats)
}])
rescue => e
::MCP::Tool::Response.new([{
type: "text",
text: "Error getting stats: #{e.message}"
}], error: true)
end
|