Atlas / MCP servers / kitzkatz / memoria

memoriaBLOCK

mcp/kitzkatz/memoria

Local-first, LLM-agnostic memory system — hybrid retrieval (vector + lexical + graph), multi-signal ranking. Runs on 4GB RAM, CPU-only, no cloud.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
6 4r · 1w · 1d
Transport
—
License
MIT
Stars
14
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Local-first, LLM-agnostic memory infrastructure with parallel hybrid retrieval, multi-signal ranking, declarative type routing, temporal retrieval, and a plugin-based architecture.

Memoria provides a complete memory substrate without requiring a cloud service, API key, GPU, or even an LLM.

  • CPU-only · ~4 GB RAM capable · No cloud dependency · No API keys required
  • LLM optional · MIT licensed · Python
  • CLI · TUI · GUI · API · MCP
  • Pluggable retrieval and extension architecture

Memoria 1.0.0 is the first official public release.

Documentation

Full documentation, architecture notes, configuration reference, adapter documentation, retrieval details, and benchmark methodology:

https://kitzkatz.github.io/memoria/

What Is Memoria?

Memoria is memory infrastructure first — built to store, retrieve, rank, route, and manage information independently of whichever language model happens to consume it.

Rather than treating memory as a thin vector-search layer, Memoria combines multiple retrieval and ranking signals, with temporal retrieval running as a separately evaluable path that merges in at the end:

┌─────────────────────┐
│       Query         │
└──────────┬──────────┘
│
┌─────────────┴─────────────┐
│                           │
Base Retrieval              Temporal Retrieval
│                           │
┌────────┼────────┐                  │
│        │        │                  │
FAISS    BM25    Graph             Temporal
│        │        │                  │
└────────┴────────┘                  │
│                           │
Fusion                        │
│                           │
Base Ranking                     │
Read from source at commit de38904514e1OBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add kitzkatz-memoria -- uvx kitzkatz-memoria
claude-desktop
{
  "mcpServers": {
    "kitzkatz-memoria": {
      "command": "uvx",
      "args": [
        "kitzkatz-memoria"
      ]
    }
  }
}
03

Exposed tools (6)

4 read · 1 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
memory_deletedestructive
memory_fetchread
memory_searchread
memory_storeread
memory_store_manyread
memory_updatewrite
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (5 observation(s))
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
memoria/cache/embedding_cache.py:231
data = pickle.load(f)
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
memoria/graph/numpy_graph.py:252
data = pickle.load(f)
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
MEDIUMInventory / provenance · inv.binary · CWE-1104
memoria/benchmark_archive.tar.gz
benchmark_archive.tar.gz
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
memory_delete
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
memoria/benchmark/locomoeval_adapter.py:545
data = pickle.load(f)
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
LOWCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
memoria/benchmark/longmemeval_adapter.py:801
data = pickle.load(f)
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
synthetic_world/world.py:221
unique_id = hashlib.md5(f"{first}{last}{random.random()}".encode()).hexdigest()[:8]
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
requirements.txt
faiss-cpu, numpy, pydantic, fastapi, uvicorn, requests, sqlalchemy, rank-bm25
Why it matters. 21 requirement(s) not pinned with ==
Fix. pin exact versions

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha de38904514e1full audit observations/trust-audit/mcp-server/kitzkatz__memoria.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08de38904514e1BLOCKD69first audit
06

Questions

What is the memoria MCP server?

Local-first, LLM-agnostic memory system — hybrid retrieval (vector + lexical + graph), multi-signal ranking. Runs on 4GB RAM, CPU-only, no cloud.

What tools does memoria expose?

6 in total: 4 read-only, 1 that write, and 1 that can delete or overwrite (memory_delete). Every one is listed on this page with its risk.

Is memoria safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does memoria need?

No credential environment variables were found in its source, so it appears to need none.

How current is this page?

The grade is for one exact copy of the source (de38904514e1), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement