Long-term memory for LLMs. MCP server backed by hybrid search in a single SQLite file.
{
"mcpServers": {
"rekal": {
"args": [
"rekal"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Long-term memory for LLMs. One SQLite file, no cloud, no API keys.
Is it safe?
No known CVEs for rekal.
No authentication — any process on your machine can connect.
MIT. View license →
Is it maintained?
Last commit 1 days ago. 33 stars.
Will it work with my client?
Transport: stdio. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
Context cost
18 tools.
Long-term memory for LLMs. One SQLite file, no cloud, no API keys.
rekal is an MCP server that gives Claude Code persistent memory across sessions. Memories are stored locally in SQLite and retrieved with hybrid search (BM25 keywords + vector semantics + recency decay). Nothing leaves your machine.
Session 1: "I prefer Ruff over Black" → memory_store(...)
Session 47: "Set up linting" → memory_search("formatting preferences")
← "User prefers Ruff over Black" (0.92)
Sets up Ruff without asking.
pip install rekal
or with uv:
uv tool install rekal
Requires Python 3.11+. On first run, rekal creates ~/.rekal/memory.db — a single file that holds everything.
Two steps: add the MCP server, then install the skills plugin.
1. Add the MCP server — gives Claude Code the memory tools:
claude mcp add rekal rekal
2. Install the skills plugin — teaches Claude Code when and how to use those tools:
claude plugin marketplace add janbjorge/rekal
claude plugin install rekal-skills@rekal
The MCP server provides the tools. The skills drive the behavior — session capture, deduplication, hygiene. Both are required.
| Skill | Trigger | What it does |
|---|---|---|
rekal-init | /rekal-init | Scans codebase and bootstraps rekal with project knowledge |
rekal-save | Auto on session end | Deduplicates and stores durable knowledge from the conversation |
rekal-usage | /rekal-usage | Teaches agents how to use rekal effectively |
rekal-hygiene | /rekal-hygiene | Finds conflicts, duplicates, stale data — proposes fixes |
rekal exposes 16 MCP tools grouped into four categories.
Core — read and write memories:
| Tool | Purpose |
|---|---|
memory_store | Store a memory with type, project, and tags |
memory_search | Hybrid search across all memories |
memory_update | Edit content, tags, or type of an existing memory |
memory_delete | Remove a memory by ID |
Smart write — manage knowledge over time:
| Tool | Purpose |
|---|---|
memory_supersede | Replace a memory while linking the old one as history |
memory_link | Connect memories: supersedes, contradicts, or related_to |
memory_build_context | One call that returns relevant memories + conflicts + timeline |
Introspection — explore what's stored:
| Tool | Purpose |
|---|---|
memory_similar | Find memories similar to a given one |
memory_topics | Topic summary grouped by type |
memory_timeline | Chronological view with optional date range |
memory_related | All links to and from a memory |
memory_health | Database stats: counts by type, project, date range |
memory_conflicts | Find memories that contradict each other |
Conversations — track session threads:
| Tool | Purpose |
|---|---|
conversation_start | Start a conversation, optionally linked to a previous one |
conversation_tree | Get the full conversation DAG |
conversation_threads | List recent conversations with memory counts |
conversation_stale | Find inactive conversations |
Everything lives in a single SQLite file (~/.rekal/memory.db). Three subsystems share it:
When you store a memory, rekal writes the row, updates the FTS5 index (automatically), and inserts a vector embedding. When you update content, it re-embeds automatically.
Memory links (supersedes, contradicts, `rel
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'rekal' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
memory_storeStore a memory with type, project, and tags
memory_searchHybrid search across all memories using BM25 keywords, vector semantics, and recency decay
memory_updateEdit content, tags, or type of an existing memory
memory_deleteRemove a memory by ID
memory_supersedeReplace a memory while linking the old one as history
memory_linkConnect memories with relationships: supersedes, contradicts, or related_to
memory_build_contextOne call that returns relevant memories, conflicts, and timeline
memory_similarFind memories similar to a given one
memory_topicsTopic summary grouped by type
memory_timelineChronological view with optional date range
No known vulnerabilities.
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Query and manage PostgreSQL databases directly from AI assistants
Manage Supabase projects — databases, auth, storage, and edge functions
Asynchronous coordination layer for AI coding agents: identities, inboxes, searchable threads, and advisory file leases over FastMCP + Git + SQLite
Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors
MCP Security Weekly
Get CVE alerts and security updates for Rekal and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.