claude-memory-fts

Long-term memory mcp server with sqlite fts5 full-text search, bm25 ranking, and access tracking. zero config via npx.com

claude-memory-fts

Long-term memory MCP server for Claude Code. Stores facts in a local SQLite database with FTS5 full-text search and BM25 ranking.

Features

  • Persistent memory — facts survive across sessions via SQLite
  • Full-text search — FTS5 with BM25 ranking for relevant results
  • LIKE fallback — partial matches when FTS5 finds nothing
  • Access tracking — tracks how often each memory is accessed
  • Upsert — automatically updates existing facts instead of duplicating
  • Categorized — organize memories by type (preference, decision, technical, project, workflow, personal, general)
  • Zero config — works out of the box, stores data in ~/.claude/memory.db

Install

# Add to Claude Code
claude mcp add memory -- npx claude-memory-fts

# Or run directly
npx claude-memory-fts

Configuration

Environment VariableDefaultDescription
MEMORY_DB_PATH~/.claude/memory.dbPath to the SQLite database file

Example with custom path:

claude mcp add memory -e MEMORY_DB_PATH=/path/to/my/memory.db -- npx claude-memory-fts

Tools

memory_save

Save a fact to long-term memory.

ParameterTypeRequiredDescription
factstringyesThe information to remember
categorystringnoOne of: preference, decision, personal, technical, project, workflow, general

memory_search

Search memories by keyword using FTS5 full-text search with BM25 ranking.

ParameterTypeRequiredDescription
keywordstringyesSearch keyword or phrase
limitnumbernoMax results (default: 10)

memory_list

List all saved memories grouped by category.

ParameterTypeRequiredDescription
categorystringnoFilter by category
limitnumbernoMax results (default: 50)

memory_delete

Delete a memory by ID.

ParameterTypeRequiredDescription
idnumberyesMemory ID

How It Works

  • Memories are stored in a SQLite database with WAL mode for fast writes
  • FTS5 virtual table mirrors the main table via triggers for real-time full-text indexing
  • Search uses BM25 ranking for relevance, with a LIKE fallback for partial matches
  • Each search/list call tracks access count and last accessed timestamp
  • Duplicate facts are upserted (category and timestamp updated, no new row created)

Development

git clone https://github.com/kurovu146/claude-memory-mcp.git
cd claude-memory-mcp
npm install
npm run build
node dist/index.js

License

MIT

Related Servers