Mnemo - Persistent AI Memory
Mnemo is a persistent AI memory MCP server for storing, searching, organizing, and maintaining memories with hybrid retrieval and archival features.
Add new memories with content, category, and tags.
Search memories by natural-language query, with optional category/tag filters and limits.
List and browse memories by category.
Update existing memories by ID, including content, category, tags, source, and importance.
Delete memories by ID.
Export all memories as JSONL and import memories from JSONL or object lists.
View database statistics, categories, and embedding status.
Archive, list archived memories, and restore archived memories.
Consolidate similar memories in a category using LLM-backed summarization.
Use the deprecated
memorydispatcher for legacy workflows, including typed capture, hybrid search, temporalas_of, entity search, entity graph, history, compression, and archive sweeps.Configure server status, settings, model warmup, and embedding backfill via the
configtool.Access built-in help documentation and a relay configuration helper.
Supports syncing persistent memory data across multiple machines using Dropbox as a remote storage provider.
Utilizes Google's Gemini embedding models to provide cloud-based semantic search capabilities for stored memories.
Enables automatic synchronization of memory databases across multiple instances using Google Drive via rclone.
Integrates with OpenAI's embedding models to enable high-quality semantic search and vector-based retrieval of facts and preferences.
Uses an embedded and managed rclone subprocess to facilitate automatic, multi-machine synchronization of memory files.
Mnemo MCP Server
Distribution & CLI: the repo and CLI are
mnemo. The PyPI distribution isn24q02m-mnemo(installpip install n24q02m-mnemo/uvx n24q02m-mnemo). The MCP server remains available: runmnemo(or legacymnemo-mcp).
mcp-name: io.github.n24q02m/mnemo
Persistent AI memory with hybrid search. Open, free, unlimited.
Project | Tagline | Tag |
Knowledge graph for token-efficient code reviews -- semantic search and call-... | MCP | |
2-way Google Drive sync with .driveignore filter — rclone engine, Windows tray | Tooling | |
IMAP/SMTP email for AI agents -- read, send, organize folders, and manage att... | MCP | |
Composite MCP server for Godot Engine -- 17 composite tools for AI-assisted g... | MCP | |
Markdown-first Notion for AI agents -- pages, databases, blocks, and comments... | MCP | |
Drop-in python-semantic-release fork with built-in release-safety guards (orp... | Tooling | |
Telegram for AI agents -- messages, chats, media, and contacts across both bo... | MCP | |
Google Workspace MCP server (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch... | MCP | |
Claude Code plugin marketplace for the n24q02m MCP servers -- install web sea... | Marketplace | |
Image and video understanding + generation for AI agents -- across Gemini, Op... | MCP | |
Chrome Extension for bulk operations on Jules tasks via batchexecute API -- a... | Tooling | |
Shared foundation for building MCP servers -- Streamable HTTP transport, OAut... | MCP | |
Persistent AI memory with hybrid search and embedded sync. Open, free, unlimi... | MCP | |
Multi-model retrieval runtime for ONNX/GGUF embeddings and reranking | Library | |
Secrets without the server. | CLI | |
A self-distilling neuro-symbolic cascade that amortises LLM cost across knowl... | Tooling | |
Shared web infrastructure package for search, scraping, HTTP security, and st... | Library | |
Open-source MCP server for AI agents: web search, content extraction, and lib... | MCP |
Table of contents
Related MCP server: Better Notion MCP
Roadmap (current = Phase 3 / v2.x)
Phase rows below describe the pre-de-host design history (v1.x / early v2): multi-provider LLM dispatch, GDrive/S3 passport sync, and Cloudflare deployment were removed in the 2026-09 de-host. Current architecture: one local SQLite store (WAL), per-task
[models.*]provider cells (OpenRouter pre-wired default), no embedded sync (backup = rclone).
Phase | Version | Status | Highlights |
Phase 1 | v1.x | Shipped | Typed |
Phase 2 | v1.x+1 | Shipped, partially removed | LLM-driven compression of older memories (kept, now via |
Phase 3 | v2.0.0 | Shipped (BREAKING) | Temporal knowledge graph -- bitemporal |
Features
Hybrid retrieval -- FTS5 + vector search (sqlite-vec), fused via Reciprocal Rank Fusion (k=60), then re-ranked via the
[models.rerank]provider cell (OpenRouter pre-wired default) with the local Fastretrieval Qwen3 cross-encoder as fallback, plus temporal decay and importance boostTyped capture --
memory(action="capture")with 6 context_types (conversation/fact/preference/skill/task/decision), embedding-based dedup, and optional[models.chat]-cell compression + importance scoringKnowledge graph -- Automatic entity extraction and relation tracking; top results boosted by graph proximity
Importance scoring + archive policy -- LLM-scored 0.0-1.0 importance; soft-archive when
recency_factor * (1 - importance) > 1.0; restore action availableAuto-archive trigger -- Background sweep every Nth capture (default 100) -- no cron required
STM-to-LTM consolidation -- LLM summarization of related memories in a category
Duplicate detection -- Warns before adding semantically similar memories
Zero config -- Fastretrieval's built-in local registry resolves Qwen3 ONNX embedding + reranking, no API keys needed. Optional cloud calls go through per-task
[models.<task>]provider cells (OpenAI-spec; OpenRouter pre-wired default)Local-first storage -- one SQLite file (WAL) under
~/.mnemo/; backup and cross-machine migration =rcloneoutside the server (no embedded sync)Plugin trinity -- Ships
/recall-context+/memory-commitskills and SessionStart + opt-in PostToolUse hooks (see docs/ARCHITECTURE.md)Proactive memory -- Tool descriptions and skills guide AI to save preferences, decisions, facts at the right moment
LLM compression -- Per-turn compression through the
[models.chat]provider cell targets ~3x token reduction at >=0.9 fact retention; graceful skip when the cell is unconfigured (see docs/compression.md)Temporal knowledge graph -- Bitemporal columns (
valid_from/valid_to/superseded_by) on every memory + entity-resolution dedup (embedding KNN at default 0.85 cosine threshold) + audit trail (memory_audittable with prev/new state hashes) + new actions (entity_search/entity_graph/history/as_of) + opt-inKG_AUTO_ENABLEDauto-extract on capture. BREAKING for clients that calledmemory.getexpecting historical-inclusive results: passas_offor time-travel; default now filters to current-state (valid_to IS NULL).
Quick install
# Method 1: Claude Code plugin (skills + hooks; connects to a running
# mnemo HTTP instance -- start one per "Self-hosting" below)
/plugin marketplace add n24q02m/claude-plugins
/plugin install mnemo@n24q02m-plugins
# Method 2: run the HTTP server yourself and register the endpoint
uvx n24q02m-mnemo # serves http://127.0.0.1:8000/mcp by default
claude mcp add --transport http mnemo http://127.0.0.1:8000/mcp
# Method 3 (remote): point a client at an existing HTTP deployment
claude mcp add --transport http mnemo https://<your-host>/mcpInstall matrix (the server speaks Streamable HTTP only — there is no stdio transport post-de-host; see the Setup page for full steps):
Client | Install |
Claude Code (plugin) |
|
Claude Code (HTTP) | start the server ( |
Codex / Gemini CLI / Cursor / Windsurf | start the server, then register the |
Any MCP client | point it at the |
With auth = "token" or "multi" configured in mnemo-config/config.toml,
send the token as a Bearer credential (--header "Authorization: Bearer <token>"
or the client's equivalent).
Comparison vs. peers
Feature | mnemo | Mem0 | Letta | OpenMemory |
Hybrid retrieval (FTS + vec) | yes (FTS5 + RRF + sqlite-vec) | yes | partial | yes |
Cross-encoder rerank | yes (Fastretrieval Qwen3 local + | partial (Cohere only) | no | no |
Temporal decay scoring | yes (exp half-life) | no | no | no |
Importance boost in rank | yes (LLM 0.0-1.0) | no | no | no |
Soft-archive + restore policy | yes (importance x recency) | no | no | no |
Self-hostable (single SQLite file) | yes (zero ext deps) | partial (cloud-first) | yes (Postgres) | yes (Postgres + Qdrant) |
LLM dispatch | yes ( | partial | yes | partial |
Plugin trinity (skills + hooks) | yes (recall-context + memory-commit) | n/a | n/a | n/a |
Cross-machine migration | yes (rclone backup/restore outside the server) | yes (cloud) | n/a | n/a |
LLM compression on capture | yes ([models.chat] cell, ~3x at >=0.90 retention) | no | no | no |
Bitemporal | yes ( | no | partial (events only) | no |
Entity resolution via embedding KNN | yes (cosine threshold tunable) | no | no | no |
Audit trail with state hashes | yes ( | no | no | no |
Status
2026-09 -- De-host update
The Cloudflare D1/Vectorize/KV deployment mode, embedded GDrive/S3 passport sync, multi-provider key dispatch (per-provider API-key env vars + model chains), and the stdio transport were removed. mnemo now runs one HTTP MCP endpoint on a local SQLite (WAL) store, and all cloud calls go through per-task
[models.*]provider cells (OpenRouter pre-wired default). Backup across machines =rcloneoutside the server.If you encountered issues with prior versions, update to the latest release and follow the current setup docs.
MCP registry note (2026-10): registry version 2.20.0 was published with a stdio PyPI package claim (
uvx mnemo-mcp) that no longer reflects the product: post-de-host, mnemo speaks Streamable HTTP only — self-hosted, no public URL. Registry versions are immutable, so the stale stdio claim cannot be edited in place; the registry entry stays wrong until the owner de-lists it or republishes as 2.20.1.server.jsonin this repo now declares the package's true transport (streamable-http, default local endpoint), so the next publish carries correct metadata.Related plugins from the same author:
wet-mcp -- Web search + content extraction
imagine-mcp -- Image/video understanding + generation
better-notion-mcp -- Notion API
better-email-mcp -- Email management
better-telegram-mcp -- Telegram
better-godot-mcp -- Godot Engine
better-code-review-graph -- Code review knowledge graph
All plugins share the same architecture -- install once, learn pattern transfers.
Documentation
Full docs at docs.n24q02m.com/servers/mnemo/setup/:
Setup -- install methods for Claude Code, Codex, Gemini CLI, Cursor, Windsurf, mcp.json
Modes overview -- http
Multi-user setup -- per-JWT-sub credential model
Install with AI agent -- paste this to your AI coding agent:
Install MCP server
mnemo-mcpfollowing the steps at https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/mnemo/setup-with-agent.md
Smithery
mnemo was previously packaged for Smithery via a
local stdio start command. Post-de-host the server is HTTP-only, so the local
smithery.yaml was removed; publish a running instance's https://<host>/mcp
endpoint to Smithery as a remote server instead.
Tools
13 MCP tools, 18 memory actions. The memory surface is exposed as 11
specialized single-purpose tools, the deprecated legacy memory dispatcher
(same actions), and config:
Tool | Actions | Description |
| (one action each) | Specialized single-purpose memory tools -- the recommended surface |
|
| Core CRUD + typed capture (6 context_types) + hybrid search (RRF + rerank + temporal decay) + import/export + soft-archive + restore + on-demand archive sweep + LLM consolidation + LLM compression + temporal KG (entity search / graph / history / as_of) |
|
| Server status, update runtime settings, pre-download embedding model, backfill missing embedding vectors |
Plugin trinity (Claude Code marketplace install):
Component | Trigger | Purpose |
| session start, before significant decisions, "what do I know about X?" | Pulls cwd / topic-relevant memories with |
| "remember this" / "save this" / "ghi nho" / "luu lai" | Typed manual capture with |
| periodic / "audit memory" | Find duplicates, contradictions, stale entries; consolidate |
| end of session | Capture decisions / preferences / corrections / conventions / open questions |
| "as of" / "back in" / "history of" / "what did I think then" | Point-in-time snapshots via |
SessionStart hook | every session init | Non-blocking nudge to invoke |
PostToolUse hook (opt-in) |
| Hint |
MCP Resources
URI | Description |
| Database statistics and server status |
MCP Prompts
Prompt | Parameters | Description |
|
| Generate prompt to save a conversation summary as memory |
|
| Generate prompt to recall relevant memories about a topic |
Security
Graceful fallbacks -- cloud provider cells degrade to local ONNX; an unconfigured cell never silently selects a paid provider
Host-only credentials -- provider keys live in the host-owned
config.tomlorHULL_<TASK>_API_KEYenv vars; end users never see themAuth-gated HTTP --
auth = "no-auth"refuses non-loopback binds;token/multirequire credential checksError sanitization -- No credentials in error messages
Build from Source
git clone https://github.com/n24q02m/mnemo.git
cd mnemo
uv sync
uv run n24q02m-mnemoCLI
The package ships two distinct console scripts:
mnemo-- CLI-first memory surface (primary for scripts/agents; it never starts a server):capture,recall,reflect,fetch, and thestanding-*family operate directly on a SQLite memory DB.mnemo-pilotis a legacy alias of the same entry point.n24q02m-mnemo(legacy aliasmnemo-mcp) -- the MCP server plus one-shot operator subcommands. A bare invocation starts the HTTP server; a leading subcommand (config-init,warmup,token-hash,token-verify) runs an action and exits.
CLI-first memory surface (mnemo; every subcommand takes --db <path>,
prints a JSON envelope, and exits with a taxonomy-mapped code):
uvx --from n24q02m-mnemo mnemo recall --db ./mem.db "package naming" --k 3 # try without a persistent install
mnemo capture --db ./mem.db "keep PyPI name n24q02m-mnemo; repo is mnemo" --tags decision --category decision
mnemo recall --db ./mem.db "release ladder" --k 5 # search a subject's memories
mnemo reflect --db ./mem.db "why keep the alias?" --k 5 # bounded cited reflect over retrieval
mnemo fetch --db ./mem.db <memory_id> # fetch one memory by id
mnemo standing-refresh --db ./mem.db onboarding "how do releases cut?" --k 5 # materialize a standing page
mnemo standing-read --db ./mem.db onboarding # cheap read with staleness infoServer operator CLI (n24q02m-mnemo; a bare invocation starts the HTTP server):
n24q02m-mnemo # start the Streamable HTTP MCP server
# (bind host/port from config.toml or MNEMO_HOST/MNEMO_PORT)
n24q02m-mnemo config-init [--force] # write ~/.mnemo/config.toml from the template
n24q02m-mnemo warmup # pre-download local embedding model / probe cells
n24q02m-mnemo token-hash # print a scrypt$ hash for [server] token_hash
# (reads MNEMO_AUTH_TOKEN or prompts)
n24q02m-mnemo token-verify <token> <scrypt$...> # verify a token against a hashSubcommand | Purpose |
| Write the default instance |
| Pre-download the Fastretrieval-managed local ONNX embedding model so first use works offline |
| Mint a |
| Verify a candidate token against a stored |
Self-hosting (local HTTP instance)
Two ways to run the server for MCP clients on your machine.
Dev: start with uv (no-auth, loopback only)
uv run n24q02m-mnemo # binds 127.0.0.1:8000, auth = "no-auth" by defaultno-auth refuses non-loopback binds, so this is localhost-only by construction —
fine for trying the server locally. The MCP endpoint is
http://127.0.0.1:8000/mcp. For a real config, bootstrap one and edit it:
uv run n24q02m-mnemo config-init # writes ~/.mnemo/config.toml from the templateAlways-on: docker compose (token auth, loopback-published port)
docker-compose.http.yml is self-contained (builds the image, persists state
in the mnemo-data volume) and publishes only on loopback:
cp mnemo-config/config.example.toml mnemo-config/config.toml # then edit:
# auth = "token"; set token_hash per the comments at the top of the example
docker compose -f docker-compose.http.yml up --build -d
# MCP endpoint: http://127.0.0.1:8771/mcp (override the host port: MNEMO_PORT=9000 ...)Token setup (also documented in the example config):
python -c "import secrets; print(secrets.token_urlsafe(32))" # 1. mint token
MNEMO_AUTH_TOKEN=<token> uv run n24q02m-mnemo token-hash # 2. print scrypt$ hash
# 3. paste the hash into token_hash in mnemo-config/config.toml; give clients the tokenFor auth = "multi" (per-user namespaces) also mount users.toml — see the
commented line in docker-compose.http.yml.
CLI consumer (no server needed)
The mnemo surface talks straight to the memory DB — handy for scripts and
agents:
mnemo capture --db ./mem.db "keep PyPI name n24q02m-mnemo; repo is mnemo" --tags decision --category decision
mnemo recall --db ./mem.db "release ladder" --k 5
mnemo fetch --db ./mem.db <memory_id>Every subcommand prints a JSON envelope and takes --db <path>. See
CLI for the full surface (reflect, standing-*, …).
Pointing an MCP client at the instance
Register the HTTP endpoint (Streamable HTTP transport):
Claude Code:
claude mcp add --transport http mnemo http://127.0.0.1:8771/mcpAny OpenAI-spec MCP client: server URL
http://127.0.0.1:8771/mcp; withauth = "token"send the shared token as the Bearer credential.
Config: local vs cloud, per task
Each task cell in mnemo-config/config.toml ([models.embed], rerank,
chat, jev_score) is independent: base_url + api_key + model, OpenAI-spec
HTTP. Mix freely — e.g. cloud OpenRouter for chat while embed/rerank
point at a local OpenAI-spec server, or all cloud. Keys are host-only
(end users never see them) and may alternatively come from the
HULL_<TASK>_API_KEY env vars.
Remote (HTTP mode)
mnemo speaks Streamable HTTP on a single /mcp endpoint — remote access is a
self-hosted instance on a reachable host, fronted by whatever TLS proxy you
choose (the server itself binds plain HTTP). Auth is configured in
mnemo-config/config.toml under [server]: auth = "token" (one shared
Bearer token) or auth = "multi" (per-user tokens + namespaces via
users.toml). auth = "no-auth" refuses non-loopback binds.
Public OCI image publication is discontinued. Existing historical registry tags remain untouched; new container deployments build from source
(docker build --target http) or use docker-compose.http.yml.
Trust Model
mnemo is TC-Local (machine-bound): every storage artifact lives under
~/.mnemo/ owned by your OS user, and provider keys are host-only config
(config.toml / HULL_<TASK>_API_KEY), never visible to MCP clients.
| Bind allowed | Storage | Who can read your data? |
| loopback only (non-loopback bind refused) |
| Only your OS user |
| any | same, one shared | Anyone holding the shared token |
| any | per-namespace | Each token holder sees only their own namespace |
License
Apache-2.0 -- See LICENSE.
Available Tools
15 toolsadd_memoryA
Store NEW information. Use for preferences, decisions, facts.
ACTION GUIDE — when to use:
Use when saving new information for the first time. Example: content='User prefers dark mode', category='preference', tags=['ui']
Inputs: content (required), tags, category. Returns: object
archived_memoriesB
List archived memories.
ACTION GUIDE — when to use:
Use to view memories that have been soft-deleted or automatically archived due to low importance/recency.
Inputs: limit. Returns: object
configAIdempotent
Server config, sync, setup, and bounded vector backfill. Actions: status|sync|set|warmup|setup_sync|backfill_embeddings.
ACTION GUIDE — when to use each:
status: Show current configuration, setup status, and database stats.
sync: Trigger manual sync (requires sync_enabled=true + google_drive_client_id).
set: Update a setting. Requires 'key' and 'value'. Valid keys: 'sync_enabled' (true/false), 'sync_interval' (int), 'log_level' (str). Example: action='set', key='sync_enabled', value='true'
warmup: Pre-download embedding model (~570 MB) to avoid delays later.
backfill_embeddings: Embed active rows missing a current Vectorize ledger entry; optional batch_size is bounded to 100.
setup_sync: Authenticate Google Drive via Device Code OAuth flow.
Inputs: action (required), key, value, batch_size. Returns: object
config__open_relayA
Get the relay configuration URL for mnemo-mcp, opening it in the user's browser when possible. Returns the relay URL, whether the browser launched, and the current status.
Inputs: ctx (required). Returns: object
consolidate_memoriesA
Summarize similar memories in a category (requires LLM API keys).
ACTION GUIDE — when to use:
Use when a category has too many redundant or closely related memories and needs cleanup. Example: category='preference'
Inputs: category (required). Returns: object
delete_memoryADestructive
Remove a memory by ID.
ACTION GUIDE — when to use:
Use when a memory is completely outdated, incorrect, or explicitly requested to be forgotten. Example: memory_id='abc123'
Inputs: memory_id (required). Returns: object
export_memoriesA
Export all memories as JSONL.
ACTION GUIDE — when to use:
Use when the user requests a backup or raw dump of their memory database.
Inputs: no named parameters. Returns: object
helpARead-onlyIdempotent
Full documentation for memory and config tools. topic: 'memory' | 'config'
ACTION GUIDE — when to use:
Use when you need detailed instructions on how to use specific server tools or features.
Inputs: topic. Returns: result
import_memoriesA
Import memories from JSONL data or a list of objects.
ACTION GUIDE — when to use:
Use when restoring from a backup or migrating data into the memory system. Example: data='[{"content": "example"}]', mode='merge'
Inputs: data (required), mode. Returns: object
list_memoriesARead-only
Browse all memories, optionally filtered by category.
ACTION GUIDE — when to use:
Use when you want to view a broad set of memories, or see what's in a specific category. Example: category='preference', limit=10
Inputs: limit, category. Returns: object
memoryADestructive
[DEPRECATED — use the granular tools (add_memory, search_memory, ...) instead; this composite tool will be removed in a future release]
Legacy dispatcher for backward compatibility. Use specialized tools (add_memory, search_memory, etc.) instead.
Persistent memory store. Actions: add|search|list|update|delete|export|import|stats|restore|archived|consolidate.
ACTION GUIDE — when to use each:
add: Store NEW information. Requires 'content'. Use when saving preferences, decisions, facts for the first time. Example: action='add', content='User prefers dark mode', category='preference', tags=['ui']
search: Find existing memories by natural language query. Requires 'query'. Use BEFORE add to avoid duplicates. Example: action='search', query='dark mode preference'
update: Modify an EXISTING memory by ID. Requires 'memory_id' (from search/list results). Use when a fact changes. Example: action='update', memory_id='abc123', content='User now prefers light mode'
list: Browse all memories, optionally filtered by category. No query needed.
delete: Remove a memory by ID. Requires 'memory_id'.
stats: Show database statistics (total memories, categories, embedding status).
export: Export all memories to JSONL format.
import: Import memories from JSONL data. Requires 'data'.
archived: List archived memories. Optionally filter by limit.
restore: Restore an archived memory by ID. Requires 'memory_id'.
consolidate: Summarize and consolidate similar memories in a category using LLM. Requires 'category'.
WORKFLOW: search -> not found? -> add. Found outdated? -> update (with memory_id from results). PROACTIVE: save user preferences, decisions, corrections, project conventions.
Inputs: action (required), auto, data, mode, +18 more. Returns: object
memory_statsARead-only
Show database statistics (total memories, categories, embedding status).
ACTION GUIDE — when to use:
Use when you need to understand the scale or health of the memory database, or check if embeddings are enabled.
Inputs: no named parameters. Returns: object
restore_memoryA
Restore an archived memory by ID.
ACTION GUIDE — when to use:
Use to bring a previously archived memory back into the active search pool. Example: memory_id='abc123'
Inputs: memory_id (required). Returns: object
search_memoryARead-only
Find existing memories by natural language query. Always search before adding.
ACTION GUIDE — when to use:
Use BEFORE adding new information to avoid duplicates. Example: query='dark mode preference'
Inputs: query (required), tags, limit, category. Returns: object
update_memoryA
Modify an EXISTING memory by ID. Get memory_id from search results.
ACTION GUIDE — when to use:
Use when an existing fact or preference changes. Example: memory_id='abc123', content='User now prefers light mode'
Inputs: memory_id (required), tags, source, content, +2 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 15 tools
Most granular memory tools are clearly distinct, but the deprecated 'memory' composite tool overlaps with nearly all of them, and 'config' status overlaps with 'memory_stats' by also reporting database statistics. The detailed action guides help, but the presence of overlapping dispatchers creates avoidable ambiguity.
The core tools mostly follow a verb_noun pattern (add_memory, search_memory, update_memory), but 'archived_memories', 'memory_stats', 'config', 'memory', and 'config__open_relay' break the pattern. The naming is readable and all snake_case, but the mix of bare nouns, noun_noun, and a double-underscore tool prevents it from being highly consistent.
At 15 tools, the server is at the upper bound of a well-scoped set, and the deprecated 'memory' tool plus the composite 'config' dispatcher make it feel slightly heavier than necessary. Excluding deprecated/helper tools, the remaining surface is reasonable for a persistent memory system with configuration and sync features.
The memory lifecycle is well covered: add, search, list, update, delete, archive listing, restore, import, export, stats, and consolidation are all present. Minor gaps exist, such as no direct get-by-ID tool and no explicit user-facing archive action beyond soft-delete/automatic archiving, but these are workable through existing tools.
Maintenance
Related MCP Connectors
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Persistent memory for AI agents. Search, store, and recall across sessions.
Persistent memory for AI agents. Search and store durable facts, preferences and decisions.
Persistent memory, hybrid search and a goal graph for AI agents, over stdio or remote HTTP.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceProvides persistent local memory functionality for AI assistants, enabling them to store, retrieve, and search contextual information across conversations with SQLite-based full-text search. All data stays private on your machine while dramatically improving context retention and personalized assistance.3-
- AlicenseAqualityAmaintenanceMarkdown-first MCP server for Notion that provides 7 composite action-based tools consolidating 28+ REST API endpoints, enabling AI agents to efficiently manage pages, databases, blocks, and content with automatic pagination and bulk operations.1097 npm36Apache 2.0
- AlicenseAqualityAmaintenanceWeb search (embedded SearXNG), content extraction, and library docs indexing with hybrid search. No API keys required.624Apache 2.0
- AlicenseAqualityAmaintenanceIMAP/SMTP email MCP server with App Passwords. Auto-discovers Gmail, Outlook, Yahoo, iCloud. 5 composite tools, multi-account.5107 npm37Apache 2.0