持久化记忆服务器

一个自托管的MCP服务器和Web UI,用于在Claude Code会话之间持久存储记忆、代码片段和代理配置。

  • by utk09
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 utk09/persistent-memory-server

使用说明

持久内存服务器

一个自托管的MCP服务器+web UI,用于在Claude Code会话中持久存储内存、代码段和代理配置。

先决条件

  • Node.js 20+
  • npm

设置

git clone https://github.com/utk09/persistent-memory-server
cd persistent-memory-server
npm install
pwd  # note the absolute path — needed for MCP setup below

跑步

组合(web UI+MCP HTTP在一个进程中)

npm start              # JSON backend
npm run start:sqlite   # SQLite backend

同时启动两台服务器——web UI http://localhost:3377 以及端口3388上的MCP HTTP。一个过程,一个 Ctrl+C 停止一切。

分别地

npm run start:web          # web UI only (port 3377)
npm run start:mcp-http     # MCP HTTP only (port 3388)

MCP服务器(克劳德代码集成)

stdio(本地--推荐):

claude mcp add persistent-memory -- npx jiti /absolute/path/to/persistent-memory-server/src/mcp/server.ts

重新启动克劳德代码。MCP工具将自动可用。

要删除: claude mcp remove persistent-memory

HTTP(网络/远程):

npm run start:mcp-http
# configurable: MCP_PORT=3388 npx jiti src/mcp/server.ts --http

从克劳德代码连接:

claude mcp add persistent-memory --transport http http://<host-ip>:3388/mcp

存储后端

默认情况下,所有数据都存储为JSON文件 data/.要改用SQLite(更好地用于更大的数据集,请通过FTS5进行全文搜索):

# Start with SQLite
npm run start:web:sqlite
npm run start:mcp:sqlite
npm run start:mcp-http:sqlite

# Migrate existing JSON data to SQLite (safe to re-run)
npm run migrate:to-sqlite

从web UI导航栏中的标识按钮设置默认用户/设备名称——这用于标记所有创建的条目,避免匿名归因。

你可以储存什么

回忆

持久注释仅限于其适用的地方:

作用域 加载时 示例用法
全球 始终 编码偏好、通用规则
项目 在匹配项目路径时(前缀匹配) 回购惯例,技术堆栈注释
文件 在项目中的特定文件上 “不要在此处重构遗留解析器”

支持标签、标记内容和可选的过期日期。Monoreps通过前缀匹配自然工作。

代码片段

可重用代码和文本,键入方式为: script, snippet, template, reference,或 tool每个都可以有一个用于语法突出显示的语言标签。

代理

存储代理配置:系统提示、允许的工具列表和权限模型(默认为只读;读写,可选到期)。

搜索

两个后端都支持高级搜索语法:

  • "exact phrase" --短语必须出现(最高分数)
  • -excludeterm --硬排除包含该术语的条目
  • term1 term2 --这两个术语都必须出现;按相关性排序的结果

JSON后端使用评分排名算法。SQLite后端使用FTS5。

MCP工具参考

记忆

工具 说明
memory_create 创建具有作用域、标签和可选到期时间的内存
memory_read 按ID获取内存
memory_update 更新字段;集 expiresAt: null 删除过期
memory_delete 删除内存
memory_list 按范围、项目、标签、用户、设备列出/过滤
memory_search 使用短语/否定语法进行全文搜索
memory_recall 获取上下文的所有相关记忆(全局+项目+文件)
context_checkpoint 将会话摘要另存为项目范围内存

片段

工具 说明
snippet_create 创建代码段
snippet_read 按ID获取代码片段
snippet_update 更新代码段
snippet_delete 删除代码段
snippet_list 按类型、标签、用户、设备列出/过滤
snippet_search 全文搜索

代理

工具 说明
agent_create 创建代理配置
agent_read 通过ID获取代理
agent_update 更新代理
agent_delete 删除代理
agent_list 按标签、用户、设备列出/过滤
agent_search 按名称/描述搜索

会话和设置

工具 说明
session_list 列出当前/过去的MCP会话
session_get 按ID获取会话
settings_get 读取配置的默认用户/设备标识

其他脚本

npm run export:file       # Export all data to a JSON file
npm run import:file       # Import data from a JSON file
npm run stats             # Print usage stats
npm run migrate:to-sqlite # Migrate JSON data to SQLite (idempotent)
npm run lint              # Type-check + lint
npm run lint:fix          # Auto-fix lint issues

数据存储

后端 位置 备注
JSON(默认) data/memories/, data/snippets/, data/agents/ 每条记录一个文件
SQLite data/db.sqlite WAL模式,FTS5全文搜索

日志转到 logs/ 每天轮换(保留30天)。数据和日志都不会被git跟踪。


许可证: AGPL-3.0