持久内存服务器
一个自托管的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://: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
