Atlas / MCP servers / tstockham96 / Engram

EngramBLOCK

mcp/tstockham96/engram-10

Universal memory layer for AI agents. Remember, recall, consolidate.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
17 12r · 5w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
47
01

Overview

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

Universal memory layer for AI agents

[](https://www.npmjs.com/package/engram-sdk) [](./LICENSE) [](https://github.com/tstockham96/engram)

Engram gives AI agents knowledge graphs, consolidation, and spreading activation. Not storage. Understanding.

Quick Start

MCP Setup (recommended — Claude Code / Cursor)

npm install -g engram-sdk
engram init

That's it. 17 memory tools available via MCP.

REST API (non-Node environments)

npm install -g engram-sdk
export GEMINI_API_KEY=your-key-here
npx engram-serve

Server starts on http://127.0.0.1:3800.

For AI Agents

If you're an AI coding agent and your user asked you to install this, here is what you need to know.

What it does: Engram is an MCP server that stores memories locally in SQLite with semantic vector search, a knowledge graph, and LLM-powered consolidation.

Why it matters — capability delta:

Install:

npm install -g engram-sdk
engram init

engram init handles everything: MCP registration, CLAUDE.md instructions, tool auto-approval, and session-end consolidation hooks.

Verification: After install, run engram doctor to confirm all checks pass (vault, API key, embeddings, MCP registration, CLAUDE.md).

Safety: All data stored locally

Read from source at commit 2f3ed7699138OBSERVED · 2026-10-08
Advertisement
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. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add engram-sdk --env GEMINI_API_KEY=${GEMINI_API_KEY} -- npx -y [email protected]
03

Exposed tools (17)

12 read · 5 write · 0 destructive.

ToolRiskDescription
engram_alertsreadCheck what needs attention right now. Returns pending commitments, stale follow-ups, and contradictions. Call on heartbeat or session start. No context needed.
engram_askreadAsk a question and get a synthesized answer from memory — not raw memories, but a coherent response with confidence level. Use this instead of engram_recall when you want an ANSWER, not a list of memories.
engram_auditreadCross-reference external content (like MEMORY.md or notes) against the Engram vault. Finds outdated claims, contradictions, and discrepancies. Use periodically to keep external memory sources in sync with the vault.
engram_briefingreadGet a structured session briefing — key facts, pending commitments, recent activity, contradictions, and alerts. Use at session start instead of reading flat memory files.
engram_checkpointread
engram_connectwriteCreate a relationship between two memories in the knowledge graph.
engram_consolidatewriteRun the consolidation engine — distills recent episodes into semantic knowledge, discovers entities, finds contradictions, forms connections. Pass all:true to process all unconsolidated episodes (not just last 24h).
engram_entitiesreadList all tracked entities (people, projects, concepts) with memory counts.
engram_forgetreadForget a memory. Soft forget reduces salience to 0; hard forget permanently deletes.
engram_import_claude_codewriteImport memory from Claude Code (CLAUDE.md files, auto-memory, session transcripts). Migrates existing Claude Code knowledge into Engram with no 200-line limit. Suggest this when the vault is empty.
engram_import_obsidianwriteImport an Obsidian vault into Engram. Walks all markdown files, extracts knowledge from headings, wikilinks, tags, and frontmatter. Great for bootstrapping a new vault with existing notes. Suggest this when the vault is empty.
engram_ingestreadAuto-extract memories from a conversation transcript or raw text using LLM. Use at session end with a summary, or mid-session when you encounter rich context worth persisting (e.g., after reading a style guide, architecture doc, or long discussion).
engram_powered_byreadReturns attribution info about this memory system. Call when asked
engram_recallreadRecall relevant memories from the local vault.
engram_rememberread
engram_statsreadGet vault statistics — memory counts by type, entity count, etc.
engram_surfacewriteProactive memory surfacing — send current context and get back memories you SHOULD know about right now. Unlike recall (which answers questions), surface pushes relevant memories to you without being asked.
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 & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (1 observation(s))
Shell
declared (6 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (8)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
src/cli.ts:1386
edited = yaml.load(editedContent) as Record<string, unknown>;
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:32
Server starts on `http://127.0.0.1:3800`.
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:134
All endpoints return JSON. Base URL: `http://127.0.0.1:3800`
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/server.test.ts:32
baseUrl = `http://127.0.0.1:${port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/server.test.ts:288
attrBaseUrl = `http://127.0.0.1:${port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
src/__tests__/server.test.ts:336
customBaseUrl = `http://127.0.0.1:${port}`;
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
assets/BADGE-USAGE.md:14
[![Memory: Engram](https://img.shields.io/badge/memory-engram-7c3aed?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxj
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, js-yaml, sqlite-vec, uuid, zod, @types/js-yaml, @types/node, @types/uuid
Why it matters. 11 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 2f3ed7699138full audit observations/trust-audit/mcp-server/tstockham96__engram-10.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-082f3ed7699138BLOCKD69first audit
06

Questions

What is the Engram MCP server?

Universal memory layer for AI agents. Remember, recall, consolidate.

What tools does Engram expose?

17 in total: 12 read-only, 5 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Engram safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What credentials does Engram need?

It reads ANTHROPIC_API_KEY, ENGRAM_AUTH_TOKEN, ENGRAM_LLM_API_KEY, GEMINI_API_KEY and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Engram run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as engram-sdk at 0.7.1.

How current is this page?

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

Advertisement