Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Engram Server

by jamjet-labsversion 0.5.0i★ –iRuns on your computer
Registry nameio.github.jamjet-labs/engram-server

Install

Overview

Description from the maker (original English)

Durable memory for AI agents: fact extraction, hybrid retrieval, temporal graph. SQLite/Postgres.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Databases & datasets

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "engram": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jamjet-labs/engram-server:0.5.0"
      ]
    }
  }
}

Run this in your terminal

claude mcp add engram -- docker run -i --rm ghcr.io/jamjet-labs/engram-server:0.5.0

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "engram": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jamjet-labs/engram-server:0.5.0"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "engram": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jamjet-labs/engram-server:0.5.0"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account jamjet-labs, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Databases & datasetsi

  • More stars than 0% of the other 954 servers in this category
  • Published to the registry more recently than 9% of the other 954 servers in this category
  • Basic checks equal to or better than 100% of the other 954 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Engram Server safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.5.0) reached the registry 7 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.

What can I use instead?

In the same category: Supabase, MongoDB MCP Server, Elasticsearch MCP Server

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Supabase

by supabase

Supabase’s official server lets AI create tables, query data and review project settings in your Supabase database.

Computer or cloud★ 2,993Apache-2.0Updated today
Install

MongoDB MCP Server

by mongodb-js

MongoDB Model Context Protocol Server

Runs on your computer★ 1,157Apache-2.0Updated 2 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

⚡ Engram

Durable memory for AI agents — temporal knowledge graph, hybrid retrieval, SQLite or PostgreSQL.

java-ai-memory.dev · Main repo · JamJet docs · Discord


Engram is a durable memory layer for AI agents. It extracts facts from conversations, stores them in a temporal knowledge graph, and retrieves them with hybrid semantic + keyword search — backed by a single SQLite file or a PostgreSQL database.

It ships in two shapes:

  • `jamjet-engram` — a Rust library you embed in your own application.
  • `jamjet-engram-server` (this crate) — a standalone binary that speaks MCP over stdio and REST over HTTP, so Claude Desktop, Cursor, and any HTTP client can use it with no code.

Engram is provider-agnostic. Five LLM backends are wired in out of the box, and a sixth — command — lets you shell out to any external script, so you can plug in a provider Engram does not ship natively without touching Rust code:

ENGRAM_LLM_PROVIDER=What it does
ollama (default)Local Ollama via /api/chat. Free, no API keys, runs on your laptop.
openai-compatibleAny endpoint that speaks OpenAI's chat-completions protocol — see the long list below.
anthropicAnthropic Claude via the Messages API.
googleGoogle Gemini via generateContent with native JSON mode.
commandShell out to a user-supplied script. Infinite extensibility, zero recompile.
mockDeterministic tests-only backend — returns empty facts.

Pick one with ENGRAM_LLM_PROVIDER=… — the same binary handles all of them.

State of the project, April 2026. Engram is new — v0.3.2, small community, no public LongMemEval / DMR numbers yet. The architecture below works, the tests pass, the Docker image runs. If you need production-scale memory today, Mem0 Cloud and Zep Cloud are more mature. If you need a tryable, self-hostable, single-binary memory layer that doesn't require Python, Postgres, Qdrant, or Neo4j, Engram is built for you.

Why Engram?

ProblemEngram's answer
Every agent memory library is Python-firstRust core with native Python, Java, and MCP clients — no sidecar required
Needs Postgres + Qdrant + Neo4j just to trySingle SQLite file (zero infra) or Postgres when you need it
Conversation history is not knowledge memoryFact extraction pipeline — pulls structured facts out of messages
Old facts drift and contradict each otherConflict detection + consolidation — decay, promote, dedup, summarize, reflect
Memory recall is either semantic OR keywordHybrid retrieval — vector search + SQLite FTS5 in one query
Agents lose memory across processesDurable by default — SQLite or Postgres, crash-safe, portable
MCP support is an afterthoughtMCP-native — 7 tools exposed by a single binary
No time-travel over what the agent knewTemporal knowledge graph — every fact is scoped and timestamped
Can't isolate memory per user or tenantFirst-class scopes — org / user / session built into every query

Quickstart — 30 seconds

Engram speaks to four LLM providers out of the box: Ollama (default — free, local), OpenAI, Anthropic Claude, and Google Gemini. Pick one.

Option A — Ollama (free, local, zero API keys)

Requirements: Ollama with llama3.2 and nomic-embed-text pulled:

ollama pull llama3.2

ollama pull nomic-embed-text

Docker (easiest):

docker run --rm -i \

-v engram-data:/data \ ghcr.io/jamjet-labs/engram-server:0.3.2

The container defaults to Ollama at host.docker.internal:11434 — works out of the box on Docker Desktop for Mac and Windows. Linux users need --add-host=host.docker.internal:host-gateway.

Option B — Anthropic Claude (hosted, highest quality)
docker run --rm -i \

-e ENGRAM_LLM_PROVIDER=anthropic \ -e ANTHROPIC_API_KEY=sk-ant-... \ -v engram-data:/data \ ghcr.io/jamjet-labs/engram-server:0.3.2

Defaults to claude-haiku-4-5-20251001. Override with -e ENGRAM_ANTHROPIC_MODEL=claude-sonnet-4-6.

Note: Anthropic has no native JSON mode, so Engram parses JSON from text responses. The llm_util::extract_json_payload helper strips markdown fences that Claude occasionally emits.

Option C — Google Gemini
docker run --rm -i \

-e ENGRAM_LLM_PROVIDER=google \ -e GOOGLE_API_KEY=AIza... \ -v engram-data:/data \ ghcr.io/jamjet-labs/engram-server:0.3.2

Defaults to gemini-flash-latest. Override with -e ENGRAM_GOOGLE_MODEL=gemini-2.5-flash.

Option D — Any OpenAI-compatible endpoint
docker run --rm -i \

-e ENGRAM_LLM_PROVIDER=openai-compatible \ -e OPENAI_API_KEY=sk-... \ -v engram-data:/data \ ghcr.io/jamjet-labs/engram-server:0.3.2

Defaults to OpenAI itself (https://api.openai.com/v1, gpt-4o-mini). Change one env var to point at any of these providers without recompiling:

ProviderENGRAM_OPENAI_BASE_URL=Note
OpenAIhttps://api.openai.com/v1default
Azure OpenAIhttps:// .openai.azure.com/openai/deployments/
Groqhttps://api.groq.com/openai/v1very fast inference
Together.aihttps://api.together.xyz/v1
Mistralhttps://api.mistral.ai/v1
DeepSeekhttps://api.deepseek.com/v1
Perplexityhttps://api.perplexity.ai
OpenRouterhttps://openrouter.ai/api/v1one key, many models
Fireworkshttps://api.fireworks.ai/inference/v1
vLLM (self-hosted)http://your-host:8000/v1
LM Studiohttp://localhost:1234/v1local desktop app
LocalAIhttp://localhost:8080/v1self-hosted
Ollama /v1 compat layerhttp://localhost:11434/v1alternate path for Ollama
Your corporate LLM gatewaywhatever URL your infra team exposes

openai is accepted as a backwards-compatible alias for openai-compatible.

Option E — command (shell out to anything)

For providers Engram does not ship natively — an internal model behind a custom RPC, a raw SOAP endpoint, a local inference binary, a quick wrapper over a Python SDK, or tomorrow's new provider — use the command backend. Engram will spawn your script per extraction call, pipe a JSON request to its stdin, and read a JSON response from its stdout.

The contract. Your script reads one JSON object from stdin:

{"system": "<extraction prompt>", "user": "<conversation text>", "structured": true}

Then writes one JSON value to stdout. Either a bare value:

{"facts": [{"text": "...", "entities": [...], "confidence": 0.95, "category": "..."}]}

Or an envelope (useful for surfacing errors):

{"content": {"facts": [...]}}

{"error": "rate limited, try again"}

Exit 0 on success, non-zero (with stderr) on failure.

Example Python wrapper (~15 lines):

#!/usr/bin/env python3

my-llm.py — wraps any Python SDK for Engram.

import json, sys from my_llm_sdk import chat # your SDK

req = json.loads(sys.stdin.read()) resp = chat( system=req["system"], user=req["user"], json_mode=req.get("structured", False), ) sys.stdout.write(json.dumps(resp))

Point Engram at it:

docker run --rm -i \

-e ENGRAM_LLM_PROVIDER=command \ -e ENGRAM_LLM_COMMAND="python /scripts/my-llm.py" \ -v $(pwd)/scripts:/scripts \ -v engram-data:/data \ ghcr.io/jamjet-labs/engram-server:0.3.2

Timeout is 120 seconds by default — override with ENGRAM_LLM_COMMAND_TIMEOUT=30.

Security: the command provider runs arbitrary commands as the Engram process user. Never use it in a multi-tenant deployment where untrusted users can set ENGRAM_LLM_COMMAND. It is a local and single-tenant feature.

Option F — cargo install (all providers same binary)
cargo install jamjet-engram-server

engram serve # ollama (default) ENGRAM_LLM_PROVIDER=anthropic ANTHROPIC_API_KEY=... engram serve ENGRAM_LLM_PROVIDER=command ENGRAM_LLM_COMMAND="python /path/to/wrapper.py" engram serve

Option G — REST mode for testing
engram serve --mode rest --port 9090
curl -X POST http://localhost:9090/v1/memory \

-H 'content-type: application/json' \ -d '{ "user_id": "alice", "messages": [ {"role": "user", "content": "I am allergic to peanuts and I love sourdough."} ] }'

curl 'http://localhost:9090/v1/memory/recall?q=food%20allergies&user_id=alice'

No server. No config. No Python sidecar. One binary.


MCP client configuration

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{

"mcpServers": { "engram": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "engram-data:/data", "ghcr.io/jamjet-labs/engram-server:0.3.2" ] } } }

Cursor / any MCP-aware IDE

Point it at the same docker run command, or at a locally-installed engram serve binary. After restart, eleven tools are available to the model (seven memory_* + four messages_*).


MCP tools

Memory tools (7)
ToolWhat it does
memory_addExtract and store facts from conversation messages (calls the LLM for extraction)
memory_recallSemantic search over stored facts, scoped by user_id / org_id
memory_contextAssemble a token-budgeted context block for an LLM prompt, with tier-aware selection
memory_searchKeyword search over facts (SQLite FTS5 / Postgres full-text)
memory_forgetSoft-delete a fact by ID with an optional reason
memory_statsAggregate counts: total facts, valid facts, entities, relationships
memory_consolidateRun a consolidation cycle — decay stale facts, promote high-value ones, dedup near-duplicates

All scoped by (org_id, user_id, session_id) — org is the coarsest, session the finest.

Message store tools (4)
ToolWhat it does
messages_saveSave chat messages for a conversation (optionally triggers fact extraction)
messages_getGet all messages for a conversation by ID
messages_listList all conversation IDs
messages_deleteDelete all messages for a conversation

REST API

Thirteen endpoints, rooted at /v1/memory. Full OpenAPI-style surface:

MethodPathHandler
GET/healthLiveness probe
POST/v1/memoryAdd messages (fact extraction)
GET/v1/memory/recall?q=…&user_id=…Semantic recall
POST/v1/memory/contextToken-budgeted context assembly
GET/v1/memory/search?q=…&user_id=…Keyword search
GET/v1/memory/statsAggregate statistics
POST/v1/memory/consolidateTrigger consolidation
DELETE/v1/memory/facts/:idForget a fact
DELETE

Only the beginning is shown; read the rest in the repo

Ask PopNx