About Citadel
Citadel is an MCP server for the Citadel encrypted memory engine, giving MCP clients, IDEs, and agents persistent memory. It combines vector and keyword retrieval with a typed graph, and supports cryptographic erasure by destroying keys.
Key features
- 01Encrypted persistent memory
- 02Hybrid vector and keyword search
- 03Typed memory graph
- 04Per-atom integrity verification
- 05Key-destruction-based forgetting
- 06Batch memory writes and updates
Use cases
- 01Keep agent memory across sessions
- 02Retrieve memories by meaning and keywords
- 03Check memory data for tampering
- 04Forget or erase memories by policy
MCP support
Exposes stdio JSON-RPC tools through an MCP server for storing, retrieving, linking, verifying, and forgetting memory.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx citadeldb-mcpCITADEL_KEYSecretPassphrase used to unlock the encrypted Citadel databaseLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEcitadeldb-mcp
mcp-name: dev.citadeldb/mcp
Model Context Protocol (MCP) server for the Citadel encrypted memory engine. Gives any MCP client (Claude Desktop, an IDE, an agent) persistent, encrypted memory.
Memory lives in a local citadeldb-mem region:
AES-256 encrypted at rest, per-atom sealed and HMAC-authenticated, recalled through a hybrid
vector + keyword + recency + importance fusion over a PRISM approximate nearest-neighbor index,
connected by a typed edge graph, and forgotten by destroying keys (cryptographic erasure).
Install
Run it with no install. For semantic recall, pull the recommended embedder and cross-encoder reranker once, then enable both:
uvx citadeldb-mcp pull e5-large
uvx citadeldb-mcp pull ms-marco-minilm
The pull commands do not open a vault. Before serving, set CITADEL_KEY to the vault
passphrase (export CITADEL_KEY="your-passphrase" on macOS/Linux or
$env:CITADEL_KEY = "your-passphrase" in PowerShell), then run:
uvx citadeldb-mcp --db memory.cdl --embedder e5-large --reranker ms-marco-minilm
e5-large + ms-marco-minilm is the recommended semantic-recall setup. See the
memory benchmarks
for measured configurations. Models are never downloaded automatically.
Built-in pulls use release-pinned Hugging Face revisions. Each complete snapshot is verified
against compiled sizes and SHA-256 digests, then stored with a BLAKE3 manifest under
<models-dir>/<name>/<revision>/. A flat cache created by an earlier CitadelDB release is not
trusted; run pull again to create the pinned snapshot. --model-dir and --reranker-dir
remain explicit bring-your-own-artifact paths and bypass the managed-cache manifest. Citadel
treats those directories as user-trusted and does not attest their contents.
Or install the command with pip install citadeldb-mcp or cargo install citadeldb-mcp,
then wire it into Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"citadel": {
"command": "citadeldb-mcp",
"args": ["--db", "/absolute/path/to/memory.cdl", "--embedder", "e5-large", "--reranker", "ms-marco-minilm"],
"env": { "CITADEL_KEY": "your-passphrase" }
}
}
}
The server supports stateless MCP 2026-07-28 discovery and per-request metadata, plus the
initialize-based 2025-11-25 and 2025-06-18 revisions for existing clients.
Tools (over a bounded, cancellable JSON-RPC 2.0 stdio transport):
mem_recall- hybrid retrieval (vector + keyword + recency + importance); filter by kind/payload, expand along the memory graph, override fusion weights, and optionally attach provenance (derived_from), per-hit integrity verdicts (attest), andresource_links to each hitmem_fetch- deterministic cursor-based listing of a kind (no embedding)mem_get- bounded exact-id batch retrieval in request order, with missing atoms marked explicitlymem_edges- cursor-based typed graph introspectionmem_profile- what the memory knows about a query: recall plus its graph neighborhoodmem_summarize- per-kind digest of a regionmem_verify- re-authenticate atoms off disk: per-atom integrity verdict (authentic / tampered / key_erased / missing / plaintext_unattested)mem_remember- store one atom with optional provenance and retry-safe idempotencymem_remember_batch- atomically store an ordered batch; every entry carries a distinct idempotency key, and a changed reuse rejects the whole batchmem_update- replace a stored atom's payload in place (preserves id, edges, and embedding)mem_link/mem_unlink- add or remove one exact typed edgemem_evolve- recompute an atom's neighbor links and stored importancemem_evict- selective forgetting by policy (cryptographic erasure on encrypted regions)mem_forget- forget atoms by id and return a verifiable erasure receipt; optionally erase their region-localderived_fromclosure atomically (cryptographic erasure on encrypted regions; immutable atoms require the protected-erasure opt-in)
The citadeldb-mcp binary reads the passphrase from CITADEL_KEY and serves one region
(encrypted by default); only protocol messages go to stdout, diagnostics to stderr.
--region-mode plaintext disables per-atom encryption and cryptographic erasure for
that region; the database remains encrypted at rest. Erasure does not revoke plaintext
exports or keys retained in pre-erasure backups or snapshots.
Every server invocation must select an embedder. The CPU Candle embedder is compiled into the standalone server's
default build, including the citadeldb-mcp Python package; it is not included in the
default citadeldb library wheel. Models are fetched only on explicit pull.
Embedder pull names: e5-large (recommended), e5-large-v2, bge-small, bge-base,
bge-large, minilm. Reranker: ms-marco-minilm. Or point --model-dir at a
compatible local checkpoint for the selected catalog pipeline, and build with
--features cuda-embed to run on an NVIDIA GPU.
This crate is part of the Citadel workspace.
License
Apache-2.0
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.