README
🚀 记忆 MCP 服务器
记忆 MCP 服务器是一个专为大型语言模型 (LLMs) 打造的长期记忆存储系统,它遵循 Model Context Protocol (MCP) 标准。该系统能助力 LLMs 记住整个项目历史中的上下文信息,即便跨越多个会话也能轻松实现。借助语义搜索和嵌入式向量技术,它可提供过去交互和决策的相关上下文。
🚀 快速开始
先决条件
- Node.js (v18 或更高版本)
- 在本地运行 Ollama(用于嵌入),且必须安装
nomic-embed-text模型 - SQLite3
安装步骤
- 克隆仓库
- 安装依赖:
npm install - 构建项目:
npm run build - 创建配置文件
.env:OLLAMA_HOST=http://localhost:11434 DB_PATH=memory.db
使用方法
-
以开发模式启动服务器:
npm run dev这将:
- 编译 TypeScript
- 复制 schema 文件
- 启动带有自动重载功能的服务器
-
通过标准输入输出与 Cursor 兼容连接
✨ 主要特性
- 基于项目的记忆组织:按项目管理记忆
- 语义搜索:使用 Ollama 嵌入(nomic-embed-text 模型,768 维度)
- 多种记忆类型:
- 对话:对话上下文和重要讨论
- 代码:实现细节和更改
- 决策:关键架构和设计选择
- 引用:外部资源和文档链接
- 丰富的元数据存储,包括:
- 实现状态
- 关键决策
- 创建/修改的文件
- 代码更改
- 添加的依赖项
- 标签系统:用于记忆组织
- 关系跟踪:在记忆之间建立联系
📦 安装指南
克隆仓库
首先,克隆项目仓库到本地。
安装依赖
在项目根目录下,执行以下命令安装所需依赖:
npm install
构建项目
安装完依赖后,构建项目:
npm run build
配置文件
创建配置文件 .env,并添加以下内容:
OLLAMA_HOST=http://localhost:11434
DB_PATH=memory.db
💻 使用示例
基础用法
启动服务器
安装并配置完成后,以开发模式启动服务器:
npm run dev
存储记忆
nomic store-dev-memory --content "这是一个测试记忆" --tags test,example
列出记忆
nomic list-dev-memories
搜索记忆
nomic search --query example
📚 详细文档
数据库架构
系统使用 SQLite,包含以下表:
核心表
projects:项目信息和元数据memories:存储各种开发上下文的记忆条目embeddings:语义搜索的嵌入式向量(768 维度)
组织表
tags:记忆组织标签memory_tags:记忆与标签之间的多对多关系memory_relationships:记忆条目之间的有向关系
MCP 工具
以下工具通过 MCP 协议可用:
记忆管理
store-dev-memory:创建新的开发记忆,包含:- 内容
- 类型(对话/代码/决策/引用)
- 标签
- 代码更改
- 创建/修改的文件
- 关键决策
- 实现状态
list-dev-memories:列出现有记忆,可选标签过滤get-dev-memory:通过 ID 获取特定记忆search:语义搜索,跨记忆使用嵌入式向量
开发环境
在开发时,执行以下命令:
npm run dev
这将:
- 杀死现有服务器实例
- 重建 TypeScript 代码
- 将 schema.sql 复制到 dist 目录
- 启动开发模式的服务器
依赖项
关键依赖:
@modelcontextprotocol/sdk@^1.7.0:MCP 协议实现better-sqlite3@^9.4.3:SQLite 数据库接口node-fetch@^3.3.2:Ollama API 的 HTTP 客户端zod@^3.22.4:运行时类型检查和验证
项目结构
memory-mcp-server/
├── src/
│ ├── db/
│ │ ├── init.ts # 数据库初始化
│ │ └── service.ts # 数据库服务层
│ ├── memory.js # 记忆管理逻辑
│ └── search.js # 语义搜索功能
├── package.json # 依赖管理和脚本
└── .env # 环境变量配置
🔧 技术细节
本系统采用 Model Context Protocol (MCP) 标准,利用语义搜索和嵌入式向量技术,为大型语言模型 (LLMs) 提供长期记忆存储功能。系统使用 SQLite 数据库来存储记忆和相关元数据,通过 Ollama 的 nomic-embed-text 模型进行语义搜索的嵌入式向量生成。在开发过程中,使用 TypeScript 进行编码,并通过 npm 管理依赖。同时,系统提供了一系列 MCP 工具,方便用户进行记忆的管理和搜索。
📄 许可证
文档中未提及许可证相关信息。
⚠️ 重要提示
- 确保 Ollama 服务在本地运行,并且
nomic-embed-text模型已加载。 - 数据库文件 (
memory.db) 会在项目目录中创建,用于存储记忆数据。 - 代码和配置文件请根据具体需求进行调整。
💡 使用建议
在使用过程中,可根据项目需求合理设置记忆的标签和类型,以便更高效地管理和搜索记忆。同时,定期备份数据库文件,防止数据丢失。
🤝 贡献指南
欢迎贡献!请参考 CONTRIBUTING.md 参与开发。
Scan to join WeChat group