Skip to main content
ClaudeWave

A local-first AI memory system with hybrid search, MCP integration, and a knowledge graph.

MCP ServersOfficial Registry60 stars13 forksPythonMITUpdated today
ClaudeWave Trust Score
95/100
Verified
Passed
  • Open-source license (MIT)
  • Actively maintained (<30d)
  • Clear description
  • Topics declared
  • Documented (README)
Last scanned: 8/24/2026
Install in Claude Code / Claude Desktop
Method: pip / Python · -e
Claude Code CLI
claude mcp add memory-vault -- python -m -e
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "memory-vault": {
      "command": "python",
      "args": ["-m", "spacy"]
    }
  }
}
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.
💡 Install first: pip install -e
Use cases

MCP Servers overview

# Memory Vault

[![Tests](https://github.com/MihaiBuilds/memory-vault/actions/workflows/test.yml/badge.svg)](https://github.com/MihaiBuilds/memory-vault/actions/workflows/test.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
[![Latest Release](https://img.shields.io/github/v/release/MihaiBuilds/memory-vault)](https://github.com/MihaiBuilds/memory-vault/releases/latest)
[![Docker Image](https://ghcr-badge.egpl.dev/mihaibuilds/memory-vault/latest_tag?trim=major&label=docker)](https://github.com/MihaiBuilds/memory-vault/pkgs/container/memory-vault)
[![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-brightgreen)](https://registry.modelcontextprotocol.io/?q=mihaibuilds)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)

**The memory database for AI applications.** Self-hosted Postgres + pgvector with hybrid search, MCP-native, and a knowledge graph baked in.

Every conversation with Claude or ChatGPT starts from zero. No memory of what you built last week, what decisions you made last month, what problems you've already solved. You either re-explain everything from scratch, or paste in a wall of context and hope it fits in the window.

Memory Vault is the persistent layer underneath. It stores what you want your AI to remember — decisions, conversations, notes, project context — in a single Postgres database with hybrid semantic + keyword search. Claude can recall and store memories during any session via MCP, you can chat with your own memories through a local LLM, or you can build your own AI tool on top of the REST API.

---

![Memory Vault chat with sources](docs/images/chat-with-sources.png)

> _Chat with your vault using a local LLM. Every answer shows the exact memories it was grounded in — click any source to verify._

---

## Status

**v1.0 — released 2026-05-07.** First stable release of Memory Vault. M1-M7 (hybrid search, Docker, MCP, REST API, dashboard, knowledge graph, local LLM chat) all shipped and stable.

See [CHANGELOG.md](CHANGELOG.md) for the full per-release history, or [GitHub Releases](https://github.com/MihaiBuilds/memory-vault/releases) for the platform-native view.

Semver from here forward — the public surface (REST API endpoints, MCP tool signatures, DB schema) is stable. Breaking changes only on a major version bump.

---

## Quick Start (Docker)

```bash
git clone https://github.com/MihaiBuilds/memory-vault.git
cd memory-vault
docker compose up -d
```

That's it. PostgreSQL + pgvector + Memory Vault, running and ready. Migrations run automatically on first start.

```bash
# Check it's working
docker compose exec app memory-vault status

# Ingest a file
docker compose exec app memory-vault ingest /path/to/file.md --space default

# Search
docker compose exec app memory-vault search "your query here"
```

Data persists in a Docker volume — `docker compose down` and `up` again, your memories are still there.

Open `http://localhost:8000` in your browser to use the dashboard (Chat, Search, Browse, Graph, Ingest, Stats).

> **Windows users:** clone into WSL2, not a Windows path, and read [docs/windows.md](docs/windows.md) if you hit a line-ending error.

---

## No-Docker quick start

If you prefer running without Docker:

### Prerequisites

- Python 3.11+
- PostgreSQL 16 with [pgvector](https://github.com/pgvector/pgvector) extension
- [uv](https://docs.astral.sh/uv/) (recommended) or `pip` + `venv`

### Setup with uv (recommended)

```bash
# Clone
git clone https://github.com/MihaiBuilds/memory-vault.git
cd memory-vault

# Create virtual environment and install dependencies
uv sync

# Install the spaCy language model
uv run python -m spacy download en_core_web_sm

# Configure
cp .env.example .env
# Edit .env with your PostgreSQL credentials

# Run migrations
uv run memory-vault migrate

# Verify
uv run memory-vault status
```

### Setup with pip + venv (fallback)

If you don't want to install `uv`, plain `pip` + `venv` works too:

```bash
# Clone
git clone https://github.com/MihaiBuilds/memory-vault.git
cd memory-vault

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -e .

# Install the spaCy language model
python -m spacy download en_core_web_sm

# Configure
cp .env.example .env
# Edit .env with your PostgreSQL credentials

# Run migrations
memory-vault migrate

# Verify
memory-vault status
```

### Usage

If you set up with `uv`, prefix commands with `uv run` (e.g. `uv run memory-vault search ...`). If you used `pip + venv`, activate the venv first (`source .venv/bin/activate`) and run commands directly:

```bash
# Ingest a file
memory-vault ingest notes.md --space default

# Search memories
memory-vault search "hybrid search architecture" --limit 5

# Check status
memory-vault status
```

---

## Features

- **Hybrid search** — semantic similarity + keyword matching combined, so you find the right memory even when you don't remember the exact words
- **MCP integration** — four tools (`recall`, `remember`, `forget`, `memory_status`) that Claude can use natively during any session
- **Local LLM chat** — query your own memories through LM Studio without sending anything to the cloud, with sources shown for every answer
- **Knowledge graph** — entities and relationships extracted automatically, connections between things emerge over time
- **Memory spaces** — separate namespaces for different projects or domains
- **REST API** — integrate AI memory into any application
- **One-command setup** — `docker compose up` and it's running
- **Self-hosted** — your data stays on your machine, always

---

## Architecture

![Memory Vault architecture](docs/images/architecture.png)

> _Postgres + pgvector at the core. The same memory layer is reachable from MCP (Claude), the dashboard chat page, the REST API, and any app you build on top._

Three things are deliberate about this stack:

- **One database, not two.** Vector embeddings, full-text indexes, and relational data all live in Postgres. No separate vector DB to keep in sync.
- **Frontend-agnostic.** The dashboard is one consumer of the API, not the API itself. MCP, REST, CLI, and your own apps are equal first-class clients.
- **CPU-only by default.** No GPU required. Embeddings (sentence-transformers) and entity extraction (spaCy) both run on a normal laptop.

---

## Tech Stack

- **PostgreSQL 16 + pgvector** — vector storage and hybrid search in one database
- **Python 3.11+** — async backend with psycopg 3
- **sentence-transformers** — `all-MiniLM-L6-v2` embeddings (384-d, runs on CPU)
- **spaCy** — `en_core_web_sm` for entity extraction (CPU-only, no LLM calls)
- **FastAPI** — REST API with bearer auth, rate limiting, and OpenAPI docs
- **React 19 + Vite + TanStack Query** — web dashboard, baked into the main Docker image
- **Cytoscape.js + cose-bilkent** — force-directed knowledge graph rendering on the dashboard
- **Docker** — one-command deployment with `docker compose up`
- **MCP** — Claude integration via FastMCP (stdio transport)

---

## MCP Integration (Claude Desktop & Claude Code)

Memory Vault exposes four tools via the [Model Context Protocol](https://modelcontextprotocol.io/) so Claude can read and write memories during any conversation.

### Tools

| Tool | Description |
|------|-------------|
| `recall` | Search memories with hybrid search (vector + full-text + RRF) |
| `remember` | Store a new memory — auto-classified and embedded |
| `forget` | Soft-delete a memory by chunk ID |
| `memory_status` | Database health, chunk counts, embedding model info |

### Resources

| Resource | Description |
|----------|-------------|
| `memory://spaces` | List all memory spaces with chunk counts |
| `memory://stats` | Current system statistics |

### Setup — Claude Code

Make sure you've completed the [No-Docker quick start](#no-docker-quick-start) above (uv sync or pip install, plus the spaCy model download) so the `memory_vault` package is installed.

**Project scope** — add to your project's `.mcp.json`:

```json
{
  "mcpServers": {
    "memory-vault": {
      "command": "/path/to/memory-vault/.venv/bin/python",
      "args": ["-m", "memory_vault.mcp"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_NAME": "memory_vault",
        "DB_USER": "memory_vault",
        "DB_PASSWORD": "memory_vault"
      }
    }
  }
}
```

**Global scope** — to make memory-vault available in every Claude Code session, add the same server block to `~/.claude/.mcp.json`, then add `memory-vault` to `enabledMcpjsonServers` in `~/.claude/settings.json`:

```json
{
  "enabledMcpjsonServers": ["memory-vault"]
}
```

Verify with `claude mcp list` — `memory-vault` should show `connected`.

### Setup — Claude Desktop

Add the same server block to Claude Desktop's config (`Settings → Developer → Edit Config`), then restart Claude Desktop.

### Docker Users

If you're running Memory Vault via Docker, use `DB_HOST: "127.0.0.1"` and make sure port 5432 is exposed in your `docker-compose.yml`:

```json
{
  "mcpServers": {
    "memory-vault": {
      "command": "/path/to/memory-vault/.venv/bin/python",
      "args": ["-m", "memory_vault.mcp"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "5432",
        "DB_NAME": "memory_vault",
        "DB_USER": "memory_vault",
        "DB_PASSWORD": "memory_vault"
      }
    }
  }
}
```

> The MCP server runs on the host (not inside Docker) and connects to the PostgreSQL container over the exposed port.

### Verify It Works

Once configured, Claude will have access to the memory tools. Try:

> "Use memory_status to check the memory system."

> "Remember that we chose Redis for the session cache."

> "Recall everything about hybrid search."

### Troub
ai-memoryclaudehybrid-searchknowledge-graphmcpopen-sourcepgvectorpostgresragself-hosted

What people ask about memory-vault

What is MihaiBuilds/memory-vault?

+

MihaiBuilds/memory-vault is mcp servers for the Claude AI ecosystem. A local-first AI memory system with hybrid search, MCP integration, and a knowledge graph. It has 60 GitHub stars and its last recorded update is dated 2026-08-24.

How do I install memory-vault?

+

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

Is MihaiBuilds/memory-vault safe to use?

+

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

Who maintains MihaiBuilds/memory-vault?

+

MihaiBuilds/memory-vault is maintained by MihaiBuilds. The last recorded GitHub activity is dated 2026-08-24, with 9 open issues.

Are there alternatives to memory-vault?

+

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

Deploy memory-vault to your cloud

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

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: MihaiBuilds/memory-vault
[![Featured on ClaudeWave](https://claudewave.com/api/badge/mihaibuilds-memory-vault)](https://claudewave.com/repo/mihaibuilds-memory-vault)
<a href="https://claudewave.com/repo/mihaibuilds-memory-vault"><img src="https://claudewave.com/api/badge/mihaibuilds-memory-vault" alt="Featured on ClaudeWave: MihaiBuilds/memory-vault" width="320" height="64" /></a>

More MCP Servers

memory-vault alternatives