使用说明
本地内存MCP服务器(项目内存库)
🇬🇧 英文描述
🌟 设计理念与动机
“你的记忆属于你,而不是云。”
我创建这个项目有一个简单而强大的目标: 全面数据主权. 在基于订阅的人工智能服务和云依赖的时代,我想要一个解决方案:
- 100%本地和私人: 任何数据都不会离开你的机器。无API费用,无隐私风险。
- 永久的: 只要你的硬盘存在,你的人工智能的记忆就存在。无需担心服务中断。
- 无限容量: 唯一的限制是您的本地磁盘空间。
- 高性能: 利用本地GPU加速(TensorRT/CUDA)实现闪电般快速的嵌入和检索。
这是一个 内存上下文协议(MCP) 服务器,为您的AI(如Gemini CLI、Claude Desktop)提供持久、可搜索和不断发展的长期内存。
✨ 主要特点
- 混合搜索架构: 联合 LanceDB (用于语义理解的矢量搜索)和 SQLite FTS5 (全文搜索以精确匹配关键字)以实现高精度召回。
- 硬件加速: 由ONNX Runtime提供支持,带有TensorRT/CUDA执行提供程序,用于毫秒级嵌入生成。
- 标准MCP工具:
save_memory:存储片段、代码、文档或个人事实(具有自动重复检测功能)。search_memory:语义和关键字检索。list_memories:查看最近的条目。delete_memory:管理和清理数据。update_memory:按ID更新现有内存。
- 延迟加载: 通过按需资源初始化优化启动时间。
- 零成本: 完全在现有硬件上运行。
🛠️ 先决条件
- 操作系统: Windows(已测试)
- python 3.10或更高。
- 硬件: 建议使用NVIDIA GPU(用于TensorRT/CUDA加速),但适用于CPU。
- MCP客户端: Gemini CLI 或 克劳德桌面版或任何可以配置MCP的IDE。
🚀 安装和设置
1.克隆存储库
git clone https://github.com/YanZiBin/Local-memory-mcp.git
cd Local-memory-mcp
2.创建Python环境(Conda推荐)
为了确保GPU库正常工作,强烈建议使用Conda。
conda create -n Local-memory-mcp python=3.10
conda activate Local-memory-mcp
3.安装依赖项
pip install fastmcp lancedb onnxruntime-gpu transformers numpy uvicorn
(注意:如果您没有GPU,请安装 onnxruntime 而不是 onnxruntime-gpu)
4.下载嵌入模型
此项目使用 BAAI/bge-m3 转换为ONNX这里。您需要将模型文件下载到 bge-m3-onnx 目录。
你可以使用 huggingface-cli 或手动下载这些文件:
config.jsonmodel.onnxmodel.onnx_datavocab.txtsentence_transformers.onnxsentence_transformers.onnx_datatokenizer_config.jsontokenizer.json
将它们放入名为的文件夹中 bge-m3-onnx 在项目根中。
🏃♂️ 运行服务器
由于此服务器使用大量本地型号,我们建议 手动启动(SSE模式) 为了稳定。
-
启动服务器: 打开终端并运行:
python server.py等到你看到:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) -
连接您的客户端(例如Gemini CLI):
编辑Gemini CLI配置文件(通常在
~/.gemini/settings.json或%USERPROFILE%\.gemini\settings.json在Windows上):{ "mcpServers": { "local-memory": { "url": "http://localhost:8000/sse", "type": "sse" } } } -
开始使用它! 打开Gemini CLI并尝试:
“节省内存:我的项目使用Python 3.10。” “在我的记忆中搜索‘项目’。”
🗺️ 路线图
我们目前正在过渡到 第4阶段(内存管理).
-
[x] 第一阶段:原型
- 使用初始化MCP服务器
fastmcp. - 基本内存存储(dict)。
- 实施基本
save_memory&search_memory(关键字匹配)。 - 使用Gemini CLI进行手动连接测试。
- 使用初始化MCP服务器
-
[x] 第二阶段:坚持
- 整合 SQLite FTS5 和 LanceDB.
- 整合本地 ONNX嵌入模型.
- 双存储架构(全文+矢量)。
list_memories和delete_memory工具。
-
[x] 第三阶段:智能检索(已完成)
- [x] 实施 RRF(互惠等级融合) 高质量混合搜索算法。
- [x] 添加相似性阈值和Top-K限制以减少噪声。
- []实施 上下文检索 (增强的上下文存储)。
- [](可选)添加Reranker以获得更高的精度。
-
[ ] 阶段4:内存管理
- [x] 保存时的重复检测(基于相似性)。
- []生命周期管理(时间衰减、冲突标记)。
-
[ ] 阶段5:高级优化
- []暴露 资源:项目总结、ADR(建筑决策记录)护栏。
- []建筑护栏(召回违规ADR)和任务链跟踪。
🇨🇳 中文说明
🌟 设计初衷
“你的记忆属于你,而不是云端。”
开发这个项目的初衷非常纯粹:实现完全的数据主权。 在这个万物订阅制、隐私担忧日益严重的时代,我希望构建一个这样的解决方案:
- 完全本地化 & 隐私安全: 没有任何数据会上传云端。没有 API 调用费,没有隐私泄露风险。
- 永久存储: 只要你的硬盘还在,你的 AI 记忆就在。不必担心服务商倒闭或“跑路”。
- 无限容量: 唯一的限制是你本地硬盘的大小(相当于无限)。
- 极致性能: 利用本地 GPU 加速(TensorRT/CUDA),实现毫秒级的记忆存取。
这是一个 MCP(模型上下文协议) 服务器,它为你的 AI 工具(如 Gemini CLI, Claude Desktop)提供了一个持久化、可搜索、不断进化的“外脑”。
✨ 核心功能
- 混合搜索架构: 结合了 LanceDB(向量搜索,理解语义)和 SQLite FTS5(全文搜索,精准匹配关键词),并通过 RRF (倒数排名融合) 算法进行智能排序,确保召回率和准确率。
- 硬件加速: 基于 ONNX Runtime 和 TensorRT/CUDA,充分释放本地显卡性能。
- 标准 MCP 工具集:
save_memory: 保存代码片段、文档总结或个人事实(自动检测重复内容)。search_memory: 语义或关键词检索(支持相似度阈值过滤)。list_memories: 查看最近的记忆。delete_memory: 删除过时信息。update_memory: 按 ID 更新现有记忆。
- 懒加载设计 (Lazy Loading): 优化启动流程,按需加载重型模型,拒绝卡顿。
- 零成本: 以前需要付费购买的向量存储服务,现在免费运行在你自己的电脑上。
🛠️ 环境要求
- 操作系统: Windows (已充分测试)
- python 3.10 或更高版本。
- 硬件: 推荐使用 NVIDIA 显卡(以获得 TensorRT/CUDA 加速),但也支持 CPU 运行。
- MCP 客户端: Gemini CLI 或 克劳德桌面版。或者任何可以配置mcp的IDE。
🚀 安装与配置指南
1. 克隆项目
git clone https://github.com/YanZiBin/Local-memory-mcp.git
cd Local-memory-mcp
2. 创建 Python 环境 (强烈推荐 Conda)
为了避免 CUDA 依赖冲突,建议使用 Conda。
conda create -n Local-memory-mcp python=3.10
conda activate Local-memory-mcp
3. 安装依赖库
pip install fastmcp lancedb onnxruntime-gpu transformers numpy uvicorn
(注:如果你没有 NVIDIA 显卡,请将 onnxruntime-gpu 替换为 onnxruntime)
4. 下载嵌入模型 (Embedding Model)
本项目使用 BAAI/bge-m3 的 ONNX 量化版本这里。你需要将模型文件下载到项目根目录下的 bge-m3-onnx 文件夹中。
你可以使用 huggingface-cli 或手动下载以下文件:
config.jsonmodel.onnxmodel.onnx_datavocab.txtsentence_transformers.onnxsentence_transformers.onnx_datatokenizer_config.jsontokenizer.json
确保它们都在 bge-m3-onnx 文件夹内。
🏃♂️ 运行与使用
由于本项目加载了本地大模型,为了稳定性,我们推荐使用 手动启动 (SSE 模式)。
-
启动服务器: 打开终端(CMD/PowerShell),运行:
python server.py等待直到看到提示:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) -
连接客户端 (以 Gemini CLI 为例):
编辑你的 Gemini CLI 配置文件(通常位于
~/.gemini/settings.json或 Windows 的%USERPROFILE%\.gemini\settings.json):{ "mcpServers": { "local-memory": { "url": "http://localhost:8000/sse", "type": "sse" } } } -
开始体验! 打开 Gemini CLI,直接对话:
“帮我记住:我的项目运行在 Python 3.10 环境下。” “搜索记忆:关于项目环境的信息。”
🗺️ 开发路线图 (Roadmap)
目前项目正过渡到 第四阶段:记忆管理。
-
[x] 第一阶段:原型验证
- 使用
fastmcp初始化 MCP 服务器。 - 使用内存字典进行临时存储。
- 实现基础的
save_memory和search_memory(关键词匹配)。 - 配置 stdio 并在 Gemini CLI 中测试手动连接。
- 使用
-
[x] 第二阶段:持久化存储
- 引入 SQLite FTS5 和 LanceDB。
- 集成本地 ONNX 嵌入模型 生成向量。
- 实现双库存储(全文 + 向量)。
- 新增
list_memories(列出记忆)和delete_memory(删除记忆)工具。
-
[x] 第三阶段:智能筛选 (已完成)
- [x] 实现 RRF (倒数排名融合) 算法,实现高质量混合检索。
- [x] 增加相似度阈值和 Top-K 限制,减少噪声。
- [ ] 实现 上下文检索(增强文本存储)。
- [ ] (可选)加入 Reranker 重排序模型以提升精度。
-
[ ] 第四阶段:记忆管理
- [x] 保存时自动检测重复内容(基于相似度)
- [ ] 实现生命周期管理(时间衰减、冲突标记)。
-
[ ] 第五阶段:高级优化
- [ ] 暴露 资源(资源):项目摘要、ADR 架构决策记录守栏等。
- [ ] 实现架构守栏(违规时自动召回 ADR)和任务链跟踪。
许可证: 麻省理工学院 作者 [晏子斌]
