Memory MCP
The Persistent Memory MCP Server is a local-first, durable project memory system for AI development tools, providing persistent, searchable memory across sessions and clients — so you never have to re-explain your project again.
Project Management
Resolve, create, and list projects with repository and workspace metadata
Generate a concise resume/brief to quickly resume work on a project
Memory Capture & Storage
Save decisions, tasks, warnings, file memory, checkpoints, and session state all in one call (
capture_project_memory)Save individual architectural decisions across interfaces/clients
Store file-level memory including dependencies, roles, and symbols
Save architecture/state checkpoints with tags and blockers
Record reusable prompt patterns and response styles
Task & Session Tracking
Create, update, and track tasks by status and priority
Create and end sessions with automatic summary generation
Sync current working session state with git context
Warnings & Risk Management
Log warnings with configurable severity levels
Retrieve all active warnings for a project
Search & Context Loading
Semantic and lexical search across project memory
Load optimized, unified project context for an AI client
Timeline & Analytics
View a full chronological timeline of project events
Analyze usage statistics broken down by interface/client
Export, Import & Retention
Export project memory as JSON or Markdown bundles
Import memory bundles with optional merging
Apply retention policies to archive or summarize old data
Two-phase confirmed deletion with preview and safety token
Provides a persistent memory layer using Supabase, storing project architecture, decisions, tasks, warnings, preferences, and session state across AI sessions.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Memory MCP Remember that we chose PostgreSQL for the database."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Release status — 2026-08-16: v0.3.0 has a fully validated immutable release candidate, but the public GitHub Release and PyPI publication are still pending. Until PyPI publication is verified, install from this repository instead of assuming
pipx install persistent-memory-mcpis available publicly. See Releasing and Issue #53.
What is Persistent Memory MCP?
Persistent Memory MCP is an open-source Model Context Protocol server that gives coding assistants durable, searchable project memory. It stores architecture, technical decisions, tasks, warnings, repository evidence, checkpoints and continuation state so compatible clients can resume work without reconstructing the project from scratch.
The product is intentionally personal and local-first:
one local installation;
SQLite by default;
localhost-only Dashboard and Galaxy UI;
explicit owner/project isolation;
no automatic execution of repository code;
optional self-managed Supabase/PostgreSQL adapters;
no hosted team workspace, public collaborative dashboard or SaaS role hierarchy.
Related MCP server: Tages
Core capabilities
Capability | What it provides |
Durable project memory | Decisions, tasks, warnings, checkpoints, sessions and file context survive client restarts |
Git-aware context | Bind memory and repository evidence to repository, branch and commit state |
Context Packet v1 | Versioned, provenance-aware context under a hard token budget |
Progressive retrieval | Expand repository map → files → symbols → exact fragments instead of loading whole repos |
Persistent symbol evolution | Track logical symbols across commits, moves and conservative rename matches |
Context-quality gates | Detect retrieval, token-budget, provenance and safety regressions in CI |
Operational map / Galaxy | Inspect bounded owner-scoped project risk and evidence relationships |
Automatic continuation | Persist bounded resume-ready state for close, handoff and idle expiry |
Deterministic pagination | Stable owner/project-scoped keyset pagination with bounded cursors |
Verified backup | WAL-safe SQLite backup with integrity validation and SHA-256 manifest |
Health diagnostics | Read-only SQLite integrity, foreign-key, disk and backup-readiness checks |
Confirmed restore | Preview → signed confirmation → safety backup → atomic restore → verification/rollback |
Versioned migrations | Explicit, backup-first, checksum-verified schema upgrades |
Confirmed deletion | Exact scoped preview plus short-lived single-use confirmation |
Private Dashboard | Localhost-only operational and maintenance UI |
Application composition | Explicit |
Idempotent MCP Tool Registry | Centralized dynamic tool registration/replacement through public MCP APIs |
Quick start
1. Install from the repository
Public PyPI publication is not yet complete. Use the validated source tree for now:
git clone https://github.com/dannymaaz/memory-mcp.git
cd memory-mcp
python -m venv .venv
source .venv/bin/activate # Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e .For a non-editable installation from the repository:
pip install "git+https://github.com/dannymaaz/memory-mcp.git"After v0.3.0 is published and publicly smoke-tested on PyPI, the intended package command is:
pipx install persistent-memory-mcpDo not rely on that PyPI command until Issue #53 records successful public installation evidence.
2. Initialize the local installation
memory-mcp initThe normal local database is:
~/.memory-mcp/memory.db3. Check the installation
memory-mcp doctor
memory-mcp status
memory-mcp healthFor full SQLite integrity validation:
memory-mcp health --full4. Register it in an MCP client
{
"mcpServers": {
"persistent-memory-mcp": {
"command": "memory-mcp",
"env": {
"MEMORY_BACKEND": "sqlite",
"OWNER_ID": "your-stable-local-identifier",
"MEMORY_CONFIRMATION_SECRET": "your-private-confirmation-secret"
}
}
}
}The server uses stdio when launched by an MCP client. It can also be started manually:
memory-mcp serveOptional storage adapters
SQLite is the default and recommended local path. Remote adapters are opt-in and self-managed:
pip install -e ".[supabase]"
pip install -e ".[postgresql]"These adapters do not change the product into a hosted multi-user service.
MCP SDK compatibility
Current post-v0.3 main uses the installed MCP Python SDK v2 MCPServer API and constrains the dependency to:
mcp>=2,<3The runtime has no local MCP fallback. Dynamic tools are registered or replaced through the public MCP v2 add_tool() / remove_tool() APIs, while the existing application-level handler/schema mirrors remain synchronized.
The immutable v0.3.0 release candidate is intentionally separate: it remains pinned to its already validated MCP v1 compatibility state and must not be rebuilt from current main. See MCP SDK compatibility and Issue #53.
Context Compiler
The completed Context Compiler phase adds five evidence-driven layers:
Context Packet + token accounting — PR #60 / Quality #226.
Progressive repository retrieval — PR #62 / Quality #235.
Persistent code provenance/symbol evolution — PR #64 / Quality #250.
Context-quality and adversarial regression gates — PR #66 / Quality #262.
Operational project map / risk-oriented Galaxy — PR #68 / Quality #282.
See:
Data-safety model
Persistent Memory MCP treats destructive local operations as explicit workflows, not hidden maintenance:
migrations are previewed and applied explicitly;
existing stale schemas fail closed on serve rather than auto-migrating;
restore requires a signed plan tied to the exact backup state;
restore creates a verified safety backup immediately before replacement;
deletion requires an exact preview and short-lived single-use confirmation;
backup verification uses SHA-256 manifests without storing memory contents in the manifest;
Dashboard maintenance remains bound to localhost.
See Upgrading, Releasing and Security Policy.
Upgrading from 0.2.0
Version 0.3.0 introduces explicit versioned SQLite migrations. Existing databases are never silently migrated on MCP startup.
Preview first:
memory-mcp-migrate --env ~/.memory-mcp/.envApply only after reviewing the plan:
memory-mcp-migrate --env ~/.memory-mcp/.env --apply --yesThe apply step creates a verified pre-migration backup before mutation. Keep the backup and its JSON manifest until the upgraded installation has been verified.
v0.3.0 release chain
The public v0.3.0 release must be created from the immutable release-only commit:
9e0a084dd9b179612082edef99e1c3c9bf563ffaThat commit was produced by PR #89 after Quality #361 passed the complete Ubuntu/Windows/macOS × Python 3.11–3.13 release matrix, release artifact checks and installed v0.2.0 upgrade validation.
Current main includes later post-v0.3 work — including the MCP v2 runtime migration — and must not be tagged as v0.3.0.
The repository-side PyPI workflow was merged in PR #91 after Quality #368. It requires the future v0.3.0 GitHub Release to resolve exactly to the immutable release commit, downloads its wheel/sdist/SHA256SUMS, verifies them and publishes those exact distributions through PyPI Trusted Publishing without rebuilding them.
Remaining release operations are tracked in Issue #53.
Development validation
The Quality workflow covers:
Ubuntu, Windows and macOS;
Python 3.11, 3.12 and 3.13;
compile and Ruff lint checks;
unit/integration tests;
agent evaluation regressions;
Context Compiler reference gates;
dependency audit including optional extras;
wheel/sdist build and metadata validation;
SHA-256 release checksums;
clean wheel installation;
installed v0.2.0 → candidate upgrade validation.
Run the core local checks with:
python -m compileall persistent_memory_mcp src tests
ruff check .
pytest -qDocumentation
Security
Do not report suspected vulnerabilities in a public issue. Follow SECURITY.md for private reporting guidance.
Contributing
Contributions are welcome when they preserve the local-first safety boundary and include appropriate deterministic tests. See CONTRIBUTING.md.
License
MIT — see LICENSE.
Available Tools
22 toolsadd_warningC
Registra advertencias inteligentes.
Inputs: project_id, message, severity, owner_id, +1 more. Returns: object
apply_retention_policyC
Aplica politicas de retencion y archivo.
Inputs: project_id, owner_id, keep_recent_sessions, keep_recent_decisions, +2 more. Returns: object
capture_project_memoryC
Guarda automaticamente decisiones, tareas, checkpoints, archivos y estado en una sola llamada.
Inputs: project_id, owner_id, summary, what_was_done, +13 more. Returns: object
create_projectC
Crea un proyecto con metadata de repo y workspace.
Inputs: name, slug, description, owner_id, +4 more. Returns: object
create_sessionC
Crea una sesion y guarda contexto git.
Inputs: project_id, interface, model_name, owner_id, +2 more. Returns: object
end_sessionC
Finaliza una sesion y genera resumen automatico.
Inputs: session_id, project_id, owner_id, completed_work, +3 more. Returns: object
export_memory_bundleC
Exporta memoria a JSON o Markdown.
Inputs: project_id, owner_id, format. Returns: object
get_active_warningsC
Lista advertencias activas.
Inputs: project_id, owner_id. Returns: object
get_interface_analyticsD
Resume uso por interfaz.
Inputs: project_id, owner_id. Returns: object
get_project_timelineC
Devuelve la linea de tiempo del proyecto.
Inputs: project_id, owner_id, limit. Returns: object
import_memory_bundleC
Importa memoria desde JSON o diccionario.
Inputs: payload (required), owner_id, project_id, merge. Returns: object
list_projectsC
Lista proyectos del owner o workspace actual.
Inputs: owner_id, workspace_id. Returns: object
load_unified_contextD
Carga contexto persistente optimizado.
Inputs: project_id, interface, owner_id, repo_path, +1 more. Returns: object
resolve_projectD
Resuelve o crea un proyecto automaticamente.
Inputs: project_id, owner_id, repo_path, repo_url, +5 more. Returns: object
resume_projectC
Devuelve un resumen listo para retomar el proyecto.
Inputs: project_id, owner_id. Returns: object
save_checkpointC
Guarda checkpoints de arquitectura y estado.
Inputs: title (required), functional_state (required), project_id, owner_id, +5 more. Returns: object
save_cross_interface_decisionC
Guarda decisiones compartidas entre interfaces.
Inputs: project_id, summary, details, interface, +6 more. Returns: object
save_file_memoryC
Guarda memoria por archivo y relaciones.
Inputs: file_path (required), summary (required), project_id, owner_id, +5 more. Returns: object
save_prompt_patternC
Guarda prompts utiles y patrones de respuesta.
Inputs: title (required), prompt (required), project_id, owner_id, +4 more. Returns: object
search_semantic_memoryC
Busca memoria por significado o texto.
Inputs: query (required), project_id, owner_id, query_embedding, +2 more. Returns: object
sync_session_stateD
Sincroniza el estado de sesion.
Inputs: session_id, project_id, state, owner_id, +1 more. Returns: object
update_task_statusC
Crea o actualiza tareas del proyecto.
Inputs: task_id, project_id, status, owner_id, +4 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
Most tools are clearly distinct, but 'resolve_project' and 'create_project' have overlapping functionality (resolve auto-creates), and several save tools (capture_project_memory, save_file_memory, etc.) could be confused without reading descriptions.
All tool names follow a consistent verb_noun pattern with underscores, using clear Spanish verbs and nouns. No mixing of conventions or unclear abbreviations.
22 tools is on the high end of the acceptable range. Each tool has a defined purpose, but the count feels slightly heavy for a memory management system. Could be streamlined by merging some similar save functions.
Covers core operations: create/list/resume projects, session management, memory storage, search, import/export, and warnings. Minor gaps: no explicit delete or update tools for projects or memory items, but the existing tools cover most workflows.
Maintenance
Related MCP Connectors
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Shared AI memory. ChatGPT, Claude, Cursor and any MCP app read and write the same memory.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that stores project memory in Supabase, allowing AI tools to persist context, notes, and decisions across sessions. Enables Claude Code, Codex, and similar assistants to maintain long-term project continuity through persistent memory storage.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to maintain persistent, cross-session memory of codebase architecture, naming conventions, and decisions through MCP tools. Eliminates repetitive project re-explanation by automatically injecting stored context into every session with local-first SQLite storage and optional team sharing capabilities.4MIT
- AlicenseNot gradedqualityDmaintenancePersistent memory for AI coding agents. Enables agents to save and recall decisions, patterns, bugs, and context across sessions via an MCP server with local SQLite storage.16 npm2MIT
- AlicenseBqualityBmaintenancePersistent, local memory for AI coding agents that learns how you work, not just what you said. Supports Claude Code, Codex CLI, Cursor, and any MCP client.79115 PyPI75MIT