
Dense Knowledge
io.github.Lucky44kPublished by GitHub account Lucky44kv1.2.0Updated Nov 3, 2026
Local-first MCP memory server for persistent LLM knowledge with BM25 retrieval.
Overview
Local-first MCP memory server that stores research in portable .mmp files and retrieves it with BM25 search, without a database or embedding model.
- What you can do
- List, create and open knowledge packages, reading metadata, sources, legend and index
- Search packages with BM25 and get ranked candidate IDs without body text
- Read selected body blocks, optionally within a context budget
- Append structured entries, supersede older ones while keeping history, and mark entries obsolete
- Validate structure, language, provenance and references
- When to use it
- Useful when an assistant should keep structured research notes across sessions on your own machine, and you want cheap index-first retrieval instead of loading whole documents. Suited to local stdio clients such as LM Studio, Claude Desktop, Cursor or VS Code.
- Requirements
- Runs as a local stdio process launched with uvx from the dense-knowledge-mcp PyPI package, so uv must be installed. No account, API key or environment variable is declared. Knowledge is stored in the platform default data directory unless a root path is passed with --root or MMP_ROOT.
Installation
In SourceWeft
- Open Dense Knowledge in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Dense Knowledge
[PyPI] [Python] [CI] [License: MIT]
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:
uvx downloads the published package when needed. Dense Knowledge uses the
platform's default data directory unless --root is supplied:
Configuration differs slightly between clients. Ready-to-copy instructions are available for:
To install the command-line tools permanently:
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:
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:
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:
- Linux:
~/.local/share/mmp/memory - macOS:
~/Library/Application Support/mmp/memory - Windows:
%LOCALAPPDATA%\mmp\memory
The user configuration is stored separately:
- Linux:
~/.config/mmp/config.toml - macOS:
~/Library/Application Support/mmp/config.toml - Windows:
%APPDATA%\mmp\config.toml
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:
Important validation rules:
- summaries contain 3–15 English words;
- tags are a JSON array, never one comma-separated string;
- entries with status
ForCrequire sources; - unsourced entries use status
Hand cannot containfact:ornum:lines; - contested entries use status
Cand include at least onectr:line; - block content is ASCII English and uses the eight defined line prefixes.
See examples/research_entries.json for
sourced and contested entries that can be written directly.
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.
Releases follow Semantic Versioning. Changes are documented in CHANGELOG.md.
Development
Contributions are welcome. See CONTRIBUTING.md for the workflow and SECURITY.md for private vulnerability reports.
Licensed under the MIT License.
Source: README.md at commit 018a17a
Tools
0Version history
1- v1.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts