Skip to main content
Glama

cleanup_memories

Remove old or low-relevance short-term memories to maintain system performance by deleting entries older than one year or with minimal relevance while preserving essential data.

Instructions

Manually trigger cleanup of old or low-relevance short-term memories. This removes memories older than 1 year or with very low relevance scores, keeping at least 512 memories.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
conversation_idYesConversation ID for storage

Implementation Reference

  • MCP tool 'cleanup_memories' handler: triggers ShortTermMemoryManager.cleanup() and persists changes via storage.
    { name: 'cleanup_memories', description: 'Manually trigger cleanup of old or low-relevance short-term memories. This removes memories older than 1 year or with very low relevance scores, keeping at least 512 memories.', inputSchema: z.object({ conversation_id: z.string().describe('Conversation ID for storage') }), handler: async (args) => { try { const removedCount = memoryManager.cleanup(); await storageManager.saveShortTermMemories(memoryManager.getMemories()); return { success: true, removedCount, remainingCount: memoryManager.getMemories().length, message: `Cleanup complete: removed ${removedCount} memor${removedCount === 1 ? 'y' : 'ies'}` }; } catch (error) { return { success: false, error: error.message }; } } },
  • Core cleanup logic in ShortTermMemoryManager: filters out memories older than 1 year or below relevance threshold, ensures minimum 512 retained by score.
    cleanup(currentTimeStamp = Date.now()) { const initialCount = this.memories.length; const oneYearAgo = currentTimeStamp - MEMORY_TTL_MS; const passingMemories = []; const failingMemories = []; for (const mem of this.memories) { const relevance = this.calculateRelevance(mem, [], currentTimeStamp, {}); mem._relevance = relevance; if (mem.time_stamp.getTime() < oneYearAgo) { failingMemories.push(mem); } else if (relevance >= CLEANUP_MIN_SCORE_THRESHOLD) { passingMemories.push(mem); } else { failingMemories.push(mem); } } if (passingMemories.length >= MIN_RETAINED_MEMORIES) { this.memories = passingMemories; } else { const neededFromFailing = MIN_RETAINED_MEMORIES - passingMemories.length; failingMemories.sort((a, b) => b._relevance - a._relevance); const supplementaryMemories = failingMemories.slice(0, neededFromFailing); this.memories = [...passingMemories, ...supplementaryMemories]; } // 清理临时属性 for (const mem of this.memories) { delete mem._relevance; } this.lastCleanupTime = currentTimeStamp; const removed = initialCount - this.memories.length; if (removed > 0) { console.log(`[Memory] Cleanup: removed ${removed} entries, ${this.memories.length} remaining`); } return removed; }
  • Input schema for cleanup_memories tool: requires conversation_id.
    inputSchema: z.object({ conversation_id: z.string().describe('Conversation ID for storage') }),
  • src/index.js:152-154 (registration)
    Registers all short-term tools including cleanup_memories to the toolRegistry.
    // 注册所有短期记忆工具 const shortTermTools = createShortTermTools(defaultShortTermManager, defaultStorageManager); shortTermTools.forEach(tool => registerTool(tool, 'short-term'));

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/win10ogod/memory-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server