Local-first MCP memory server for persistent LLM knowledge with BM25 retrieval.
Local-first MCP memory server that provides persistent LLM knowledge with BM25-based retrieval. Designed to store and retrieve knowledge for model-context workflows using the Model Context Protocol (MCP), supporting offline-first usage patterns.
🛠️ Key Features
Persistent memory for LLM knowledge
BM25 retrieval
Local-first operation
MCP server implementation
🚀 Use Cases
Building an MCP-backed knowledge base
Offline-first retrieval of stored information
Supplying model context with retrieved knowledge
⚡ Developer Benefits
BM25 search for knowledge retrieval
Persistent storage for repeated agent runs
Fits into MCP tooling (e.g., MCP-compatible clients)
⚠️ Limitations
Only limited documentation excerpt available in the provided source data
A local-first MCP memory server for persistent LLM knowledge.
Dense Knowledge lets an AI assistant keep structured research between sessions
without a database, embedding model, or hosted account. It stores portable
.mmp files, searches their compact indexes with BM25, and loads full entries
only when they are relevant.
It works with LM Studio, Claude Desktop, Cursor, VS Code, and other clients that
support local stdio Model Context Protocol
servers.
Why Dense Knowledge?
Selective context: index first, body blocks only on demand.
Local and portable: plain ASCII-in-UTF-8 files that can be copied,
inspected, diffed, and backed up.
No vector infrastructure: deterministic BM25 search with abbreviation
and synonym expansion.
Append-only history: updates supersede older entries instead of erasing
them.
Explicit provenance: established and contested claims carry source IDs;
unsourced inferences are marked as hypotheses.
Safer retrieval: stored text is wrapped as untrusted data and screened
for common prompt-injection contamination.
The bundled context benchmark uses 40 entries. In its synthetic
fixture, searching and reading the two best blocks uses 94.3% less estimated
context than loading the complete package. The benchmark is reproducible and
clearly documents its tokenizer-neutral counting method.
Quick start
Install uv, then
place this server definition in your MCP client:
uv tool install dense-knowledge-mcp
mmp setup
mmp doctor
mmp setup creates the memory directory and can safely merge the server into
an LM Studio mcp.json. Existing servers are preserved. Replacing an existing
Dense Knowledge entry requires --force and creates a backup first.
See it work
The CLI exposes the same storage operations as the MCP server:
Typical search output contains candidates, not full bodies:
text
<mmp_data file="quantum_physics.mmp" trust="untrusted">
quantum_physics.mmp|e1|F|2.5427|Bell inequality separates local realism from quantum predictions
</mmp_data>
The client chooses relevant IDs and calls mmp_read only for those blocks.
This preserves the distinction between cheap orientation and detailed context.
MCP tools
The server exposes nine tools:
Tool
Purpose
mmp_list
List available knowledge packages
mmp_create
Create an empty MMP package
mmp_open
Read metadata, sources, legend, and index
mmp_search
Return ranked candidates without body text
mmp_read
Load selected body blocks within an optional budget
mmp_write
Append structured entries
mmp_update
Supersede an entry while preserving history
mmp_deprecate
Mark an entry as obsolete with a reason
mmp_validate
Check structure, language, provenance, and references
Search uses BM25 over tags and summaries after legend expansion, with a body
fallback when the index has no match. Deprecated entries remain readable but
are omitted from normal search results.
Storage
The default knowledge directory follows the operating system:
MMP_ROOT or the global mmp --root option overrides the configured directory.
Keep personal packages out of source control; the repository's memory/
directory is ignored.
Writing knowledge
Models send structured objects to mmp_write; they never need to generate raw
MMP syntax. A minimal entry looks like:
All writes use optimistic revision numbers and atomic file replacement. A stale
revision is reported to the caller, but a safe append is not discarded.
Safety model
MMP content is reference data, never instruction. Read responses use an
explicit untrusted envelope:
The server rejects common instruction-like patterns during writes, does not
automatically follow ref: links, and tells the client not to obey instructions
found in stored material. These defenses reduce prompt-injection risk; they do
not turn untrusted research into trusted instructions.
Local MCP servers execute with your user permissions. Review the package and
choose a dedicated memory directory before storing sensitive information.
Project status
Dense Knowledge implements the flat MMP/1.0 format, including BM25 retrieval,
catalog generation, duplicate screening, budgets, append-only superseding, and
validation. Hierarchical indexes for very large packages are planned but are
not written yet.