{"id":44427864,"url":"https://github.com/n24q02m/mnemo-mcp","last_synced_at":"2026-05-09T14:18:18.193Z","repository":{"id":337983891,"uuid":"1156058980","full_name":"n24q02m/mnemo-mcp","owner":"n24q02m","description":"Persistent AI memory with hybrid search and embedded sync - open, free, unlimited","archived":false,"fork":false,"pushed_at":"2026-04-20T22:18:11.000Z","size":1904,"stargazers_count":5,"open_issues_count":7,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T00:30:05.791Z","etag":null,"topics":["ai-agents","ai-coding","ai-memory","claude","claude-code","cursor","docker","hybrid-search","mcp","mcp-server","model-context-protocol","open-source","python","rclone","sqlite"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/mnemo-mcp/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/n24q02m.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-12T08:01:04.000Z","updated_at":"2026-04-20T08:23:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/n24q02m/mnemo-mcp","commit_stats":null,"previous_names":["n24q02m/mnemo-mcp"],"tags_count":79,"template":false,"template_full_name":null,"purl":"pkg:github/n24q02m/mnemo-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fmnemo-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fmnemo-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fmnemo-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fmnemo-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/n24q02m","download_url":"https://codeload.github.com/n24q02m/mnemo-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/n24q02m%2Fmnemo-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32323215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","ai-coding","ai-memory","claude","claude-code","cursor","docker","hybrid-search","mcp","mcp-server","model-context-protocol","open-source","python","rclone","sqlite"],"created_at":"2026-02-12T11:25:32.680Z","updated_at":"2026-05-09T14:18:18.187Z","avatar_url":"https://github.com/n24q02m.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mnemo MCP Server\n\nmcp-name: io.github.n24q02m/mnemo-mcp\n\n**Persistent memory MCP server with hybrid retrieval (FTS5 + sqlite-vec + RRF fusion + cross-encoder rerank + temporal decay) and embedded sync. Open, free, unlimited.**\n\n\u003c!-- Badge Row 1: Status --\u003e\n[![CI](https://github.com/n24q02m/mnemo-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/n24q02m/mnemo-mcp/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/n24q02m/mnemo-mcp/graph/badge.svg?token=GELGVQNMUZ)](https://codecov.io/gh/n24q02m/mnemo-mcp)\n[![PyPI](https://img.shields.io/pypi/v/mnemo-mcp?logo=pypi\u0026logoColor=white)](https://pypi.org/project/mnemo-mcp/)\n[![Docker](https://img.shields.io/docker/v/n24q02m/mnemo-mcp?label=docker\u0026logo=docker\u0026logoColor=white\u0026sort=semver)](https://hub.docker.com/r/n24q02m/mnemo-mcp)\n[![License: MIT](https://img.shields.io/github/license/n24q02m/mnemo-mcp)](LICENSE)\n[![SafeSkill 91/100](https://img.shields.io/badge/SafeSkill-91%2F100_Verified%20Safe-brightgreen)](https://safeskill.dev/scan/n24q02m-mnemo-mcp)\n\n\u003c!-- Badge Row 2: Tech --\u003e\n[![Python](https://img.shields.io/badge/Python-3776AB?logo=python\u0026logoColor=white)](#)\n[![SQLite](https://img.shields.io/badge/SQLite-003B57?logo=sqlite\u0026logoColor=white)](#)\n[![MCP](https://img.shields.io/badge/MCP-000000?logo=anthropic\u0026logoColor=white)](#)\n[![semantic-release](https://img.shields.io/badge/semantic--release-e10079?logo=semantic-release\u0026logoColor=white)](https://github.com/python-semantic-release/python-semantic-release)\n[![Renovate](https://img.shields.io/badge/renovate-enabled-1A1F6C?logo=renovatebot\u0026logoColor=white)](https://developer.mend.io/)\n\n\u003c!-- BEGIN: AUTO-GENERATED-CROSS-PROMO --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003e\u003cstrong\u003eSister projects from n24q02m\u003c/strong\u003e (click to expand)\u003c/summary\u003e\n\n| Project | Tagline | Tag |\n|---|---|---|\n| [better-code-review-graph](https://github.com/n24q02m/better-code-review-graph) | Knowledge graph for token-efficient code reviews -- fixed search, configurabl... | MCP |\n| [better-email-mcp](https://github.com/n24q02m/better-email-mcp) | IMAP/SMTP email server for AI agents -- 6 composite tools with multi-account ... | MCP |\n| [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) | Composite MCP server for Godot Engine -- 17 mega-tools for AI-assisted game d... | MCP |\n| [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) | Markdown-first Notion API server for AI agents -- 10 composite tools replacin... | MCP |\n| [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) | MCP server for Telegram with dual-mode support: Bot API (httpx) for quick bot... | MCP |\n| [claude-plugins](https://github.com/n24q02m/claude-plugins) | Full documentation: mcp.n24q02m.com — unified docs for all 8 servers + the mc... | Marketplace |\n| [imagine-mcp](https://github.com/n24q02m/imagine-mcp) | Production-grade MCP server for image and video understanding + generation ac... | MCP |\n| [jules-task-archiver](https://github.com/n24q02m/jules-task-archiver) | Chrome Extension for bulk operations on Jules tasks via batchexecute API -- a... | Tooling |\n| [mcp-core](https://github.com/n24q02m/mcp-core) | Unified MCP Streamable HTTP 2025-11-25 transport, OAuth 2.1 Authorization Ser... | MCP |\n| [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp) | Persistent AI memory with hybrid search and embedded sync. Open, free, unlimi... | MCP |\n| [qwen3-embed](https://github.com/n24q02m/qwen3-embed) | Lightweight Qwen3 text embedding and reranking via ONNX Runtime and GGUF | Library |\n| [skret](https://github.com/n24q02m/skret) | Secrets without the server. | CLI |\n| [web-core](https://github.com/n24q02m/web-core) | Shared web infrastructure package for search, scraping, HTTP security, and st... | Library |\n| [wet-mcp](https://github.com/n24q02m/wet-mcp) | Open-source MCP Server for web search, content extraction, library docs \u0026 mul... | MCP |\n\n\u003c/details\u003e\n\u003c!-- END: AUTO-GENERATED-CROSS-PROMO --\u003e\n\n## Table of contents\n\n- [Features](#features)\n- [Status](#status)\n- [Documentation](#documentation)\n- [Tools](#tools)\n- [Security](#security)\n- [Build from Source](#build-from-source)\n- [Trust Model](#trust-model)\n- [License](#license)\n\n\n\n\u003ca href=\"https://glama.ai/mcp/servers/n24q02m/mnemo-mcp\"\u003e\n  \u003cimg width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/n24q02m/mnemo-mcp/badge\" alt=\"Mnemo MCP server\" /\u003e\n\u003c/a\u003e\n\n## Roadmap (current = Phase 1 / v1.x)\n\n| Phase | Version | Status | Highlights |\n|---|---|---|---|\n| **Phase 1** | **v1.x** | **Shipped** | Typed `memory(action=\"capture\")` (6 context_types + dedup) -- RRF (k=60) hybrid fusion + cross-encoder rerank + temporal decay -- importance x recency archive policy + restore -- Alembic migrations -- multi-provider LLM dispatch -- plugin trinity (recall-context + memory-commit skills, SessionStart + opt-in PostToolUse hooks) |\n| **Phase 2** | v1.x+1 | Planned | LLM-driven compression of older memories + Passport sync (encrypted import/export bundle for cross-machine bootstrap) |\n| **Phase 3** | v2.0 | Planned (BREAKING) | Temporal knowledge graph -- bitemporal `as_of` queries, entity timelines, time-travel retrieval |\n\n## Features\n\n- **Hybrid retrieval** -- FTS5 + sqlite-vec, fused via Reciprocal Rank Fusion (k=60), then re-ranked by a cross-encoder chain (qwen3-reranker local -\u003e Jina -\u003e Cohere) with temporal decay and importance boost\n- **Typed capture** -- `memory(action=\"capture\")` with 6 context_types (`conversation`/`fact`/`preference`/`skill`/`task`/`decision`), embedding-based dedup, and a multi-provider LLM dispatcher (Gemini \u003e OpenAI \u003e Anthropic \u003e xAI)\n- **Knowledge graph** -- Automatic entity extraction and relation tracking; top results boosted by graph proximity\n- **Importance scoring + archive policy** -- LLM-scored 0.0-1.0 importance; soft-archive when `recency_factor * (1 - importance) \u003e 1.0`; restore action available\n- **Auto-archive trigger** -- Background sweep every Nth capture (default 100) -- no cron required\n- **STM-to-LTM consolidation** -- LLM summarization of related memories in a category\n- **Duplicate detection** -- Warns before adding semantically similar memories\n- **Zero config** -- Built-in local Qwen3 ONNX embedding + reranking, no API keys needed. Optional cloud providers (Jina AI, Gemini, OpenAI, Cohere)\n- **Multi-machine sync** -- JSONL-based merge sync via Google Drive (bundled Desktop OAuth public client)\n- **Plugin trinity** -- Ships `/recall-context` + `/memory-commit` skills and SessionStart + opt-in PostToolUse hooks (see [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md))\n- **Proactive memory** -- Tool descriptions and skills guide AI to save preferences, decisions, facts at the right moment\n\n## Comparison vs. peers\n\n| Feature | mnemo-mcp | Mem0 | Letta | OpenMemory |\n|---|---|---|---|---|\n| Hybrid retrieval (FTS + vec) | yes (FTS5 + sqlite-vec + RRF) | yes | partial | yes |\n| Cross-encoder rerank chain | yes (qwen3 local + Jina + Cohere) | partial (Cohere only) | no | no |\n| Temporal decay scoring | yes (exp half-life) | no | no | no |\n| Importance boost in rank | yes (LLM 0.0-1.0) | no | no | no |\n| Soft-archive + restore policy | yes (importance x recency) | no | no | no |\n| Self-hostable (single SQLite file) | yes (zero ext deps) | partial (cloud-first) | yes (Postgres) | yes (Postgres + Qdrant) |\n| Multi-provider LLM dispatch | yes (Gemini/OpenAI/Anthropic/xAI auto-detect) | partial | yes | partial |\n| Plugin trinity (skills + hooks) | yes (recall-context + memory-commit) | n/a | n/a | n/a |\n| Multi-machine sync | yes (GDrive bundled OAuth) | yes (cloud) | n/a | n/a |\n\n## Status\n\n\u003e **2026-05-02 -- Architecture stabilization update**\n\u003e\n\u003e Past months saw significant churn around credential handling and the daemon-bridge auto-spawn pattern. This caused multi-process races, browser tab spam, and inconsistent setup UX across plugins. **As of v\u003cauto\u003e, the architecture is stable**: 2 clean modes (stdio + HTTP), no daemon-bridge layer, no auto-spawn from stdio.\n\u003e\n\u003e Apologies for the instability period. If you encountered issues with prior versions, please update to v\u003cauto\u003e+ and follow the current [setup docs](https://mcp.n24q02m.com/servers/mnemo-mcp/setup/) -- most prior workarounds are no longer needed.\n\u003e\n\u003e **Related plugins from the same author**:\n\u003e - [wet-mcp](https://github.com/n24q02m/wet-mcp) -- Web search + content extraction\n\u003e - [imagine-mcp](https://github.com/n24q02m/imagine-mcp) -- Image/video understanding + generation\n\u003e - [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) -- Notion API\n\u003e - [better-email-mcp](https://github.com/n24q02m/better-email-mcp) -- Email management\n\u003e - [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) -- Telegram\n\u003e - [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) -- Godot Engine\n\u003e - [better-code-review-graph](https://github.com/n24q02m/better-code-review-graph) -- Code review knowledge graph\n\u003e\n\u003e All plugins share the same architecture -- install once, learn pattern transfers.\n\n## Documentation\n\nFull docs at **[mcp.n24q02m.com/servers/mnemo-mcp/](https://mcp.n24q02m.com/servers/mnemo-mcp/)**:\n\n- [Setup](https://mcp.n24q02m.com/servers/mnemo-mcp/setup/) -- install methods for Claude Code, Codex, Gemini CLI, Cursor, Windsurf, mcp.json\n- [Modes overview](https://mcp.n24q02m.com/get-started/modes-overview/) -- stdio / local-relay / remote-relay / remote-oauth\n- [Multi-user setup](https://mcp.n24q02m.com/get-started/multi-user/) -- per-JWT-sub credential model\n\n**Install with AI agent** -- paste this to your AI coding agent:\n\n\u003e Install MCP server `mnemo-mcp` following the steps at\n\u003e https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/mnemo-mcp/setup-with-agent.md\n\n## Tools\n\n3 MCP tools, 13 memory actions:\n\n| Tool | Actions | Description |\n|:-----|:--------|:------------|\n| `memory` | `add`, `capture`, `search`, `list`, `update`, `delete`, `export`, `import`, `stats`, `restore`, `archived`, `archive_now`, `consolidate` | Core CRUD + typed capture (6 context_types) + hybrid search (RRF + rerank + temporal decay) + import/export + soft-archive + restore + on-demand archive sweep + LLM consolidation |\n| `config` | `status`, `sync`, `set`, `warmup`, `setup_sync`, `setup_status`, `setup_start`, `setup_skip`, `setup_reset`, `setup_complete`, `setup_relay` | Server status, trigger sync, update settings, pre-download embedding model, authenticate sync provider, manage HTTP setup form lifecycle |\n| `help` | `topic=\"memory\"` or `topic=\"config\"` | Full documentation for any tool |\n\nPlugin trinity (Claude Code marketplace install):\n\n| Component | Trigger | Purpose |\n|---|---|---|\n| `mnemo:recall-context` skill | session start, before significant decisions, \"what do I know about X?\" | Pulls cwd / topic-relevant memories with `context_type` filtering |\n| `mnemo:memory-commit` skill | \"remember this\" / \"save this\" / \"ghi nho\" / \"luu lai\" | Typed manual capture with `context_type` decision tree |\n| `mnemo:knowledge-audit` skill | periodic / \"audit memory\" | Find duplicates, contradictions, stale entries; consolidate |\n| `mnemo:session-handoff` skill | end of session | Capture decisions / preferences / corrections / conventions / open questions |\n| SessionStart hook | every session init | Non-blocking nudge to invoke `recall-context` |\n| PostToolUse hook (opt-in) | `CAPTURE_AUTO_ENABLED=true` | Hint `memory-commit` after Write/Edit of CLAUDE.md / AGENTS.md / ARCHITECTURE.md / docs/*.md |\n\n### MCP Resources\n\n| URI | Description |\n|:----|:------------|\n| `mnemo://stats` | Database statistics and server status |\n\n### MCP Prompts\n\n| Prompt | Parameters | Description |\n|:-------|:-----------|:------------|\n| `save_summary` | `summary` | Generate prompt to save a conversation summary as memory |\n| `recall_context` | `topic` | Generate prompt to recall relevant memories about a topic |\n\n## Security\n\n- **Graceful fallbacks** -- Cloud → Local embedding, no cross-mode fallback\n- **Sync token security** -- OAuth tokens stored at `~/.mnemo-mcp/tokens/` with 600 permissions\n- **Input validation** -- Sync provider, folder, remote validated against allowlists\n- **Error sanitization** -- No credentials in error messages\n\n## Build from Source\n\n```bash\ngit clone https://github.com/n24q02m/mnemo-mcp.git\ncd mnemo-mcp\nuv sync\nuv run mnemo-mcp\n```\n\n## Trust Model\n\nThis plugin implements **TC-Local** (machine-bound, single trust principal). See [mcp-core/docs/TRUST-MODEL.md](https://github.com/n24q02m/mcp-core/blob/main/docs/TRUST-MODEL.md) for full classification.\n\n| Mode | Storage | Encryption | Who can read your data? |\n|---|---|---|---|\n| stdio (default) | `~/.mnemo-mcp/config.json` | AES-GCM, machine-bound key | Only your OS user (file perm 0600) |\n| HTTP self-host | Same as stdio | Same | Only you (admin = user) |\n\n## License\n\nMIT -- See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn24q02m%2Fmnemo-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fn24q02m%2Fmnemo-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fn24q02m%2Fmnemo-mcp/lists"}