mcp-memory-libsql
spences10/mcp-memory-libsql加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你刚和 AI 聊完一个复杂项目,关掉对话窗口,AI 第二天就忘了你昨天讨论了什么。这是每一个 AI 应用开发者都会遇到的痛点——大语言模型本身没有持久记忆。上下文窗口(Context Window)限制意味着你不可能把历史对话全部塞进去,而 AI 的"思考"只在当前会话内有效。
传统的解决方案要么是把对话历史压缩后塞进 prompt(成本高、容易失真),要么是外挂一个向量数据库(架构复杂、引入额外依赖)。而 mcp-memory-libsql 给出了一条更轻量的路径——基于 MCP(Model Context Protocol)协议,为 AI Agent 构建一个像人类海马体一样的高性能持久记忆系统。
mcp-memory-libsql 由开发者 spences10 创建,2025年1月正式开源,项目采用 MIT 许可证,目前已收获 87 颗 GitHub Stars、18 个 Fork。它深度整合了 Model Context Protocol(MCP)——Anthropic 主导推出的 AI 上下文通信标准协议,以及 libSQL(SQLite 的开源衍生版本,由 Turso 团队维护),用不到 2000 行 TypeScript 代码实现了一个完整的关系型知识图谱记忆系统。
MCP 协议是 2024-2025 年 AI Agent 生态中最受关注的基础设施标准之一,它定义了 AI 模型与应用工具之间的通信规范。mcp-memory-libsql 将自己定位为 MCP 生态中的"记忆层"组件,让任何支持 MCP 的 AI 客户端(如 Claude Desktop、Cline)都能无缝接入持久记忆能力。
项目的技术架构清晰明了,分为三个核心层次:
数据持久层 基于 libSQL,使用三张核心表构建记忆存储:
这套 Schema 设计直接借鉴了知识图谱领域的经典思想,用关系型数据库的灵活性换取了部署的极简性——不需要单独的向量数据库,不需要 Milvus 或 Pinecone,一行 npx mcp-memory-libsql 就能跑起来。
协议适配层 基于 tmcp(TypeScript MCP)库,实现了标准的 MCP 服务端规范。开发者通过 server.tool() 注册工具,@tmcp/adapter-valibot 提供 JSON Schema 验证,@tmcp/transport-stdio 处理标准输入输出的通信。所有工具均标注了 readOnlyHint 和 idempotentHint,方便 AI 客户端进行智能调度。
应用工具层 暴露了 5 个核心 MCP 工具:
create_entities:创建或更新实体及其观察记录search_nodes:基于文本的相关性排名搜索create_relations:建立实体间的有向关系delete_entity / delete_relation:删除操作项目在 sanitize_input() 函数中实现了输入过滤机制,专门应对 Prompt Injection(提示词注入) 风险:
export function sanitize_input(input: string): string {
return input
// 移除不可打印控制字符(保留换行和 Tab)
.replace(/[^\P{C}\n\t]/gu, '')
// 折叠过量空行
.replace(/\n{3,}/g, '\n\n')
.trim();
}
AI Agent 在存储实体描述时,可能将恶意指令嵌入观察记录。sanitize_input() 在写入数据库前清理控制字符和异常格式,防止存储层污染后续检索。
每个字段都有明确的长度约束:实体名 ≤256 字符、类型 ≤256 字符、单条观察 ≤4096 字符、每个实体最多 100 条观察、每次请求最多 50 个实体、100 条关系。这些数字看起来随意,但背后的逻辑是:在保持足够表达能力的同时,防止恶意 Prompt 制造超长字符串导致数据库压力或 token 浪费。
create_entities 实现采用事务包裹写操作,先 UPDATE(尝试更新已有记录),若无影响行再 INSERT。observations 表与 entities 表通过外键约束关联,删除实体时会级联清理关联观察记录,保持数据一致性。
项目使用 Vitest 作为测试框架,已有 client.test.ts 和 sanitize.test.ts 两个测试文件,覆盖数据库操作和输入过滤逻辑。不过从测试文件规模来看,覆盖率仍有提升空间。
对于有 Node.js 环境的开发者(项目要求 Node.js 24+),上手非常直接。以 Cline 配置为例,只需要在 MCP 设置中加入一段 JSON:
{
"mcpServers": {
"mcp-memory-libsql": {
"command": "npx",
"args": ["-y", "mcp-memory-libsql"],
"env": {
"LIBSQL_URL": "file:/path/to/your/database.db"
}
}
}
}
本地文件模式无需任何账号,直接指定数据库路径即可。远程模式(连接 Turso)也只需额外配置 LIBSQL_AUTH_TOKEN。项目对 WSL 环境的支持文档也很详细,照顾了 Windows 开发者群体。
没有 Web UI 是这个项目的一个设计取舍——它明确面向的是 AI 开发者和技术用户,通过 API/Tools 接口暴露能力,而非面向终端用户的图形界面。这也解释了为什么 quick_deploy 标注为 unsupported:它不是一个开箱即用的"产品",而是一个需要集成到 AI 应用中的"组件"。
不适用于大规模数据:基于 SQLite/libSQL 的单文件数据库,在数据量超过百万实体后,文本搜索性能和事务并发能力都会遇到瓶颈。它适合个人或小团队的 AI 助手场景,但不适合企业级知识库。
缺少向量搜索:项目描述中提到"vector search"和"embeddings",但实际代码中并未使用任何向量嵌入模型。search_nodes 使用的是 LIKE + relevance ranking(字段加权匹配),并非真正的语义向量检索。这可能是 v0.0.17 版本的功能路线图方向,值得关注后续版本。
远程数据库安全保障:当连接 Turso 远程数据库时,LIBSQL_AUTH_TOKEN 直接明文写在配置文件中,生产环境需要配合秘钥管理服务(如 AWS Secrets Manager)使用。
mcp-memory-libsql 代表了 AI Agent 基础设施中一个重要的细分方向——轻量级持久记忆层。在 2025 年的 MCP 生态中,已经出现了多个记忆系统实现,而 mcp-memory-libsql 的差异化在于极简的依赖(只用一个 libSQL,不引入额外的向量数据库)和扎实的安全防护意识。
对于想为自己的 AI 助手添加"记忆"能力的开发者,这个项目提供了极好的参考实现:Schema 设计、输入过滤、MCP 协议集成,都有可以直接抄作业的代码。
分析基于 GitHub 仓库 v0.0.17 版本,源码约 2000 行 TypeScript,MIT 许可证,可自由商用。