MCP-Memory-LanceDB-Pro
A full-featured long-term memory system for Claude Code that persistently stores and retrieves preferences, decisions, and project context across sessions using hybrid search and LLM-powered extraction.
README
<div align="center">
š§ MCP-Memory-LanceDB-Pro
Give your AI coding assistant a brain that actually remembers.
Full-featured long-term memory system for Claude Code via the Model Context Protocol (MCP).
</div>
The Problem
Every time you start a new Claude Code session, your AI assistant forgets everything ā your preferences, past decisions, project context, lessons learned. You end up repeating yourself, wasting time, and losing momentum.
The Solution
MCP-Memory-LanceDB-Pro is a standalone MCP server that gives Claude Code persistent, intelligent long-term memory. It runs alongside Claude Code as an independent process, automatically capturing important information and recalling it when needed ā across sessions, across projects, across time.
Before & After
Without memory ā every session starts from zero:
You: "Use tabs for indentation, always add error handling."
(next session)
You: "I already told you ā tabs, not spaces!"
(next session)
You: "...seriously, tabs. And error handling. Again."
With MCP-Memory-LanceDB-Pro ā your assistant learns and remembers:
You: "Use tabs for indentation, always add error handling."
(next session ā assistant auto-recalls your preferences)
Assistant: (silently applies tabs + error handling)
You: "Why did we pick PostgreSQL over MongoDB last month?"
Assistant: "Based on our discussion on Feb 12, the main reasons were..."
Features
| Feature | Description |
|---|---|
| Hybrid Retrieval | Vector similarity + BM25 full-text search with RRF fusion |
| Cross-Encoder Reranking | Jina / SiliconFlow / Voyage / Pinecone rerankers |
| Smart Extraction | LLM-powered 6-category classification: preferences, decisions, facts, entities, events, patterns |
| Intelligent Forgetting | Weibull decay model ā important memories stay, noise naturally fades |
| Auto-Capture | Claude Code hooks automatically store important info after each response |
| Auto-Recall | SessionStart hook automatically injects relevant context |
| Multi-Scope Isolation | Agent-private, global shared, and project-scoped boundaries |
| Noise Filtering | Embedding-based noise prototype bank + regex filters |
| Reflection Pipeline | Extract invariant rules and derived knowledge |
| Self-Improvement | Structured learning/error logging with skill extraction |
| 14 MCP Tools | Complete memory management API |
Quick Start
1. Clone & Install
git clone https://github.com/bcornish1797/MCP-Memory-LanceDB-Pro.git \
~/.claude/mcp-servers/memory
cd ~/.claude/mcp-servers/memory
npm install
2. Configure Claude Code
Add to ~/.claude.json under projects.<your-project>.mcpServers:
{
"memory": {
"command": "node",
"args": ["~/.claude/mcp-servers/memory/server-full.mjs"],
"env": {
"JINA_API_KEY": "your-jina-api-key",
"LLM_API_KEY": "your-llm-api-key",
"LLM_BASE_URL": "https://api.openai.com/v1",
"LLM_MODEL": "gpt-4o-mini",
"RERANK_API_KEY": "your-reranker-key",
"RERANK_PROVIDER": "jina",
"RERANK_MODEL": "jina-reranker-v3",
"RERANK_ENDPOINT": "https://api.jina.ai/v1/rerank"
}
}
}
3. Set Up Automation Hooks (Optional)
Add to ~/.claude/settings.json for fully automatic memory capture:
{
"hooks": {
"SessionStart": [{
"matcher": "",
"hooks": [{"type": "command", "command": "path/to/hooks/session-start.sh"}]
}],
"Stop": [{
"matcher": "",
"hooks": [{"type": "command", "command": "path/to/hooks/auto-capture.sh"}]
}],
"PostCompact": [{
"matcher": "",
"hooks": [{"type": "command", "command": "path/to/hooks/post-compact.sh"}]
}],
"SessionEnd": [{
"matcher": "",
"hooks": [{"type": "command", "command": "path/to/hooks/session-end.sh"}]
}]
}
}
4. Restart Claude Code
The memory server loads automatically on next session.
MCP Tools
Core Memory
| Tool | Description |
|---|---|
memory_recall |
Hybrid search with vector + BM25 + cross-encoder reranking |
memory_store |
Store with auto-chunking, smart metadata, and auto-categorization |
memory_forget |
Delete by ID or search query |
memory_update |
Update text, importance, or category (triggers re-embedding) |
memory_stats |
Usage statistics by scope and category |
memory_list |
List recent memories with scope/category filters |
Intelligent Processing
| Tool | Description |
|---|---|
memory_extract |
LLM-powered smart extraction from conversation text |
memory_decay |
Weibull intelligent forgetting ā clean stale memories |
memory_reflect |
Reflection pipeline ā extract invariant rules and derived knowledge |
memory_bulk_delete |
Bulk delete by scope, category, or age |
memory_migrate |
Legacy database migration |
Self-Improvement
| Tool | Description |
|---|---|
self_improvement_log |
Log structured learnings or errors |
self_improvement_review |
Governance backlog summary |
self_improvement_extract_skill |
Transform learning entries into skill scaffolds |
Architecture
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā MCP Server (server-full.mjs) ā
ā stdio JSON-RPC <--> Claude Code ā
āāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāā¬āāāāāāāāāāāāā
| | | |
āāāāāvāāāā āāāāāvāāāā āāāāvāāāāā āāāvāāāāāāāāāāā
| Store | |Embedder| |Retriever| | Scopes |
|LanceDB | | Jina | |Hybrid | | Isolation |
āāāāāāāāāā āāāāāāāāāā āāāāāāāāāā āāāāāāāāāāāāāāā
| | |
āāāāāvāāāā āāāāāvāāāāā āāāvāāāāāāāāāāā
| Smart | | Decay | | Noise |
|Extract | | Engine | | Filter |
| (LLM) | |(Weibull)| |(Prototypes) |
āāāāāāāāāā āāāāāāāāāāā āāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
| Claude Code Hooks |
| SessionStart | Stop | PostCompact |
| (auto-recall)|(auto-|(re-inject) |
| |capture) |
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Key Components
| Module | Files | Purpose |
|---|---|---|
| Storage | store.ts |
LanceDB vector storage with FTS/BM25 indexing |
| Embedding | embedder.ts |
Jina/OpenAI-compatible embeddings with task-aware API |
| Retrieval | retriever.ts |
Hybrid vector+BM25 with RRF fusion and 6-stage scoring pipeline |
| Smart Extraction | smart-extractor.ts |
LLM-powered 6-category memory classification |
| Decay | decay-engine.ts |
Weibull stretched-exponential decay with tier-based lifecycle |
| Scopes | scopes.ts |
Multi-scope access control and isolation |
| Noise Filter | noise-filter.ts, noise-prototypes.ts |
Regex + embedding-based noise rejection |
| Reflection | reflection-*.ts (8 modules) |
Session reflection and knowledge distillation |
| Self-Improvement | self-improvement-files.ts |
Structured learning/error governance |
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
JINA_API_KEY |
Yes | ā | Jina AI API key for embeddings |
LLM_API_KEY |
No | ā | LLM API key for smart extraction |
LLM_MODEL |
No | gpt-4o-mini |
LLM model for extraction |
LLM_BASE_URL |
No | https://api.openai.com/v1 |
LLM API endpoint |
RERANK_API_KEY |
No | ā | Reranker API key |
RERANK_PROVIDER |
No | jina |
jina / siliconflow / voyage / pinecone |
RERANK_MODEL |
No | jina-reranker-v3 |
Reranker model name |
RERANK_ENDPOINT |
No | https://api.jina.ai/v1/rerank |
Reranker API endpoint |
MEMORY_DB_PATH |
No | ~/.claude/memory-lancedb |
LanceDB database path |
MEMORY_DEFAULT_SCOPE |
No | agent:primary |
Default memory scope |
Supported Providers
Embedding:
| Provider | Model | Notes |
|---|---|---|
| Jina AI | jina-embeddings-v3 |
Recommended, task-aware |
| OpenAI | text-embedding-3-small |
Widely available |
| Ollama | nomic-embed-text |
Free, local |
Reranking:
| Provider | Model | Notes |
|---|---|---|
| Jina AI | jina-reranker-v3 |
High quality |
| SiliconFlow | Qwen/Qwen3-Reranker-0.6B |
Free tier available |
| Voyage AI | rerank-2 |
Alternative |
LLM (for smart extraction):
Any OpenAI-compatible API ā OpenAI, Anthropic, z.ai, MiniMax, Ollama, etc.
Memory Scopes
| Scope | Purpose |
|---|---|
agent:primary |
Private to your primary agent |
agent:secondary |
Private to a secondary agent |
global |
Shared across all agents |
project:<name> |
Project-specific context |
How Auto-Capture Works
The Stop hook runs after every Claude response:
- Reads
last_assistant_messagefrom hook stdin - Filters through
shouldCapture()(length, noise, CJK-aware) - Auto-categorizes via
detectCategory() - Embeds via Jina API
- Stores in LanceDB with scope and metadata
This happens automatically ā no manual tool calls needed.
Retrieval Pipeline
Query --> Embed --> Vector Search --+
+--> RRF Fusion --> Rerank --> Recency
Query --> BM25 Full-Text Search ---+ --> Importance --> LengthNorm
--> TimeDecay --> HardMin --> MMR
--> Final Results
Based On
Built on memory-lancedb-pro by CortexReach ā an enhanced LanceDB memory plugin for OpenClaw. All 29 source modules are included and loaded at runtime via jiti.
What this project adds:
- Standalone MCP server (no OpenClaw dependency)
- Claude Code hooks for true automation
- 14 MCP tools (vs 9 in original)
- Portable to any MCP-compatible AI client
License
Based on memory-lancedb-pro (MIT License, Copyright (c) 2026 win4r).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.