Mnemo
Click on "Install 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., "@MnemoRemember that I prefer dark mode in all apps."
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.
Mnemo
A portable, user-level memory layer for AI agents — shared across agents, exposed over MCP, with no embeddings required by default.
Named after Mnemosyne, the goddess of memory. Mnemo is a single-file, portable memory layer that any MCP-capable host can mount. Migrating it is as simple as copying one database file.
Features
User-level, cross-agent memory — different agents remember the same you.
MCP stdio server — mountable by any Model Context Protocol host.
No embeddings by default — a deterministic, auditable, portable blend of SQLite + FTS5 (BM25 full-text) + a lightweight relations table.
Optional vectors —
sqlite-vec+ a localbge-smallmodel available as an opt-in (disabled by default) enhancement.Web admin UI — a zero-build local React app to browse, search, edit, delete, inspect audit chains and relation graphs, and run consolidation.
Chinese full-text search — write-time segmentation via the built-in
Intl.Segmenter(zero dependencies) makes even two-character terms recallable.
Related MCP server: Cortex
Design principles
Hybrid architecture (full-text + relations, vectors optional).
Facts carry a validity period rather than being destructively overwritten.
Agent-generated facts are first-class and stored.
Background consolidation (dedup / conflict expiry / aging).
Everything is readable, editable, and deletable.
Quick start
npm install
npm run build # tsc -> dist/
npm test # node --experimental-strip-types --testWeb admin UI
npm run build
npm run ui # serves http://127.0.0.1:4173 (alias: mnemo-ui)From the browser you can browse/filter (by scope / kind / subject / tag), run full-text search (two-character CJK terms are recallable), create / edit / soft-delete / hard-delete facts, inspect audit chains (the superseded_by lineage), view the relation graph (SVG), and run consolidation manually (dry-run preview → commit).
Backend (
src/web.ts): a zero-dependency Node HTTP server (node:http) that reusesstore.ts/consolidate.tsto read and write the SQLite database directly, with a REST surface under/api/*. Configurable viaMNEMO_UI_PORT(default 4173),MNEMO_UI_HOST(default 127.0.0.1), andMNEMO_DB.Frontend (
public/): React 18 loaded from a CDN via importmap, with JSX compiled in the browser by Babel-standalone — no npm dependencies and no build step.The UI and any mounted stdio MCP server share the same database file safely (SQLite WAL, multiple connections).
MCP tools
Seven MCP tools are exposed:
Tool | Purpose |
| Store a fact (with scope / kind / source / validity). |
| BM25 full-text search (CJK-aware). |
| List / filter facts. |
| Edit a fact (keeps the old version as superseded). |
| Soft or hard delete. |
| Create a typed relation between two facts. |
| Deterministic housekeeping (dedup, conflict expiry, aging). |
Tool prefix: mcp__mnemo__*.
Storage & runtime
Storage:
better-sqlite3(prebuilt binary, no compilation) + FTS5 (unicode61) + afact_tagstable + arelationstable; opened with WAL,busy_timeout, andforeign_keyson.Chinese retrieval: write-time segmentation with
Intl.Segmenter(zero dependencies) so two-character words are recallable.The five principles in practice:
source ∈ {user, agent};valid_from/valid_until/superseded_by(old facts are marked invalid, never dropped); soft and hard delete;dedup_key-based conflict expiry; UTC timestamps throughout.The runtime database defaults to
~/.dsh/mnemo.dband is independent of the code location; override it with theMNEMO_DBenvironment variable.
Mounting in an MCP host (stdio)
mnemo:
command: node
args: ["<path-to>/Mnemo/dist/index.js"]
env:
MNEMO_DB: "~/.dsh/mnemo.db" # shared database; this is also the defaultBuild first (npm install && npm run build to produce dist/index.js), then point your host's MCP configuration at it. The stdio transport ships with the MCP SDK, so mounting works out of the box.
Documentation
docs/design.md— full design document (storage schema, MCP tool interface, consolidation, injection strategy, milestones).
License
MIT
Available Tools
7 toolsconsolidateA
Phase A 机械整理记忆(无 LLM,确定性):去重(内容重复合并,保留 user/高 confidence/新)、过期清理(episodic 超保留期软删;user 明示永不清)。默认 dry_run=true 只报告计划不落库。LLM 蒸馏(Phase B)由宿主 agent 另行编排。
| Name | Required | Description | Default |
|---|---|---|---|
| dedup | No | 是否去重,默认 true | |
| scope | No | 限定 scope;缺省处理全部 | |
| dry_run | No | 默认 true:只报告将做的变更,不落库 | |
| episodic_retention_days | No | episodic 保留天数,默认 90 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must disclose behavior, and it does so richly: deterministic/no-LLM execution, dedup merge rules (kep user/high-confidence/newer), episodic soft-deploy past retention period, user memories never cleared, and default dry_run=true meaning no DB writes. These are safety-critical behaviors an agent needs before invoking a mutating maintenance tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with zero filler. The first sentence front-loads the core purpose and policies, the second states the critical safety default (dry_run), and the third excludes the out-of-scope LLM phase. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool with no annotations and no output schema, the description covers purpose, behavior, parameter semantics, and safe defaults thoroughly, and it clarifies the Phase A/Phase B rapport. The remaining gaps are the structure of the dry-run report (no output schema exists) and an explicit statement that dry_run=false commits the changes — both minor but left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented, giving a baseline of 3. The description adds meaning beyond the schema by explaining why episodic_retention_days exists and what it applies to (episodic soft-deletes past retention; user memories are never cleared) and by spelling out the dedup merge policy that makes dedup=true semantically meaningful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete, specific operation: deterministic, non-LLM mechanical memory consolidation consisting of two distinct passes — content deduplication with an explicit merge policy (keep user/high-confident/newer) and expiry-based cleanup with soft-delete semantics. This clearly separates it from the sibling CRUD/link tools (save, search, list, update, forget, link), none of which perform batch maintenance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: this is the deterministic Phase A maintenance operation, and it explicitly draws a boundary by stating that LLM distillation (Phase B) is orchestrated separately by the host agent — an implicit when-not. However, it does not explicitly name sibling alternatives or state conditions such as 'use forget_memory for single-record deletion instead,' so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forget_memoryA
遗忘事实。hard=false(默认)软删除;hard=true 物理删除(GDPR,级联清理关系/标签)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| hard | No | true=硬删除(不可恢复) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining destructive behavior. It clearly discloses the default soft-delete behavior, physical deletion for GDPR, and cascading cleanup of relationships/tags, which is strong transparency for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence delivers the action, default behavior, alternative mode, and important side effects. Every clause adds information, and the most important scoping detail (hard=false default) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter deletion tool with no output schema, the description covers the core decision point (hard vs soft) and consequential behavior (GDPR, cascade cleanup). It could be more complete by stating what 'id' refers to and what soft-deleted facts look like afterward, but it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, so the description must compensate. It adds meaningful semantics to the 'hard' parameter: default value, soft-delete meaning, GDPR context, and cascading effects. However, the required 'id' parameter remains undocumented beyond its integer type; its meaning as a memory/fact identifier is only implied by the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('遗忘') and resource ('事实'), and the soft/hard delete distinction differentiates it from sibling tools like update_memory or search_memory. Even without context, an agent can tell that this tool removes memories rather than retrieving or modifying them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the difference between soft and hard deletion but provides no explicit guidance on when to choose this tool over alternatives such as update_memory or consolidate. There is no mention of when not to use it or which sibling tool handles related needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_memoriesC
在两条事实间建立关系(轻量图)。
| Name | Required | Description | Default |
|---|---|---|---|
| to_id | Yes | ||
| from_id | Yes | ||
| rel_type | Yes | 关系类型,如 'relates_to'|'caused_by'|'part_of' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a relationship is created, but does not disclose whether the operation is idempotent, whether existing relationships are overwritten, whether the referenced facts must already exist, or what side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant wording. It is appropriately short, though the brevity comes at the cost of missing useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no annotations, no output schema, and sparse parameter descriptions, the definition leaves important gaps: what the response looks like, any prerequisites for linking, and the exact semantics of the relationship edge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low at 33%, with from_id and to_id having no descriptions. The description implies two facts are linked but does not explain the roles or directionality of from_id and to_id, nor clarify how rel_type interacts with them beyond the schema's examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('establish a relationship') applied to a specific resource ('two facts') and adds the lightweight-graph context. It is distinguishable from the sibling memory CRUD tools, though it does not explicitly name or contrast any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as save_memory, update_memory, or consolidate. The description only states what it does, not when it should be preferred or avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_memoriesA
按条件列出记忆(结构化,可读/审计),不做全文匹配。默认只列当前有效事实。
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| kind | No | ||
| limit | No | ||
| scope | No | ||
| subject | No | ||
| include_expired | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral disclosure burden. It does reveal meaningful defaults (only current valid facts) and an important exclusion (no full-text matching). However, it does not disclose whether the operation is read-only, what the output structure is, how include_expired changes behavior, or any pagination/sorting behavior—leaving a moderate transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact Chinese sentence that front-loads the core purpose, then adds the distinguishing non-full-text qualifier and the default-behavior note. Every clause earns its place, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, 0% schema description coverage, no annotations, and no output schema, the description is far from complete. It covers the primary purpose and one default behavior, but leaves parameter meanings, return format, and operational semantics largely unexplained, making it insufficient for correct invocation in many cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the six parameters (tag, kind, limit, scope, subject, include_expired). The only implicit hint is that the default filter for current valid facts relates to include_expired. This is insufficient compensation for the complete lack of parameter documentation in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists memories by conditions, specifies that it is structured/readable/auditable, and explicitly notes that it does not do full-text matching—which distinguishes it from the sibling search_memory. The verb 'list' and resource 'memories' make the operation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is for structured filtering, not full-text search, and it defaults to returning only currently valid facts. It implies a division of labor with the search_memory sibling but does not explicitly name the alternative or state hard exclusion conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_memoryA
写入一条记忆事实。content 为明文(人可读)。给定 dedup_key 时,同 (scope,subject,kind,dedup_key) 的旧事实会被自动标记失效(保留审计链)。
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 类型,默认 fact | |
| tags | No | ||
| scope | No | 归属范围:'user'(默认,共享) | 'agent:dsh' | 'project:<key>' | |
| source | No | 来源,默认 agent | |
| content | Yes | 明文事实内容 | |
| subject | No | 归属实体,如 'user'、项目名 | |
| dedup_key | No | 去重/冲突键:同键的新事实使旧事实失效 | |
| confidence | No | ||
| valid_from | No | 生效时间 ISO8601 UTC,默认现在 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and discloses the most important behavioral traits: content must be plaintext/human-readable, and providing dedup_key triggers automatic invalidation of prior facts matching (scope, subject, kind, dedup_key) while retaining the audit chain — indicating a soft-invalidate rather than physical delete. It does not cover duplicate behavior without dedup_key or response semantics, but the core side-effect contract is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero waste: purpose first, then the content constraint, then the dedup edge case. Every sentence adds distinct information and the most important behavioral caveat appears immediately after the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no output schema and no annotations, the description covers the core operation and the trickiest behavior (dedup invalidation), but leaves gaps: no return value or acknowledgment behavior, no statement about what happens when saving without dedup_key (are duplicates allowed?), and no mention of how valid_from, source, or confidence interact with the invalidation logic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 78%, so the schema already documents most parameters. The description adds real value beyond it: it specifies that content must be human-readable plaintext and, crucially, defines the invalidation matching tuple as (scope, subject, kind, dedup_key), which is more precise than the schema's vague '同键' (same key).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('写入一条记忆事实' / write a memory fact) that clearly establishes the create operation, distinguishing it from read siblings (search_memory, list_memories), mutation siblings (update_memory, forget_memory), and relation/consolidation siblings. The dedup_key invalidation sentence adds a signature behavior unique to this tool, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this when persisting a new memory fact, and reuse dedup_key to supersede an old fact while preserving the audit trail. However, there is no explicit guidance contrasting it with update_memory (modify existing facts) or forget_memory (remove facts), and no statement about when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_memoryA
BM25 全文检索记忆(中文经 Intl.Segmenter 分词,2 字词可召回)。默认只返回当前有效事实。
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | 按单个 tag 过滤 | |
| kind | No | ||
| limit | No | ||
| query | Yes | 检索词(中文/英文/混合) | |
| scope | No | ||
| subject | No | ||
| include_expired | No | 是否包含已失效/软删事实(审计) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral traits: BM25 retrieval, Chinese tokenization via Intl.Segmenter, two-character term recallability, and default filtering of current valid facts. These go beyond the tool name and help agents understand recall limits and result scoping.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise — two short sentences with no filler. The key verb and resource come first, followed by impactful behavioral details and default behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description provides core retrieval semantics, tokenization behavior, and the default validity filter. It does not describe return format or filter interaction, but the required query is clear and optional parameters are mostly self-evident from schema names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 43%, so the description adds meaningful semantics beyond the schema by explaining query tokenization and default fact validity. It does not explain optional filter semantics such as scope or subject, but their names and schema enum/constraints provide reasonable guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'BM25 全文检索记忆' (BM25 full-text search memory) — and adds the important scoping detail that by default only currently valid facts are returned. This distinguishes it clearly from sibling tools like list_memories or save_memory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when you need full-text search over memory, rather than exact listing or mutation. However, it does not explicitly state when to prefer this over list_memories or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_memoryA
修改事实。改 content 会保留旧版本(标失效+superseded_by)并创建新版本(审计链);只改 tags/confidence/subject 则原地更新。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 要修改的 fact id | |
| tags | No | ||
| content | No | ||
| subject | No | ||
| dedup_key | No | ||
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and reveals the most important side effects: changing content preserves the old version (marked invalid + superseded_by) and creates a new version for the audit chain, while changing tags/confidence/subject updates in place. It does not specify behavior for dedup_key changes or possible errors, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. The core purpose is front-loaded, and the behavioral distinction between content changes and metadata changes is stated precisely and efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the main behavioral risk: versioning and the audit chain. It also clarifies which fields are updated in place. Minor gaps remain around dedup_key semantics, return values, and failure behavior, but the essential information needed to call the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 17%, so the description must compensate for missing parameter documentation. It adds meaningful semantics for content, tags, confidence, and subject by explaining whether each triggers versioning or in-place updates, but it says nothing about dedup_key and adds no detail about id. This is partial compensation, not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('修改') and resource ('事实'), and goes beyond the tool name by explaining the actual update semantics. It clearly distinguishes update_memory from sibling tools like save_memory and forget_memory through the versioning versus in-place behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: use this tool when modifying an existing fact. However, it does not explicitly say when to prefer update_memory over save_memory or forget_memory, nor does it mention alternatives or exclusions. The conditional guidance about content versus metadata changes is useful but not a full when-to-use/when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v0.1.0- First observed
consolidate - First observed
forget_memory - First observed
link_memories - First observed
list_memories - First observed
save_memory - First observed
search_memory - First observed
update_memory
TDQS
Each tool maps to a distinct memory operation: create, search, list, update, delete, link, and maintain. The overlap between search_memory and list_memories is clearly resolved by describing full-text vs structured filtering, and update_memory is distinct from save_memory due to versioning semantics.
Most tools follow a clear verb_noun snake_case pattern: save_memory, search_memory, update_memory, forget_memory, link_memories. Minor deviations include the plural 'memories' for list/link while others use singular 'memory', and consolidates is a bare verb without a noun object.
Seven tools is well-scoped for a memory server: it covers ingestion, retrieval, structured listing, mutation, deletion, relationships, and maintenance. Each tool has a clear role and none feels redundant or unnecessary.
The core memory lifecycle is well covered: save, search, list, update, soft/hard delete, link, and consolidation. The main gap is that relationships can be created via link_memories but there is no explicit unlink or relationship-query tool, and there is no dedicated get_memory_by_id, though list_memories likely fills that role.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides persistent memory for AI coding agents via MCP, enabling agents to store and semantically recall facts, events, and lessons across sessions, all running locally without cloud dependencies.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceLocal-first AI memory layer with hybrid retrieval and brain-inspired namespaces. Enables agents to save, search, and manage memories directly via MCP tools.5MIT
- AlicenseCqualityAmaintenanceProvides AI agents with a human-inspired memory layer via MCP, enabling episodic and semantic memory recall, forgetting curves, consolidation, and contradiction detection. It integrates with MCP clients to offer local-first, dependency-free memory management.981MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to maintain persistent personal memory and portable skills across MCP-compliant clients, with hybrid semantic recall and deterministic SQL analytics.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bladeJumper/Mnemo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server