Skip to main content
ClaudeWave
EN, English
MemPalace / MCP Servers

mempalace

The best-benchmarked open-source AI memory system. And it's free.

  • 59.7k stars
  • 7.6k forks
  • 835 open issues
  • Language: Python
  • License: MIT
  • updated

Install

local · npx
Claude Code CLI
claude mcp add mempalace -- npx -y skills
  1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
  2. Replace any <placeholder> values with your API keys or paths.
  3. Restart Claude. The MCP server and its tools appear automatically.

Editor's note

MemPalace is a local-first MCP server that gives Claude persistent, searchable memory by storing conversation history and project files as verbatim text rather than summaries or paraphrases. It connects to Claude Code and other MCP-compatible clients via stdio, wiring in through a standard JSON-RPC server configuration. The index organizes content into a hierarchical structure of wings (people or projects), rooms (topics), and drawers (original content), enabling scoped semantic search rather than flat-corpus retrieval. The default storage backend is ChromaDB, with additional options for SQLite exact-vector checks, Qdrant (REST), and Postgres with pgvector, all swappable through a common interface defined in `mempalace/backends/base.py`. A standout benchmark result is 96.6% R@5 on LongMemEval with no external API calls, meaning all embedding and retrieval runs entirely on the local machine. The CLI supports mining both project files and Claude Code session directories, and Docker images with optional GPU acceleration via CUDA are also available. Developers and researchers who need reproducible, private conversation context across sessions are the primary audience.

README

MCP Servers overview

Full README on GitHub

MemPalace

Local-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.

[![][version-shield]][release-link] [![][python-shield]][python-link] [![][license-shield]][license-link] [![][discord-shield]][discord-link]

Caution

Beware of impostor sites. MemPalace has no other official websites. The only official sources are this GitHub repository, the PyPI package, and the docs at mempalaceofficial.com. Any other domain (including .tech, .net, or other .com variants) is an impostor and may distribute malware. Details and timeline: docs/HISTORY.md.

Important

Claude Code sessions expire in 30 days without auto-save hooks wired. Read this →

Need the shortest recovery/setup path? Use the Claude Code retention setup checklist.


What it is

MemPalace stores your conversation history as verbatim text and retrieves it with semantic search. It does not summarize, extract, or paraphrase. The index is structured — people and projects become wings, topics become rooms, and original content lives in drawers — so searches can be scoped rather than run against a flat corpus.

The retrieval layer is pluggable. The current default is ChromaDB; the interface is defined in mempalace/backends/base.py and alternative backends can be dropped in without touching the rest of the system.

Nothing leaves your machine unless you opt in.

Architecture, concepts, and mining flows: mempalaceofficial.com/concepts/the-palace.


Install

Agent-guided setup

Install the MemPalace skills first, then ask your coding agent to set up MemPalace. The setup skill detects your system, installs the Python package, configures MCP, and asks whether you want a private local palace, a shared-brain hub, or a client connected to an existing hub:

npx skills add MemPalace/mempalace

The repository exposes three skills: mempalace for guided installation and operations, mempalace-recall for search-before-answer recall, and mempalace-task for logstream delegation. Installing a skill does not by itself install the MemPalace CLI or MCP server; the setup skill guides the agent through those system changes and verifies the live connection.

During guided setup the agent can offer weekly stable-release checks. They are disabled by default, contact only PyPI when enabled, and never install updates automatically. Cached availability appears in scoped mempalace_status fields for the serving runtime and, when a local proxy is present, its client runtime, allowing the agent to explain the release and request authorization before showing an exact upgrade plan. Setup records whether the runtime came from uv tool, pipx, or pip so the plan never proposes an upgrade command for the wrong installation.

Direct CLI setup

MemPalace ships a CLI, so install it in an isolated environment to avoid PEP 668 errors on Debian/Ubuntu/Homebrew Pythons and to keep mempalace's deps (chromadb, numpy, grpcio, …) from conflicting with anything else in your global site-packages.

We recommend uv — uv tool install puts the mempalace CLI in an isolated environment on your PATH:

uv tool install mempalace
mempalace init ~/projects/myapp

pipx works the same way if you prefer it: pipx install mempalace.

Prefer plain pip only inside an activated virtualenv where you explicitly want import mempalace available:

python -m venv .venv && source .venv/bin/activate
pip install mempalace
Android / Termux

Native Termux installation is not currently supported because compiled dependencies such as ChromaDB and ONNX Runtime publish Linux wheels, not Android wheels. Android ARM64 users can run the regular Linux packages in an isolated Debian PRoot container instead. See the Termux installation guide for the tested setup and an argv-preserving launcher.

Docker

A container image is also available for running the MCP server or the CLI without a local Python toolchain. Multi-arch (amd64 + arm64), so it runs natively on Apple Silicon:

docker pull ghcr.io/mempalace/mempalace:latest

Everything persists under /data — palace, config, and the cached embedding model — so mount a volume there and reuse it across runs:

# MCP server over stdio — note the `-i` flag (JSON-RPC needs stdin)
docker run -i --rm -v mempalace-data:/data ghcr.io/mempalace/mempalace

# Run any CLI command instead. The container only sees what you mount, so
# mount the directory you want to mine — read-only is enough, mining never
# writes to the source.
docker run --rm -v mempalace-data:/data -v /path/to/project:/work:ro \
  ghcr.io/mempalace/mempalace mine /work
docker run --rm -v mempalace-data:/data ghcr.io/mempalace/mempalace search "why GraphQL"

The first command that needs embeddings downloads the model into /data (~80 MB for the default minilm, ~300 MB for embeddinggemma). It is a one-off as long as the volume persists, but it does mean the first call is slow and needs network — worth knowing before assuming a hung container.

Wire it into an MCP client (e.g. Claude Code) as a stdio server. Mount anything you want the server to be able to mine — it cannot reach your transcripts otherwise:

{
  "mcpServers": {
    "mempalace": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "mempalace-data:/data",
        "-v", "/absolute/path/to/.claude/projects:/transcripts:ro",
        "ghcr.io/mempalace/mempalace"
      ]
    }
  }
}

Use a real absolute path there — ~ and $HOME are not expanded by every MCP client. Paths are container paths from then on: mine /transcripts, not ~/.claude/projects.

Mount permissions on Linux. The image runs as uid 1000 and bind mounts keep their host ownership, so a mounted directory has to be readable by that uid — an ordinary 0755 checkout is fine, a 0700 directory is not, and the failure surfaces as PermissionError: [Errno 13] rather than anything about Docker. Docker Desktop maps uids on macOS and Windows, so this only bites on Linux. Do not work around it with --user: /data is owned by uid 1000 inside the image, so another uid cannot write the palace at all.

docker compose run --rm mcp works too (see docker-compose.yml), and deploy/docker-compose.server.yml stands up the team server. To build the image yourself instead of pulling — required for the GPU variant, which is not published:

docker build -t mempalace .                                  # CPU
docker build --build-arg EXTRAS="extract,spellcheck" -t mempalace .
docker build -f Dockerfile.gpu -t mempalace:gpu .            # CUDA; run with --gpus all

The GPU image is x86_64-only: onnxruntime-gpu publishes no aarch64 Linux wheels, so that last build fails on an ARM host (including Apple Silicon) with a dependency-resolution error rather than an obvious one.

Note that a build from a clone uses whatever branch you checked out; develop is the default branch, so pull the published image if you want the released version.

Storage backends

ChromaDB is the default and needs no configuration. MemPalace also ships a pluggable backend contract, exercised across deliberately different substrates so the contract is never accidentally shaped around one vendor. Every non-default backend is opt-in.

BackendModeInstallNamespacesLexicalConfigure with
chroma (default)Local (embedded)bundled–✓–
sqlite_exactLocal (exact NumPy)bundled–✓–
rust_exactLocal (native vectors)wheel / compiled–✓–
milvusLocal (Lite) · Server opt-inmempalace[milvus]✓✓MEMPALACE_MILVUS_URI
qdrantServer (REST)bundled✓✓MEMPALACE_QDRANT_URL
pgvectorServer (Postgres)mempalace[pgvector]✓✓MEMPALACE_PGVECTOR_DSN

Select with --backend, MEMPALACE_BACKEND=, or "backend": "" in config.json. rust_exact uses the exact same sqlite_exact.sqlite3 file on disk as sqlite_exact with zero data migration. See native installation and vector CLI usage for the separately distributed wheel and executables.

Native vector search

rust_exact and the standalone mempalace-native CLI scan the same sqlite_exact database with a native Rust engine. The rust_exact adapter falls back to the Python backend for complex filters, requests for returned embeddings, and installs without the native extension; the mempalace-native executable is Rust-only and has no Python fallback. No benchmark figures are published for this release; mempalace-native bench --db measures it on your own data. See crates/ for the core workspace, PyO3 bindings, and native CLI.

Quickstart

# Mine content into the palace
mempalace mine ~/projects/myapp                    # project files
mempalace mine ~/.claude/projects/ --mode convos   # Claude Code sessions (scope with --wing per project)

# Search
mempalace search "why did we switch to GraphQL"

# Load context for a new session
mempalace wake-up

# Score how well organized the palace is (read-only, safe while the MCP server runs)
mempalace audit
Topics
aichromadbllmmcpmemorypython
Frequently asked

What people ask about mempalace

What is MemPalace/mempalace?

MemPalace/mempalace is mcp servers for the Claude AI ecosystem. The best-benchmarked open-source AI memory system. And it's free. It has 59.7k GitHub stars and its last recorded update is dated 2026-10-23.

How do I install mempalace?

You can install mempalace by cloning the repository (https://github.com/MemPalace/mempalace) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is MemPalace/mempalace safe to use?

Our security agent has analyzed MemPalace/mempalace and assigned a Trust Score of 100/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.

Who maintains MemPalace/mempalace?

MemPalace/mempalace is maintained by MemPalace. The last recorded GitHub activity is dated 2026-10-23, with 835 open issues.

Are there alternatives to mempalace?

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

1-click deploy

Deploy mempalace to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Show its Trust Score in your README

The badge shows this repository's current Trust Score and verdict, and links back to this page. It follows the catalogue data: nobody can buy or edit the score it displays.

ClaudeWave Trust Score for MemPalace/mempalace
Markdown (README)
[![ClaudeWave Trust Score for MemPalace/mempalace](https://claudewave.com/api/badge/mempalace-mempalace)](https://claudewave.com/en/repo/mempalace-mempalace)
HTML
<a href="https://claudewave.com/en/repo/mempalace-mempalace"><img src="https://claudewave.com/api/badge/mempalace-mempalace" alt="ClaudeWave Trust Score for MemPalace/mempalace" width="320" height="64"></a>

What the badge means and how the score is computed