Option 1 (Docker, recommended): clone the repository, cd into it, and run docker compose up -d. Migrations run automatically on first start; verify with docker compose exec app memory-vault status. The dashboard is at http://localhost:8000.
Option 2 (no Docker): requires Python 3.11+, PostgreSQL 16 with the pgvector extension, and uv (or pip + venv). Run uv sync, then uv run python -m spacy download en_core_web_sm, then cp .env.example .env and fill in your PostgreSQL credentials, then uv run memory-vault migrate and uv run memory-vault status.
Configure your MCP client: complete the no-Docker setup above first so the memory_vault package is installed, then add the server block shown in install_config to your project's .mcp.json in Claude Code (or ~/.claude/.mcp.json), filling in DB_HOST, DB_PORT, DB_NAME, DB_USER, and DB_PASSWORD. For global availability, also add memory-vault to enabledMcpjsonServers in ~/.claude/settings.json. Verify with claude mcp list — it should show connected. For Claude Desktop, add the same block via Settings → Developer → Edit Config and restart.
Docker users: the MCP server runs on the host (not inside Docker) and connects over the exposed port, so set DB_HOST to 127.0.0.1 and make sure port 5432 is exposed in docker-compose.yml. For remote access over HTTP/SSE, set MCP_HTTP_ENABLED=true; the transport mounts at /api/mcp and clients connect to http://<host>:8000/api/mcp/sse with a bearer token created via memory-vault token create. Declare allowed hostnames with MCP_HTTP_ALLOWED_HOSTS (the list replaces the default, which covers localhost and 127.0.0.1 only).
{
"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"
}
}
}
}