Skip to main content
Glama

Living Memory Engine

一个你的智能体跨会话、跨模型共享的持久世界。

Living Memory Engine (LME) 是一个 Model Context Protocol (MCP) 记忆服务器。它为你的智能体——Claude Code、Cursor、ChatGPT、claude.ai,以及任何 MCP 客户端——提供了共享的去处:记住、检索,并交接工作。告诉某个智能体——或它留下的工作——明天可以被另一个厂商的另一个智能体捡起来接续。

  • 网站: https://viibe.to/living-memory/

  • 远程 MCP 端点: https://lme.viibe.to/mcp(Streamable HTTP,OAuth 2.1,支持动态客户端注册)

  • 免费 24 小时小房间: 无需注册——POST https://lme.viibe.to/ons/new 会返回一个开箱即用的 MCP URL

  • 本地 stdio 服务器: npm 上的 @nature-labs/lme-mcp(开源,即本仓库)

  • 智能体指南: SKILL.md · llms.txt

心智模型

一个世界(world)是持久存在的地方——它是一个项目,而不是一个人或一个智能体。智能体是访客(visitors):他们到来,留下些东西,然后被替换。协作是通过改造共享的场所发生的,而不是智能体之间互相指名道姓。记忆是要留下来并能被搜索的东西;**交接(handoff)**是正在流转、终将过期的东西。人是唯一全程在场的参与者。

Related MCP server: mnemory

连接

远端——托管的世界,或免费房间

托管服务器使用 Streamable HTTP,并提供 OAuth 2.1(动态客户端注册)。

Claude Code:

claude mcp add --transport http living-memory https://lme.viibe.to/mcp

claude.ai / Claude Desktop: 设置 → 连接器 → 添加自定义连接器 → https://lme.viibe.to/mcp。

ChatGPT: 设置 → 开启 开发者模式,然后把 https://lme.viibe.to/mcp 添加为自定义连接器。可用性可能会视你的 ChatGPT 订阅方案而定。

现在是 2026 年。MCP 客户端的支持地图变更速度比 README 还要快——去问你的智能体,你的客户端今天是否支持远程 MCP。

免费 24 小时房间,无需注册——用来体验完整的循环,或者给那些不习惯搞 OAuth 的客户端:

curl -X POST https://lme.viibe.to/ons/new
# → {"url": "https://lme.viibe.to/t/<token>/mcp", "expiresAt": "..."}

返回的 URL 是随时可用的的 streamable-HTTP MCP 端点(不需要认证头)。它在铸造后的 24 小时过期,届时其数据会被销毁。你能用,但只能保证 24 小时。一个房间和世界的区别,只在存活多久,而非能力权限。

本地——stdio,开源

npm 包将记忆体系作为一个本地 stdio 服务器运行:本机上一个 JSON 文件,可完全离线运行。

claude mcp add living-memory -s user -- npx -y @nature-labs/lme-mcp

任何 stdio MCP 客户端:命令 npx,参数 ["-y", "@nature-labs/lme-mcp"]。设置、嵌入供应商、环境与问题排查,见 lme-mcp/README.md——它是为读者(编码智能体)而写的,所以把它交给你的编码智能体吧。

工具

工具

作用

memory_add

存储一条持久化的事实、决策或验证

memory_search

按语义(MMR 检索)召回记录,而非字符串

memory_state

此刻记忆里有什么——计数和最新的事实

memory_forget

删除一条记忆

handoff_post / handoff_read / handoff_list

你的智能体之间的私有 1–72 小时消息总线——原样笔记传递,带服务器盖戳的发送者和路由

world_list

这个连接可访问哪些世界

client_mint / client_list / client_revoke

为不能登录的智能体签发/撤销可回收的 URL 密钥(仅托管世界中的登录者)

已认证的托管世界拥有全部十一个工具。免费房间提供记忆表层、交接邮箱和一个 world_list。本地 stdio 服务器提供四个记忆工具。

房间与世界的区别

免费房间

世界

生命周期

24 小时,之后删除

持续保存

注册

不需要——造一个 24 小时 URL

有 OAuth 登录,$9/月

记忆 + 交接

支持——完整闭环

支持 —— 完整闭环

客户端密钥(client_mint)

不支持

支持——90 天可撤销租约

交接不是付费功能:免费房间也有,只是情报较弱(8 条活笔记),且更递不会比房间活得更久。差别只是持久时长,而不是功能有无。

与世界一起工作

工具告诉你能如何;这里是访客怎么显然的使用方式:

  • 到达即读。 开始干活之前先调用 memory_state / memory_search——当前进度处于世界之中,而不是对话里。

  • 持久的东西 → 记忆。 一条你希望“你本人消失后仍有意义”的决策、事实或纠错 → memory_add。

  • 在途的东西 → 交接。 你要传给下一个智能体的工作 → handoff_post。交接的note会过期——千万别把它当永久存档。

  • 离开时留下可续接的世界。 停下之前,把菜种好,让下一个进门的访客从你现在的状态接续,而不是重新从零开始。

  • 智能体不需要彼此交流。 改变的是共享的“世界”;下一个智能体直接读就已经读到。

记忆是怎么运转的

底层引擎(engine/ · @nature-labs/living-memory-engine)把记忆模型当成一种心智,不是一条 日志:

  • 不节拖累整个上下。 完整历史从不重新传给模型。每次召回时,按照与语义的相似度 + 多样性(MMR),返回 top-K 条最相关的记忆。

  • 会遗忘是 feature。 记忆衰减(艾宾沃尔德式),被读到会复苏;相互重复时会合并;因此,agent 可以在一个有多长大概恒定的上下文窗口里无限进行,而不是面对着无限膨胀的转录。

  • 确定性可与评估。 engine/eval/run.ts 驱动真引擎,穿越四个“假设”情景——它是对一个“无脑把一切都重放回去”的 basaeLine 的度量,不是测试套件;连 miss 也吹出来给你看(cd engine && npm run eval)。

仓库里有什么

目录

角色

lme-mcp/

作为 @nature-labs/lme-mcp 发行的 stdio MCP 服务器

engine/

@nature-labs/living-memory-engine —— 术无关的记忆引擎(遗忘 / 合并 / 出结晶 / 检索),纯 ports & adapters

web/

from 原来的浏览器实验室:Vite + 原生 TypeScript 聊天应用,用清迈(Chiang Mai)这个城市形体(一个感知真实天气、跨会话记住你的城市体——实现在 cm.viibe.to上)验证了引擎

mobile/

早期 Expo 原型,已冻结

托管在并发的非特权服务器(lme.viibe.to)运行同一个 engine,但它的部署是在本仓库之外的。

状态

Pre-alpha,快速迭代。上头的连接路径都已被测试过,本地包的已验证模型特签矩阵见 lme-mcp/README.md。产品更有有一个条理、到哪、验证于何种环境的入口,见 What's new。

许可证

Apache-2.0。


作为 Viibe World OS 的一部分而建造——一个知道自己是系统的系统。

Available Tools

4 tools
memory_addRemember a factAInspect

Store a durable fact, preference, decision, or correction so FUTURE sessions remember it. Call this whenever the user states something worth carrying forward — a preference, a project fact, a decision, a correction — without being asked. Memory persists across sessions and processes.

NameRequiredDescriptionDefault
tagsNooptional tags
contentYesThe fact to remember, as a short natural-language statement
importanceNo0–10, default 7

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It does disclose the most important behavior: memory persists across sessions and processes. But it does not explain what happens if the same fact is added multiple times, whether overwrites/corrections replace existing memory, or what the tool returns or fails on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively tight and front-loaded with the core action. The list of example memory types is somewhat redundant with the phrase 'worth carrying forward,' but each sentence still contributes to deciding when and what to invoke.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple write/mutation tool with three parameters and no output schema, the description gives sufficient operational context: what to store, when to call, and the persistence guarantee. It lacks minor detail about edge cases or return behavior, but is likely adequate for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines content, tags, and importance. The description adds mild guidance about what kind of content should be stored (preferences, corrections, decisions), but it does not add meaningful semantic detail beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Store a durable fact, preference, decision, or correction') and its outcome ('FUTURE sessions remember it'). It is distinguishably an add/write operation compared to siblings like memory_search and memory_forget, though it never names these siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear triggering context: 'Call this whenever the user states something worth carrying forward' and lists examples like preferences, facts, and corrections. However, it does not state when not to use the tool or explicitly point to alternative tools like memory_search or memory_forget.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_forgetForget a memoryAInspect

DESTRUCTIVE. Deletes EVERY memory whose content contains the query as a case-insensitive substring — not semantic, not a single-item delete, and there is no undo. A short query deletes broadly. Use only when the user corrects a stored fact or explicitly asks you to forget something, and prefer a long distinctive phrase; check memory_state first if unsure.

NameRequiredDescriptionDefault
queryYesText to match against memories to delete

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description fully carries the behavioral transparency burden. It clearly discloses the destructive, irreversible nature of the operation, the case-insensitive substring matching behavior, and the broad-scope risk of short queries. This level of warning is critical for a destructive delete tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and dense, front-loading the critical warning 'DESTRUCTIVE' before any other detail. Every sentence adds operational value, including when to use the tool, how to phrase the query, and what to check beforehand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature, the low parameter count, and the absence of an output schema, the description covers all essential aspects: action, matching semantics, irreversibility, risk, usage conditions, and a pre-check alternative. An agent is sufficiently prepared to avoid dangerous misuse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the query parameter completely (100% coverage), but the description adds important semantic detail: the query is matched as a case-insensitive substring against memory content, not as a semantic match or single-item identifier. This extra context meaningfully improves the agent's understanding of the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: deletes every memory whose content contains a case-insensitive substring, and explicitly distinguishes this from semantic or single-item delete. This differentiates the tool from siblings like memory_search and memory_add without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: only after user correction of a stored fact or explicit request to forget. It also warns of broad deletion risk, recommends using a long distinctive phrase, and suggests checking memory_state first when uncertain, giving the agent concrete decision-making guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_stateMemory statusAInspect

Summarize what is currently in memory: counts plus the most recently stored facts. Reads the store directly — no embedding call, no network. Use to orient yourself at session start, or when the user asks what you remember. (selfFacets is always 0: this server does not run the engine's consolidation pass, so crystallization never happens.)

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden, and it does well: it discloses that the tool reads the store directly, requires no network or embedding, and notes the selfFacets-is-always-0 quirk with its root cause (no consolidation pass). This adds meaningful behavioral information an agent would not infer from the name or empty schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is this concise and well-structured: the main sentence states the function, the second sentence adds differentiating behavior (no embedding/network), the third gives usage guidance, and the parenthetical discloses a critical invariant. No word is wasted, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, zero-parameter tool with no output schema, the description is fully sufficient: it explains what the tool returns, when to call it, what side effects it does not have, and the only significant edge case. The agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters, so the description does not need to explain parameter behavior. It instead clarifies what the output contains (counts and recent facts), which is the appropriate compensating information. The baseline of 4 for zero-parameter tools applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Summarize') and a precise resource ('what is currently in memory'), with output detail ('counts plus the most recently stored facts'). It also distinguishes itself from search-like siblings by noting it reads the store directly without embedding calls or network access, so an agent can tell this from memory_search at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage context: 'Use to orient yourself at session start, or when the user asks what you remember.' This is clear and actionable. However, it does not explicitly state when to prefer a sibling alternative such as memory_search for a specific fact lookup, so it stops one step short of full exclusion guidance.

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.

  1. 4 tool updatesv0.1.1
    • First observedmemory_add
    • First observedmemory_forget
    • First observedmemory_search
    • First observedmemory_state

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: add, search, summarize, and delete. There is no meaningful overlap between retrieval (search) and store-state inspection (state), and forget is explicitly destructive and separate.

Naming Consistency4/5

All tools share a consistent memory_ prefix and lowercase style. memory_state is a noun where the others use action verbs, which is a minor deviation but does not create confusion.

Tool Count5/5

Four tools is a well-scoped, focused set for a memory engine. Each tool covers a core need without unnecessary surface area or duplication.

Completeness4/5

The toolset covers the essential lifecycle: store, retrieve, inspect state, and delete. A precise single-item delete or explicit memory update would round it out, but the destructive substring delete plus memory_add makes common workflows workable.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server providing managed persistent memory for AI agents. Read and write structured state across sessions, tools, and restarts at 1000+ requests per second, with no infrastructure to self-host or operate.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted MCP server giving AI agents persistent memory for personalization and context across conversations.
    152 PyPI
    281
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing persistent memory for AI agents, enabling them to read, write, and query memories across sessions.
    9
    8 npm
    MIT