A production-ready RAG (Retrieval-Augmented Generation) system written in Rust, designed as an MCP (Model Context Protocol) server for Zed editor and Claude Code.
- BM25 Keyword Search: Fast, proven probabilistic ranking for information retrieval
- Multi-Scope Memory: Session (in-memory), Project (per-project DB), and Global (shared DB)
- MCP Protocol: Full JSON-RPC 2.0 implementation over stdio
- Embedded Storage: Sled database, no external dependencies
- CLI Tools: Complete command-line interface for memory management
- Zero Dependencies: No Python, no ML models, pure Rust
✅ Phase 1 Complete - BM25 search and MCP server fully functional
cargo build --release# Add a memory
./target/release/rag-mcp add --content "Your content here" --tags rust --tags async
# Search memories
./target/release/rag-mcp search "search query" --k 5
# List all memories
./target/release/rag-mcp list --limit 10
# Show statistics
./target/release/rag-mcp stats
# Run as MCP server (for Zed/Claude Code)
./target/release/rag-mcp serve- session: Temporary, in-memory (cleared on exit)
- project: Stored in
<project>/.rag-mcp/data.db - global: Shared across all projects at
~/.config/rag-mcp/global.db
totalrecall/
├── crates/
│ ├── rag-mcp-server/ # MCP server binary and CLI
│ ├── rag-core/ # Core data structures, storage, config
│ └── rag-search/ # BM25 search engine
├── SPEC.md # Technical specification
├── PROG.md # Programming rules
└── CLAUDE.md # AI development guidelines
When running as MCP server, provides these tools:
store_memory: Store new memory with tags and scopesearch_memory: BM25 keyword searchlist_memories: Browse memories with paginationdelete_memory: Delete by IDclear_session: Clear session memories
Edit ~/.config/rag-mcp/config.toml to customize:
[server]
log_level = "info"
[search]
default_k = 5
bm25_k1 = 1.2
bm25_b = 0.75
[storage]
global_db_path = "~/.config/rag-mcp/global.db"
max_session_memories = 1000MIT OR Apache-2.0