mcpField
M
memory-fts

memory-fts

Local
github.com/kurovu146Memory & Knowledge0Updated 29w ago

About memory-fts

memory-fts is a local long-term memory MCP server for Claude Code. It combines keyword and semantic search with ranked context injection, storing data in SQLite without sending embeddings to an API.

Key features

  1. 01Hybrid FTS5 and semantic search
  2. 02BM25 ranking with RRF merging
  3. 03Automatic context injection
  4. 04Categorized memory with importance ranking
  5. 05SQLite storage and access tracking
  6. 06Memory save, search, update, list, and delete tools

Use cases

  1. 01Recall saved project facts across Claude Code sessions
  2. 02Find memories by phrase or meaning
  3. 03Inject ranked facts into prompts automatically

MCP support

Exposes memory tools and the `memory://context` resource to MCP clients. A Claude Code hook can inject ranked memories into prompts.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"kurovu146-memory-fts": {
"command": "npx",
"args": [
"-y",
"claude-memory-fts"
],
"env": {
"MEMORY_DB_PATH": "<MEMORY_DB_PATH>"
}
}
}
}
Run commandnpx -y claude-memory-fts
Environment variables to set
MEMORY_DB_PATHCustom path to the SQLite database file (default: ~/.claude/memory.db)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmclaude-memory-fts1.0.1

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

claude-memory-fts

Long-term memory MCP server for Claude Code. Stores facts in a local SQLite database with hybrid search (FTS5 + semantic vector similarity) and automatic context injection.

Features

  • Hybrid search — FTS5 keyword search + semantic vector similarity, merged via Reciprocal Rank Fusion (RRF)
  • Semantic understanding — find memories by meaning, not just keywords (powered by all-MiniLM-L6-v2 embeddings)
  • Auto context injection — top 30 most important memories injected into every prompt via hook
  • Importance ranking — facts ranked by access frequency, recency decay, and category weight
  • Access tracking — tracks how often each memory is accessed
  • Upsert — automatically updates existing facts instead of duplicating
  • Categorized — organize by type: preference, decision, technical, project, workflow, personal, general
  • MCP Resources — exposes memory://context resource for session context
  • 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

# Auto-configure context injection hook (recommended)
npx claude-memory-fts --setup-hook

The --setup-hook command automatically:

  1. Creates ~/.claude/scripts/memory-context.sh
  2. Adds a UserPromptSubmit hook to ~/.claude/settings.json
  3. Top 30 memories are injected into every prompt automatically

CLI Commands

CommandDescription
npx claude-memory-ftsStart MCP server (used by Claude Code)
npx claude-memory-fts --contextOutput top 30 facts (used by hook script)
npx claude-memory-fts --setup-hookAuto-configure context injection hook

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

Hybrid search: runs FTS5 and semantic search in parallel, merges results with RRF. Falls back to LIKE for partial matches.

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

Update a memory's content or category by ID.

ParameterTypeRequiredDescription
idnumberyesMemory ID
factstringnoNew content (omit to keep current)
categorystringnoNew category (omit to keep current)
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

Resources

memory://context

MCP resource exposing top 30 facts ranked by importance score:

  • Access frequency — frequently accessed facts score higher (capped at 20 points)
  • Recency — recently updated facts score higher (10 points, decays over 90 days)
  • Category weight — preference/decision (3), workflow/technical (2), project/personal (1), general (0)

How It Works

Search Pipeline
  1. FTS5 + BM25 and semantic vector similarity run in parallel
  2. Results are merged and deduplicated using Reciprocal Rank Fusion (k=60)
  3. Facts appearing in both lists get naturally boosted
  4. If both return empty, falls back to LIKE substring matching
  5. Access count is tracked on every search hit
Embeddings
  • Model: all-MiniLM-L6-v2 (384 dimensions, ~23MB)
  • Generated locally via @xenova/transformers — no API calls, no data leaves your machine
  • Embeddings are created on save and backfilled on server startup
  • Cosine similarity with 0.3 threshold to filter noise
Storage
  • SQLite with WAL mode for fast concurrent reads/writes
  • FTS5 virtual table synced via triggers for real-time full-text indexing
  • Embeddings stored as BLOB columns alongside facts

Development

git clone https://github.com/kurovu146/claude-memory-mcp.git
cd claude-memory-mcp
npm install
npm run build
npm test

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.