mnestic-mcp
A local memory MCP server backed by mnestic — an embedded graph + vector + full-text database (a maintained fork of CozoDB). One process, one file, fully local: your agent's memory never leaves the machine.
mnestic is a maintained fork of CozoDB; it is not the official CozoDB. Original design credit belongs to Ziyang Hu and the Cozo Project Authors.
Install
Add to any MCP client (Claude Desktop, Claude Code, Cursor, ...):
{ "command": "uvx", "args": ["mnestic-mcp"] }
That's it. The database lives in your platform data dir (override with
--db PATH or MNESTIC_MCP_DB); embeddings run locally via
fastembed (default
BAAI/bge-small-en-v1.5, a one-time ~67 MB download that happens in the
background — keyword search works immediately, before the model arrives).
Pre-provision with uvx mnestic-mcp --download-model.
Tools
store, store_batch, search, find_related, list_recent, update,
delete, link, recall_as_of, stats — plus the two things no other local
memory server has:
search(explain=true)— per-leg attribution: exactly how much the keyword (BM25), vector (HNSW), and graph-proximity legs each contributed to every result, straight from the engine's fused three-way retrieval. Ask your agent "why did you recall that?" and get a real answer.recall_as_of(t)— time travel. Updates and deletes are never destructive (valid-time history in the engine's bitemporal storage): "what did you know about this before last Tuesday?" just works.
search is keyword-first with an automatic hybrid fallback; link builds a
typed, weighted memory graph that both find_related (budget-bounded
traversal) and the hybrid graph leg exploit.
Byte-budgeted output (0.2.0): every wide-result tool (search,
find_related, list_recent, recall_as_of) takes max_bytes (default
20 000). An over-budget result is cut at item boundaries — item content is
never trimmed — and returns truncated: true, a remaining count, and a
single-use continuation token; continue_result(token) serves the next
slice under the same budget. A wide result can no longer blow your agent's
context with no way back. (Tokens don't survive a server restart; the error
says so and tells you to re-run the query.)
Configuration
| Flag / env | Default | Meaning |
|---|---|---|
--db / MNESTIC_MCP_DB |
per-OS data dir | database file |
--engine / MNESTIC_MCP_ENGINE |
sqlite |
sqlite | rocksdb (single-instance) | mem |
--model / MNESTIC_MCP_MODEL |
BAAI/bge-small-en-v1.5 |
any fastembed model |
MNESTIC_MCP_CACHE |
data dir /models |
model cache location |
A database pins the embedding model it was built with — mixing embedding spaces is refused with an actionable error, never a silent quality collapse.
Notes
- Requires Python ≥ 3.10. Storage engines ship in the
mnesticwheel (sqlite/memalso in the sdist;rocksdbwheel-only). - Several MCP clients may share one sqlite database; writes serialize on the
file.
rocksdbis strictly single-instance. - Deleting memories under heavy churn can slowly degrade vector recall (a known engine-side HNSW defect, tracked upstream); updates are safe.
License
Mozilla Public License 2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mnestic_mcp-0.2.0.tar.gz.
File metadata
- Download URL: mnestic_mcp-0.2.0.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
435e31ee42ff4541bfb8372abc6c35c93856a9b0a03139e7e8f3ded7001e7eac
|
|
| MD5 |
ff89e04a3b16e0758c763dbd13d6eb22
|
|
| BLAKE2b-256 |
e8acffe62761d37177fd05e16bacab00a46641c0f287f83e6f5d8da1cabc8533
|
Provenance
The following attestation bundles were made for mnestic_mcp-0.2.0.tar.gz:
Publisher:
python-publish.yml on shuruheel/mnestic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mnestic_mcp-0.2.0.tar.gz -
Subject digest:
435e31ee42ff4541bfb8372abc6c35c93856a9b0a03139e7e8f3ded7001e7eac - Sigstore transparency entry: 2387284042
- Sigstore integration time:
-
Permalink:
shuruheel/mnestic@5ef1aa44c99b34aef31a159a907b7b53d2c81c2a -
Branch / Tag:
refs/tags/py-v0.14.0 - Owner: https://github.com/shuruheel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5ef1aa44c99b34aef31a159a907b7b53d2c81c2a -
Trigger Event:
push
-
Statement type:
File details
Details for the file mnestic_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mnestic_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8bf1a7b7bb4ebf04c54734c2cb5c576e42ddc37af5233367c4162f00b9a45a1f
|
|
| MD5 |
49b0df42dbf7026f756b055647956b36
|
|
| BLAKE2b-256 |
b7caadff51b7db9b797a432d8fc7c17bcfefe8bd4207b2ec448919a526265d34
|
Provenance
The following attestation bundles were made for mnestic_mcp-0.2.0-py3-none-any.whl:
Publisher:
python-publish.yml on shuruheel/mnestic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mnestic_mcp-0.2.0-py3-none-any.whl -
Subject digest:
8bf1a7b7bb4ebf04c54734c2cb5c576e42ddc37af5233367c4162f00b9a45a1f - Sigstore transparency entry: 2387284183
- Sigstore integration time:
-
Permalink:
shuruheel/mnestic@5ef1aa44c99b34aef31a159a907b7b53d2c81c2a -
Branch / Tag:
refs/tags/py-v0.14.0 - Owner: https://github.com/shuruheel
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@5ef1aa44c99b34aef31a159a907b7b53d2c81c2a -
Trigger Event:
push
-
Statement type: