LabscoMCP early access ↗
adamkwhiteMCP SERVER · OFFICIAL PROJECT

Universal Memory MCP

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

by adamkwhite ↗Session & Transcript Recall✓ Official

LABSCO 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