# engram-server

Persists conversational facts into a temporal graph with hybrid search. Agents keep long-term context across sessions using SQLite or PostgreSQL storage.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 23
- Author: jamjet-labs
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/jamjet-labs/jamjet/tree/HEAD/runtime/engram-server
- Updated: 2026-10-11
- HTML: https://affpapa.org/en/nevibecode/mcp/engram-server

## What it does

The server runs as a standalone Rust binary providing MCP tools over stdio and HTTP REST. An extraction pipeline handles conversations. It isolates structured facts and records timestamps. Queries retrieve records through vector similarity alongside SQLite FTS5 text matching.

Fact parsing relies on an LLM backend. The default setup targets local Ollama, avoiding cloud API calls entirely. Setting `ENGRAM_LLM_PROVIDER` routes requests to Anthropic Claude, Google Gemini, or OpenAI-compatible gateways. Backing storage stays in SQLite or PostgreSQL.

Docker on Linux with local Ollama requires `--add-host=host.docker.internal:host-gateway`. Without this flag, Docker blocks communication with the host machine. Local models become unreachable.

## Requirements
- Needs: Docker

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add engram-server -- docker run -i --rm ghcr.io/jamjet-labs/engram-server:0.5.0
```

### Codex

**Platform CLI**
```bash
codex mcp add engram-server -- docker run -i --rm ghcr.io/jamjet-labs/engram-server:0.5.0
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "engram-server": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/jamjet-labs/engram-server:0.5.0"
            ]
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "engram-server": {
            "type": "stdio",
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/jamjet-labs/engram-server:0.5.0"
            ]
        }
    }
}
```

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add engram-server docker run -i --rm ghcr.io/jamjet-labs/engram-server:0.5.0
```

## When to use it
- Retain conversation facts and context across separate agent runs
- Combine keyword FTS5 queries with vector retrieval in one search
- Resolve contradictions and consolidate changing knowledge over time
- Partition stored facts by user, organization, or session scope

## Example prompts
- Remember that we migrated the testing database to PostgreSQL 16.
- Search memory for previous configuration choices regarding our staging server.
- Look up stored facts for the dev-admin session and update outdated entries.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
