project-recall
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@project-recallsearch my notes for how I fixed the encoder drift crash"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ProjectRecall
Local retrieval over your own project notes, served to Claude Code as an MCP server. Ask "how did I fix that crash?" and get the paragraph you wrote months ago, with its file and line.
How it works
Index — markdown files in allowlisted folders are split by heading, so every chunk keeps its breadcrumb (
Project > Bugs > Encoder drift).Embed — chunks are embedded on your machine with
nomic-embed-textthrough Ollama.Store — one SQLite file holds the text, an FTS5 keyword index and the vectors.
Search — BM25 and vector rankings are merged with weighted reciprocal rank fusion.
Serve — an MCP server over stdio exposes
search_notesandlist_projects.
New to search or RAG? Start with the documentation: concepts, usage, architecture, retrieval, evaluation and privacy, written for readers without a background in any of them.
Related MCP server: rag-mcp-server
Privacy model
The repository contains code and an invented sample corpus only.
The index and the real config live in
%LOCALAPPDATA%\ProjectRecall, outside the repository.Indexing is allowlist-only, and files that look like secrets (
.env*,*.key, ...) are always skipped.Embeddings are computed locally; no hosted embedding API or vector database is used.
The server speaks stdio only and opens no network port.
A pre-commit guard blocks database files and any staged line that matches a privately indexed note.
Retrieved snippets do become part of the conversation with whichever MCP client asks for them.
Setup
py -3.11 -m venv .venv
.venv\Scripts\pip install -e ".[dev]"
ollama pull nomic-embed-text
git config core.hooksPath .githooks
.venv\Scripts\recall init # creates the config; add your folders to it
.venv\Scripts\recall index
.venv\Scripts\recall search "why did training crash"Register with Claude Code:
claude mcp add --scope user project-recall -- <repo>\.venv\Scripts\python.exe -m recall.serverEvaluation
python eval/run_eval.py indexes sample_corpus/ (16 invented projects with deliberately
overlapping topics, 148 chunks) and scores questions from eval/golden.jsonl. A question is
answered at rank r if the r-th chunk comes from the expected file and contains the
expected text.
Fusion settings were tuned on 99 dev questions. The table is the held-out test split: 59 questions (42 paraphrased, 17 exact-term), assigned by hash and scored once, after the settings were fixed.
Mode | hit@1 | hit@3 | hit@5 | MRR@5 |
BM25 | 67.8% | 78.0% | 84.7% | 0.735 |
Vector | 88.1% | 96.6% | 98.3% | 0.921 |
Hybrid (weighted RRF) | 91.5% | 96.6% | 100.0% | 0.943 |
Hybrid hit@1 has a 95% interval of 81.6% to 96.3%. It beats BM25 on 19 questions and loses on none. Against vector search it is ahead on average but level question by question (2 better, 2 worse), so this eval does not show hybrid beating vector search; it does show hybrid as the only mode that puts the answer in the top five every time.
Plain RRF (equal weights, k = 60) scored below vector search alone. The fix was a small k, a vector weight of 0.8, and equal weights for short exact-term queries. See docs/retrieval.md and docs/evaluation.md.
Tests
.venv\Scripts\python -m pytestLicense
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Project memory, semantic code search, and grounded agent context.
Search indexed code, trace dependencies, assess change impact, and recall repository memory.
Search, read, create and edit your Memol notes from Claude. Team note-taking with AI search.
Recall authorized Vault notes with keyword and hybrid search, original excerpts, and source paths.
1
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceGives Claude Code long-term memory that persists across sessions via hybrid BM25 and vector semantic search, with multi-project isolation.11 npm8MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude Code to index and semantically search through PDFs, code, and documents with exact citations and zero hallucinations.MIT
- FlicenseAqualityDmaintenanceEnables natural language code search across multiple local Git repositories, allowing users to register projects, search for code, and explore file structures through Claude.6-
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code to search and retrieve from a local knowledge base of markdown notes using hybrid semantic+keyword search, keeping data entirely offline.13 npmMIT