Labsco
MCP SERVER

Claude Conversation Memory System

by adamkwhite

Searchable conversation memory across Claude, ChatGPT and Cursor — SQLite FTS5 full-text search over everything you have stored.

Session & Transcript Recall
Summary
Unusually candid about its own numbers.

The performance section is the tell. The author found the benchmark script was measuring coroutine construction rather than search time, replaced every previously published figure with a measured one, and left a note saying the old numbers were never actually measured. The current claim is modest and reproducible: FTS5 search around 10 to 13ms median on a 159-conversation dataset, roughly ten times faster than the linear JSON scan it replaces. Treat those as order-of-magnitude, as the README asks.

What it is

An MCP server that stores conversations and makes them searchable with SQLite FTS5 full-text search and relevance ranking. Conversations are filed on disk by date and topic under `~/claude-memory/`, with topics extracted automatically, and importers cover Claude, ChatGPT, Cursor and a generic format.

What you get
  • Full-text search with relevance ranking, where query text is treated as literal Unicode terms so punctuation and FTS5 operators do not change what you asked — `search_conversations`, returning IDs for exact retrieval
  • Retrieval of a stored conversation by ID, read from the authoritative JSON store and truncated to a `max_chars` limit so a long thread cannot flood the model's context — `get_conversation`
  • Storage with automatic topic extraction and indexing — `add_conversation`
  • Four narrower lookups: `search_by_topic`, `search_by_tag` for metadata like `starred` or `archived`, `search_by_session_id` for reconstructing a multi-turn session spread across several records (returned oldest first), and `search_by_conversation_type` for `chat`, `code` or `analysis`
  • In-place edits with an audit trail — `update_conversation` rewrites only the fields you pass and, by default, prepends a self-documenting audit line chained across repeated updates; tag operations distinguish replacing the whole list from adding and removing individual tags
  • `generate_weekly_summary` for insights and patterns over recent conversations, and `get_search_stats` for index size, topic counts and engine status
Requirements

No account and no key — everything is local. Python 3.10 or newer. Install it as an application with `uv tool install universal-memory-mcp` or `pipx install universal-memory-mcp`, not a bare `pip install`, which fails on PEP 668 systems with `error: externally-managed-environment`; inside an activated virtualenv `pip install` is fine. Then `claude mcp add --transport stdio universal-memory-mcp -- universal-memory-mcp`, or name the console script directly in your config. Conversations live in `~/claude-memory/` whatever you call the server. `CLAUDE_MEMORY_PATH` moves the store, `CLAUDE_MEMORY_DISABLE_SQLITE` falls back to JSON linear search on platforms without FTS5, and `CLAUDE_MCP_LOG_FORMAT`, `CLAUDE_MCP_LOG_LEVEL`, `CLAUDE_MCP_CONSOLE_OUTPUT` and `CLAUDE_MCP_PLATFORM_PROFILE` tune logging and defaults. Settings can also live in a config file, where an unknown key raises an error rather than being ignored. MIT licensed.

Setup effort

One command — uv tool install universal-memory-mcp