Robust Long‑Term Memory

by rotoslider

Not rated yet

About

A persistent, human‑like memory system for AI companions

Explore

$env:AI_COMPANION_DATA_DIR="D:\a.i. apps\long_term_memory_mcp\data"
export AI_COMPANION_DATA_DIR="/home/username/ai_companion_data"

- Every 24 hours
- Or after 100 new memories (configurable)
- Stored in memory_backups/ with timestamped folders
- Only the last 10 backups are kept

- SQLite DB copy
- ChromaDB copy
- JSON export of all memories (portable and future‑proof)

“You are an AI companion with long‑term memory. Store facts naturally (‘Got it, I’ll remember that.’). Recall them when asked in natural language. Never expose internal tool usage to the user. Use memory tools to remember, recall, and update information invisibly.”

YourRobustMemoryMCP exposes tools that allow your AI companion to interact with its long-term memory. These tools are designed to be called internally by the AI model based on its system prompt, making the memory system feel seamless and invisible to the user.

Here's a breakdown of each tool's purpose and parameters:

- Purpose:Stores a new memory (fact, conversation snippet, preference, event) into the system. It's indexed both semantically (for natural language search) and structurally (for filtered queries).
- Parameters:

- title(string, required): A concise title for the memory.
- content(string, required): The detailed content of the memory.
- tags(string, optional, default: ""): Comma-separated keywords for categorization (e.g., "personal, preference, hobby").
- importance(integer, optional, default: 5): A numerical value (1-10) indicating how important the memory is.
- memory_type(string, optional, default: "conversation"): Categorizes the memory (e.g., "conversation", "fact", "preference", "event").

- Purpose:The primary tool for recalling memories. It performs a semantic search based on a natural language query, finding memories that are conceptually similar.
- Parameters:

- query(string, required): The natural language query to search for.
- search_type(string, optional, default: "semantic"): Currently only "semantic" is fully implemented for this tool.
- limit(integer, optional, default: 10): The maximum number of relevant memories to return.

- Purpose:Retrieves memories that match a specificmemory_type(e.g., all "facts" or all "preferences").
- Parameters:

- memory_type(string, required): The type of memory to search for (e.g., "conversation", "fact", "preference").
- limit(integer, optional, default: 20): The maximum number of memories to return.

- Purpose:Finds memories associated with one or more specific tags.
- Parameters:

- tags(string, required): Comma-separated tags to search for (e.g., "hobby, music").
- limit(integer, optional, default: 20): The maximum number of memories to return.

- Purpose:Fetches the most recently stored memories, useful for recalling recent context or conversation flow.
- Parameters:

- limit(integer, optional, default: 20): The maximum number of recent memories to retrieve.

- Purpose:Modifies an existing memory identified by its uniquememory_id. This allows for correcting or enriching stored information.
- Parameters:

- memory_id(string, required): The unique identifier of the memory to update.
- title(string, optional): New title for the memory.
- content(string, optional): New content for the memory.
- tags(string, optional): New comma-separated tags for the memory.
- importance(integer, optional): New importance level for the memory.

- Purpose:Permanently removes a memory from the system using its uniquememory_id.
- Parameters:

- memory_id(string, required): The unique identifier of the memory to delete.

- Purpose:Retrieves basic statistics about the memory system, such as the total number of memories stored.
- Parameters:None.
- Example Use (internal):get_memory_stats()

- Purpose:Manually triggers a full backup of the memory system (SQLite DB, ChromaDB, and JSON export). This is in addition to the automatic backups.
- Parameters:None.
- Example Use (internal):create_backup()

- Purpose:Searches for memories that fall within a specified date range.
- Parameters:

- date_from(string, required): The start date (ISO format, e.g., "2025-01-01" or "2025-01-01T10:30:00Z").
- date_to(string, optional, default: current UTC time): The end date (ISO format).
- limit(integer, optional, default: 50): The maximum number of memories to return.

Your AI companion chooses memory tools automatically based on the conversation. The tools are never shown to the user — all results are expressed naturally in character — but it’s useful to know how the model decides which one to use.

- remember→ Used when the user shares a new fact, preference, or event.
Example:“My birthday is July 4th.” → AI silently stores this.
- search_memories→ Used for natural free‑form recall.
Example:“When’s my birthday?” → AI looks it up and replies.
- search_by_type→ Used for category requests.
Example:“Show me all my preferences.”
- search_by_tags→ Used when tags are mentioned.
Example:“Find everything tagged camping and truck.”
- get_recent_memories→ Used for timeframe shorthand (“today,” “last night,” “yesterday”).
Example:“What did we talk about yesterday?”
- update_memory→ Used when correcting or modifying information.
Example:“Update my favorite color to blue.”
- delete_memory→ Used when the user wants the system to “forget” something.
Example:“Forget my old phone number.”
- search_by_date_range→ Used when a specific date window is mentioned.
Example:“What did we discuss between Sept 10–15?”
- get_memory_stats→ Used when asked about memory system size/status.
Example:“How many memories do you have?”
- create_backup→ Used when explicitly told to back up.
Example:“Make a backup now.”

- Thesystem promptteaches the AI when each tool is appropriate.
- If the user never phrases things like categories, tags, or “forget this,” onlyrememberandsearch_memorieswill appear in logs.
- To guide the AI toward other tools, phrase requests with keywords like:

- “Update…” →update_memory
- “Delete/forget…” →delete_memory
- “Preferences/facts/events…” →search_by_type
- “Tagged with…” →search_by_tags
- “On Sept 28th…” →search_by_date_range

“Show me all my preferences so far.”
→ Usessearch_by_type(memory_type="preference")

“Forget my old address.”
→ Usesdelete_memory(memory_id=…)

“What did we talk about last night?”
→ Usesget_recent_memories(limit=20)or a date range

“How many memories do you have now?”
→ Usesget_memory_stats()

“Back everything up.”
→ Usescreate_backup()

- Distance→similarity fix: relevance = 1.0 − distance
- Adaptive threshold: follows top match (clamped) to reduce noise when strong matches exist
- Top‑1 fallback: if nothing passes threshold, return the strongest candidate (optional guard at 0.08)

- Lazy Decay:

- On access, compute decay based on time since last_accessed (fallback: timestamp)
- Exponential half‑life per memory_type (conversation, fact, preference, task, ephemeral)
- Never decays below type floors; protected tags (core, identity, pinned) skip decay
- Writes are rate‑limited and only persisted for meaningful deltas (≥ 0.5)

- Each retrieval accumulates +0.1 in metadata
- When accumulation reaches +0.5, write back a +0.5 importance bump (rounded to halves)
- Capped at importance 10

- Clear logs for decay checks, skip reasons (protected/floor/step/rate‑limit), and writes
- Logs for reinforcement accumulation and write‑backs
- Candidate similarities and adaptive threshold shown for semantic queries

- Found a bug? Open an issue.
- Want to add features (custom backup schedule, encryption, etc.)? Let’s collaborate.

🔥 With this setup, your AI can build a persistent, evolving memory that feels natural across conversations, models, and even years.

Chia Health MCP Server — Patient workflow integration for a licensed US telehealth platform. Browse GLP-1 medications (semaglutide, tirzepatide), peptide therapies (sermorelin, NAD+, glutathione), and longevity treatments. Check eligibility, complete intake, sign consents, and manage treatment plans. 30 tools, HIPAA-compliant. All prescriptions evaluated by licensed US healthcare providers and delivered from FDA-regulated pharmacies across 50 states + DC.

Broker + MCP server for last-bidder-wins games on Solana — agents register, auto-fund a Privy wallet, and bid via streamable HTTP

AI-powered no-code app builder with 17 MCP tools — create projects, generate pages from natural language, AI text/image generation (GPT, Claude, Gemini, 14+ models), page CRUD, workflow execution, publish & version control. SSE transport, API key auth.

An mcp server for your food ordering needs.

Agent-to-Agent handoff certification for multi-agent systems — validates context preservation, verifies agent capabilities before handoff, logs transfer chains, and ensures no data loss in agent orchestration.

Unified MCP & skill management gateway with progressive disclosure. Manages multiple MCP servers as Agent Apps, loading tool schemas on demand for 99% context token savings. Shared across Claude Code, Codex, OpenCode and more.

A collection of Model Context Protocol (MCP) servers for various tasks and integrations, supporting both Python and Node.js environments.

Open-souSecurely feeds real security refreshed rules into Cursor, Claude Code, and Windsurf — zero config, no API key.

Health intelligence MCP — access biomarkers, biological age, and personalized longevity action plans from your Aniva profile.

Real-time stock heatmaps and investment tools delivered as interactive React components.

A persistent, human‑like memory system for AI companions inLM Studio, powered by a hybrid of SQLite (structured storage) and ChromaDB (semantic search). It’s designed for decades‑long use, seamless recall across sessions, and automatic backups — making your AI companion feel like a continuous, living persona. Now with biological behavior: time‑based lazy decay and reinforcement by use.

- SQLitefor structured metadata and fast queries
- ChromaDBfor semantic similarity and natural recall
- JSON backupsfor portability

Cross‑chat continuity: memories persist beyond a single chat

Cross‑model continuity: swap models freely, the memory stays intact

Cross‑machine portability: move the database to another system and continue seamlessly

Automatic backups: daily backups and after every 100 memories, pruned to keep the last 10

Invisible memory integration: tools are hidden from the user; conversations feel natural

- Lazy Decay: importance decreases only when a memory is accessed after idle time
- Reinforcement: frequent recall strengthens memory importance
- Adaptive Semantic Threshold: balances precision/recall with a safe top‑1 fallback
- Clone the repo:

git clone https://github.com/Rotoslider/long-term-memory-mcp.git cd long-term-memory-mcp
chromadb sentence-transformers fastmcp (sqlite3 is built into Python; do not install separately)

3. (Optional) For faster HuggingFace model fetching:

pip install "huggingface_hub[hf_xet]"

Edit your LM Studio mcp.json to include the correct path:

{ "mcpServers": { "long_term_memory": { "command": "C:\\Python313\\python.exe", "args": [ "D:\\a.i. apps\\long_term_memory_mcp\\LongTermMemoryMCP.py" ], "env": {} } } }

- Open Server (MCP) Settings
- Load the MCP Tool: "long_term_memory"

- Cross‑Chats→ Start a new chat — memories are still there.
- Cross‑Models→ Switch models — the same memory remains available.
- Cross‑Machines→ Copy the database folder (memory_db/ and memory_backups/) and your system prompt, point to the path, and everything carries over.

💡 Think of it as your AI’s diary: chats are conversations, the database is the journal.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.