{"_id":"@artljn/mnemo","_rev":"3-32b67fcd79946b38787b14b794a5d57e","name":"@artljn/mnemo","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@artljn/mnemo","version":"0.1.0","keywords":["mcp","memory","fact-store","sqlite","ai","claude","codex"],"_id":"@artljn/mnemo@0.1.0","maintainers":[{"name":"artljn","email":"liuw8789@gmail.com"}],"bin":{"mnemo":"dist/server.js"},"dist":{"shasum":"59cad71da08c33fd14a77c9a81083f7832ba726d","tarball":"https://registry.npmjs.org/@artljn/mnemo/-/mnemo-0.1.0.tgz","fileCount":32,"integrity":"sha512-IsT5Jw5BPxKwfsSGfNJYSkrNMNU7YfXLMOtQW8Dvo7ruYendMIdCXxq3D+VPBVtTlkiqOerLAUwbKKJJFg9bDA==","signatures":[{"sig":"MEUCIAc/6mDGRpezc17hUSdRURGSu5D+X44Xj51Fk/ZqMp6JAiEAxTIN2v3BJYZBhspsPoKzhfcfqzP6YSsspneCYsmgDpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249291},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","gitHead":"627b013dd6584011224067c4b56cf02e4dfff403","scripts":{"test":"vitest run","build":"tsc","start":"node dist/server.js"},"_npmUser":{"name":"artljn","email":"liuw8789@gmail.com"},"_npmVersion":"10.9.4","description":"Structured fact memory MCP server for AI coding assistants","directories":{},"_nodeVersion":"22.21.0","dependencies":{"better-sqlite3":"^11.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mnemo_0.1.0_1778830749988_0.6649508705112384","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@artljn/mnemo","version":"0.1.1","keywords":["mcp","memory","fact-store","sqlite","ai","claude","codex"],"_id":"@artljn/mnemo@0.1.1","maintainers":[{"name":"artljn","email":"liuw8789@gmail.com"}],"bin":{"mnemo":"dist/server.js","mnemo-init":"dist/init.js"},"dist":{"shasum":"02716a20a0ef8d398d920e700e99f94859959ade","tarball":"https://registry.npmjs.org/@artljn/mnemo/-/mnemo-0.1.1.tgz","fileCount":36,"integrity":"sha512-ucQYWTQlJHDC9sQK4eD1wCsyvj/Qmn3jBo1TDLuBNUt5pNUDlodKr+eSp1omZcODLSbfhnduEdJ3eF8Czb32uA==","signatures":[{"sig":"MEQCIFnzpweqOQFotOCmRU+VRVS+9nSIMJJ5cBrJoJXe79YOAiBebVIWl4hr8VZy8lFUS8TnJxplRa4i+Y3a970HQpVrGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263125},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","gitHead":"627b013dd6584011224067c4b56cf02e4dfff403","scripts":{"test":"vitest run","build":"tsc","start":"node dist/server.js"},"_npmUser":{"name":"artljn","email":"liuw8789@gmail.com"},"_npmVersion":"10.9.4","description":"Structured fact memory MCP server for AI coding assistants","directories":{},"_nodeVersion":"22.21.0","dependencies":{"better-sqlite3":"^11.9.0","@modelcontextprotocol/sdk":"^1.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.8.0","@types/node":"^22.0.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/mnemo_0.1.1_1778834871656_0.414542848742671","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-05-15T07:39:09.897Z","modified":"2026-05-15T14:17:12.362Z","0.1.0":"2026-05-15T07:39:10.160Z","0.1.1":"2026-05-15T08:47:51.835Z"},"keywords":["mcp","memory","fact-store","sqlite","ai","claude","codex"],"description":"Structured fact memory MCP server for AI coding assistants","maintainers":[{"email":"liuw8789@gmail.com","name":"morningljn"}],"readme":"# mnemo-mcp\n\nStructured fact memory MCP server for AI coding assistants.\n\n## What It Does\n\nmnemo-mcp is a persistent, structured memory layer that AI coding assistants can use to remember facts across sessions. It stores facts in a local SQLite database with full-text search (FTS5), trust scoring, entity graph extraction, contradiction detection, and bilingual (English/Chinese) retrieval.\n\nKey features:\n\n- **SQLite + FTS5** -- fast full-text search with automatic index sync\n- **Trust scoring** -- facts gain or lose trust over time based on feedback and decay\n- **Entity graph** -- automatic entity extraction with multi-hop relationship queries\n- **Contradiction detection** -- finds conflicting facts and demotes the older one\n- **Bilingual retrieval** -- Chinese bigram tokenization + automatic CN/EN term expansion\n- **Auto-dedup** -- three-layer deduplication (entity overlap, Jaccard similarity, containment) prevents duplicate facts\n\n## Installation\n\n```bash\nnpm install -g mnemo-mcp\n```\n\nOr run without installing:\n\n```bash\nnpx mnemo-mcp\n```\n\n## Configuration\n\n### Claude Code\n\nAdd to `.claude/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mnemo\": {\n      \"command\": \"npx\",\n      \"args\": [\"mnemo-mcp\"]\n    }\n  }\n}\n```\n\n### Codex\n\nAdd to your Codex configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"mnemo\": {\n      \"command\": \"npx\",\n      \"args\": [\"mnemo-mcp\"]\n    }\n  }\n}\n```\n\n## Tools\n\n### `fact_store`\n\nThe primary tool for reading and writing structured facts. Supports 9 actions:\n\n| Action | Description | Key Parameters |\n|--------|-------------|----------------|\n| `add` | Add a new fact (auto-deduplicates; merges if similar exists) | `content` (required), `category`, `tags` |\n| `search` | Keyword search with FTS5 + Jaccard reranking | `query` (required), `category`, `min_trust`, `limit` |\n| `probe` | Find all facts about a specific entity | `entity` (required), `min_trust`, `limit` |\n| `related` | Find facts related to an entity through shared context | `entity` (required), `min_trust`, `limit` |\n| `reason` | Multi-entity reasoning: find facts connected to all given entities | `entities` (required), `min_trust`, `limit` |\n| `contradict` | Detect pairs of facts that share entities but conflict in content | `limit` |\n| `update` | Update an existing fact's content, tags, category, or trust score | `fact_id` (required), `content`, `tags`, `category`, `trust_delta` |\n| `remove` | Delete a fact by ID | `fact_id` (required) |\n| `list` | Browse facts sorted by trust score | `category`, `min_trust`, `limit` |\n\nCommon parameters:\n\n- `category` -- filter by fact category (see [Categories](#categories) below)\n- `min_trust` -- minimum trust score threshold (default: `0.3`)\n- `limit` -- maximum number of results (default: `10`)\n- `tags` -- comma-separated tags for classification\n\n### `fact_feedback`\n\nRate a fact after use. Good facts rise, bad facts decay.\n\n| Action | Description |\n|--------|-------------|\n| `helpful` | Mark fact as accurate (+0.05 trust) |\n| `unhelpful` | Mark fact as outdated or wrong (-0.10 trust) |\n\nParameters:\n\n- `fact_id` (required) -- the fact to rate\n\n## Architecture\n\n```\n+-------------------+    stdio    +------------+    better-sqlite3    +-----------------------+\n|   MCP Client      | <--------> | mnemo-mcp  | <------------------> | ~/.mnemo/facts.db     |\n| (Claude / Codex)  |    JSON    |  server    |     SQLite + FTS5    |                       |\n+-------------------+            +------------+                      |  tables:              |\n                                        |                           |    facts              |\n                                        |                           |    entities           |\n                                 +------+------+                    |    fact_entities      |\n                                 |             |                    |  indexes:             |\n                                 | Retriever   | Security          |    facts_fts (FTS5)   |\n                                 | (search,    | (PII scan,        |    idx_facts_trust     |\n                                 |  probe,     |  injection        |    idx_facts_category  |\n                                 |  reason)    |  detection)       +-----------------------+\n                                 +-------------+\n```\n\nData directory: `~/.mnemo/facts.db` (created automatically on first run).\n\n## Categories\n\nFacts are organized into categories that control decay rates and retrieval behavior:\n\n| Category | Description | Grace Period | Decay Rate |\n|----------|-------------|--------------|------------|\n| `identity` | User identity: name, role, preferences | 60 days | 0.02/week |\n| `coding_style` | Coding conventions, naming rules, formatting | 30 days | 0.03/week |\n| `tool_pref` | Tool and framework preferences | 30 days | 0.03/week |\n| `workflow` | Development workflow, CI/CD, git practices | 45 days | 0.02/week |\n| `general` | General knowledge and other facts | 30 days | 0.03/week |\n\nWhen writing facts, always search first to avoid duplicates. Facts below `0.1` trust are automatically removed during startup maintenance.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}