MemoryVault
FreeNot checkedA self-hosted, graph-aware memory server for AI assistants that provides persistent memory across sessions with hybrid search and knowledge graph capabilities.
About
A self-hosted, graph-aware memory server for AI assistants that provides persistent memory across sessions with hybrid search and knowledge graph capabilities.
README
A self-hosted, graph-aware memory server for AI assistants. Built on Cloudflare Workers + D1.
MemoryVault gives AI clients (Claude, ChatGPT, etc.) persistent memory across sessions via the Model Context Protocol (MCP). Store notes, facts, and journal entries. Link related memories into a knowledge graph. Search with hybrid lexical + semantic retrieval.
Features
- 40+ MCP tools — memory CRUD, graph linking, conflict detection, objectives, snapshots, and more
- Hybrid search — lexical + semantic (Vectorize + Workers AI embeddings) with RRF fusion
- Knowledge graph — typed relationships, path finding, neighborhood traversal, inferred links
- Multi-tenant — user accounts with isolated "brains" and per-brain policies
- OAuth + PKCE — standards-based auth for MCP clients, plus legacy bearer token fallback
- Web viewer — browse memories, explore the graph, manage settings at
/view - 6 themes — cyberpunk, light, midnight, solarized, ember, arctic
- Zero external dependencies at runtime (just @modelcontextprotocol/sdk and zod)
Quick Start
- Clone and install
git clone https://github.com/guirguispierre/memoryvault.git
cd memoryvault
npm install
- Configure secrets
cp .dev.vars.example .dev.vars
# Edit .dev.vars with your own secrets
- Set up Cloudflare resources
# Create D1 database
npx wrangler d1 create ai-memory
# Update wrangler.toml with your database_id
# Create KV namespace for rate limiting
npx wrangler kv namespace create RATE_LIMIT_KV
# Update wrangler.toml with the KV namespace id
# Create Vectorize indexes (for semantic search)
npx wrangler vectorize create ai-memory-semantic-v1 --dimensions=768 --metric=cosine
- Initialize database schema
npx wrangler d1 execute ai-memory --local --file=schema.sql
- Run locally
npm run dev
Deploy to Production
# Set secrets
npx wrangler secret put AUTH_SECRET
npx wrangler secret put ADMIN_TOKEN
# Apply schema to remote D1
npx wrangler d1 execute ai-memory --remote --file=schema.sql
# Deploy
npm run deploy
Configuration
| Variable | Required | Description |
|---|---|---|
AUTH_SECRET |
Yes | Signs JWTs and secures legacy bearer auth |
ADMIN_TOKEN |
Yes | Required for POST /register (OAuth client registration) |
OAUTH_REDIRECT_DOMAIN_ALLOWLIST |
No | Comma-separated hostnames for OAuth redirect URIs. localhost and 127.0.0.1 are always allowed |
MCP Integration
Point your MCP client to:
https://<your-worker>.<your-subdomain>.workers.dev/mcp
OAuth mode (recommended): Leave the API key empty. The server responds with OAuth discovery metadata. Your client handles the flow automatically.
Legacy bearer mode: Send Authorization: Bearer <AUTH_SECRET> for simple setups.
Architecture
| Module | Purpose |
|---|---|
src/index.ts |
Worker entry point and HTTP routing |
src/types.ts |
Shared TypeScript types |
src/constants.ts |
Configuration constants |
src/utils.ts |
Pure utility functions |
src/crypto.ts |
PBKDF2, JWT, HMAC utilities |
src/cors.ts |
CORS and security headers |
src/db.ts |
D1 queries and schema migration |
src/auth.ts |
Session management and auth endpoints |
src/oauth.ts |
OAuth protocol (authorization, token, registration) |
src/vectorize.ts |
Semantic search and Vectorize integration |
src/scoring.ts |
Dynamic confidence/importance scoring |
src/tools-schema.ts |
MCP tool definitions and metadata |
src/tools.ts |
MCP tool handler implementations |
src/viewer.ts |
Web viewer UI (/view) |
src/routes.ts |
API and HTML route handlers |
Tech stack: Cloudflare Workers, D1 (SQLite), Vectorize, Workers AI (@cf/baai/bge-base-en-v1.5), MCP SDK
Available MCP Tools
Memory operations: memory_save, memory_get, memory_get_fact, memory_search, memory_list, memory_update, memory_delete, memory_reindex, memory_stats
Graph: memory_link, memory_unlink, memory_links, memory_link_suggest, memory_path_find, memory_subgraph, memory_neighbors, memory_graph_stats, memory_tag_stats
Knowledge management: memory_consolidate, memory_forget, memory_activate, memory_reinforce, memory_decay, memory_conflicts, memory_conflict_resolve, memory_entity_resolve
Trust & policy: memory_source_trust_set, memory_source_trust_get, brain_policy_set, brain_policy_get
Snapshots: brain_snapshot_create, brain_snapshot_list, brain_snapshot_restore
Objectives: objective_set, objective_list, objective_next_actions
Observability: memory_changelog, memory_watch, memory_explain_score, tool_manifest, tool_changelog
Development
npm run dev # Start local worker
npm run type-check # TypeScript check
npm run deploy # Deploy to Cloudflare
Smoke test:
ADMIN_TOKEN=... npm run smoke:oauth-isolation
Notes:
- Semantic search requires Workers AI/Vectorize bindings — use
npx wrangler dev --remotefor full functionality - Local dev uses
--localD1 by default
Contributing
See CONTRIBUTING.md.
License
Installing MemoryVault
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/guirguispierre/memoryvaultFAQ
Is MemoryVault MCP free?
Yes, MemoryVault MCP is free — one-click install via Unyly at no cost.
Does MemoryVault need an API key?
No, MemoryVault runs without API keys or environment variables.
Is MemoryVault hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install MemoryVault in Claude Desktop, Claude Code or Cursor?
Open MemoryVault on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare MemoryVault with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
