mnemory is a self-hosted Model Context Protocol (MCP) server that gives AI assistants long-term memory. Once a client is connected it starts remembering user preferences, facts, decisions, and context across conversations, without changes to the client's system prompt, and the data stays on your own infrastructure.
Storing runs through one LLM call that extracts individual facts, classifies each by type, category, and importance, and checks them against existing memories for duplicates and contradictions, so a later statement updates an earlier one instead of adding a second entry. Memories are stored as searchable vectors with a configurable time to live — context expires after 7 days and episodic memories after 90 — and frequently accessed memories are reinforced so they stay alive.
Searching generates several queries covering different angles, runs them in parallel, and reranks the results, with temporal awareness for questions such as what you decided last week. Storage is two-tier: short searchable summaries live in the vector store, while longer artifacts such as reports, code, and research are fetched on demand. A three-phase consistency checker detects duplicates, contradictions, quality issues, and prompt injection, run manually or on a schedule with automatic fixes.
The same backend is exposed through 16 MCP tools and a REST API with an OpenAPI specification, and a built-in management UI provides a dashboard, semantic search, a memory browser with full CRUD, a relationship graph, and the health-check interface. Production deployments use Qdrant for vectors and S3 or MinIO for artifacts, with API key or Cognis JWT authentication, per-user isolation, and stateless HTTP for Kubernetes. An OpenAI-compatible API key is needed for the LLM and embedding calls.
On the LoCoMo benchmark — 10 multi-session dialogues with 1,540 questions across four categories, using gpt-5-mini for extraction and text-embedding-3-small for vectors — the published results are:
| System | Single hop | Multi hop | Temporal | Open domain | Overall |
|---|---|---|---|---|---|
| mnemory | 63.1 | 53.1 | 74.8 | 78.2 | 73.2 |
| mnemory (gpt-oss-120b) | 66.3 | 59.4 | 68.5 | 73.8 | 70.5 |
| Memobase | 70.9 | 52.1 | 85.0 | 77.2 | 75.8 |
| Mem0-Graph | 65.7 | 47.2 | 58.1 | 75.7 | 68.4 |
| Mem0 | 67.1 | 51.2 | 55.5 | 72.9 | 66.9 |
| Zep | 61.7 | 41.4 | 49.3 | 76.6 | 66.0 |
| LangMem | 62.2 | 47.9 | 23.4 | 71.1 | 58.1 |
Features
- Single-call extraction: one LLM call extracts facts, classifies metadata, and deduplicates against stored memories
- Contradiction resolution: a later fact that conflicts with an earlier one updates it instead of creating a duplicate
- Two-tier memory: searchable summaries in a vector store, with detailed artifacts retrieved on demand
- Multi-query search: several semantic queries run in parallel and are reranked, with temporal filtering
- Health checks: a three-phase consistency checker for duplicates, contradictions, quality issues, and prompt injection, with scheduled auto-fix
- Client coverage: MCP support for more than 10 clients, with dedicated plugins for automatic recall and remember on several of them
- Management UI: dashboard, semantic search, memory browser with CRUD, relationship graph, and health-check interface
- Dual interface: 16 MCP tools and a full REST API with an OpenAPI specification over the same backend
- Production storage: Qdrant for vectors and S3 or MinIO for artifacts, with per-user isolation and stateless HTTP
- Authentication: API key or Cognis JWT with session-level identity binding, plus anti-injection safeguards in the extraction prompts
- Monitoring: a Prometheus /metrics endpoint with operation counters and memory gauges, plus a prepared Grafana dashboard
- Memory lifecycle: configurable time to live per memory type, with reinforcement for frequently accessed entries
