dense-knowledge-mcp
The Dense Knowledge MCP Server provides a local-first, portable, persistent memory for LLMs, storing structured knowledge in plain ASCII .mmp files. It enables efficient BM25 search, selective retrieval, append-only history, and safe management without external databases or embedding models.
List packages (
mmp_list): View all available knowledge packages.Create packages (
mmp_create): Create a new empty package.Open packages (
mmp_open): Inspect metadata, legend, sources, and compact index without loading full content.Search knowledge (
mmp_search): Run BM25 searches on index metadata (tags, summaries) for ranked candidates, minimizing context usage.Read entries (
mmp_read): Load specific body blocks by ID, with an optional token/character budget.Write entries (
mmp_write): Append structured entries with summaries, tags, status, sources, and validated content.Update entries (
mmp_update): Supersede an active entry with a replacement while preserving the old version.Deprecate entries (
mmp_deprecate): Mark an entry as obsolete with a reason.Validate packages (
mmp_validate): Check structure, provenance, safety patterns, and internal references.Ensure safety: Read responses come with untrusted envelopes; writes reject prompt-injection patterns.
Track provenance: Entries have status (fact, hypothesis, contested) and required sources.
Local-first portability:
.mmpfiles are easy to copy, diff, inspect, and back up.
Click on "Install 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., "@dense-knowledge-mcpsearch quantum_physics.mmp for Bell inequality"
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.
Dense Knowledge
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.
question -> compact index/search -> selected knowledge blocks -> answer
inexpensive detailed contextIt 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.
Related MCP server: KB-MCP Server
Quick start
Install uv, then
place this server definition in your MCP client:
{
"mcpServers": {
"dense-knowledge": {
"command": "uvx",
"args": ["dense-knowledge-mcp"]
}
}
}uvx downloads the published package when needed. Dense Knowledge uses the
platform's default data directory unless --root is supplied:
{
"mcpServers": {
"dense-knowledge": {
"command": "uvx",
"args": [
"dense-knowledge-mcp",
"--root",
"/absolute/path/to/memory"
]
}
}
}Configuration differs slightly between clients. Ready-to-copy instructions are available for:
To install the command-line tools permanently:
uv tool install dense-knowledge-mcp
mmp setup
mmp doctormmp 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:
mmp create quantum_physics.mmp "quantum physics"
mmp write quantum_physics.mmp --rev 0 --from examples/research_entries.json
mmp search quantum_physics.mmp "experimental tests of local realism"
mmp read quantum_physics.mmp e1Typical search output contains candidates, not full bodies:
<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 |
| List available knowledge packages |
| Create an empty MMP package |
| Read metadata, sources, legend, and index |
| Return ranked candidates without body text |
| Load selected body blocks within an optional budget |
| Append structured entries |
| Supersede an entry while preserving history |
| Mark an entry as obsolete with a reason |
| 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:
Linux:
~/.local/share/mmp/memorymacOS:
~/Library/Application Support/mmp/memoryWindows:
%LOCALAPPDATA%\mmp\memory
The user configuration is stored separately:
Linux:
~/.config/mmp/config.tomlmacOS:
~/Library/Application Support/mmp/config.tomlWindows:
%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:
{
"summary": "Possible caching strategy needs workload validation",
"tags": ["caching", "validation"],
"status": "H",
"srcs": [],
"content": "rel: versioned keys -> simpler invalidation\nq: workload impact -> needs measurement"
}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:
<mmp_data file="..." trust="untrusted">
...
</mmp_data>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
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
ruff check src tests benchmarks
pytest
python -m buildContributions are welcome. See CONTRIBUTING.md for the workflow and SECURITY.md for private vulnerability reports.
Licensed under the MIT License.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides knowledge graph-based persistent memory for LLMs, allowing them to store, retrieve, and reason about information across multiple conversations and sessions.Last updated990,9492MIT
- FlicenseAquality-maintenanceA local-first knowledge base server that enables AI clients to store, retrieve, and manage documents using semantic search. Provides privacy-focused, offline-capable memory for AI assistants with tools for ingesting, querying, updating, and deleting knowledge.Last updated718
- Alicense-qualityDmaintenanceA privacy-focused local memory server that provides long-term semantic storage and retrieval for AI agents using SQLite and ChromaDB. It enables LLMs to persist and query text, chat histories, and PDF documents across sessions through the Model Context Protocol.Last updatedMIT
- Alicense-qualityCmaintenanceA lightweight, powerful local memory server for AI agents supporting text, entities, and relations. Enables persistent codebase understanding and user preference management.Last updated5348MIT
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Local-first RAG engine with MCP server for AI agent integration.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Lucky44k/dense-knowledge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server