关于 Memory Bank MCP Server
Memory Bank MCP Server 为项目路径管理项目专属的记忆数据,适用于需要保存背景、决策和进度信息的开发团队。它使用项目目录中的 SQLite 数据库,并通过标准 MCP 工具读写不同信息分区。
主要功能
- 01按项目路径独立存储
- 02SQLite 数据库持久化
- 03初始化与状态检查
- 04读取和更新记忆条目
- 05按信息分区组织内容
适用场景
- 01记录项目背景与目标
- 02保存技术决策及其原因
- 03跟踪进度和近期重点
- 04整理可复用系统模式
MCP 相关
它通过 MCP 工具让客户端初始化记忆库、查询状态,并读取或更新项目记忆分区。数据按项目路径保存在 SQLite 数据库中。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Memory Bank MCP 服务
这是一个用于管理项目专属“记忆库”数据的模型上下文协议(MCP)服务。它使用 SQLite 数据库存储和检索与项目相关的上下文信息,例如产品背景、决策记录、进度更新等。
功能
- 基于项目: 为指定的每个项目路径维护独立的记忆库。
- SQLite 存储: 将数据存储在项目目录下的
memory-bank/memory.db文件中,便于进行结构化、高效的访问。 - 模块化: 将记忆库管理逻辑封装为独立的 MCP 服务。
- 标准化接口: 提供一组用于与记忆库交互的 MCP 工具。
使用 npx 运行(推荐)
此服务已发布到 npm,可直接使用 npx 运行,无需手动克隆、安装或构建。
运行服务
运行此服务的主要方式是使用 npx,直接从 npm 注册表执行此软件包:
npx @telagod/memory-bank-mcp-server
Node.js 版本要求:
- 需要安装 Node.js 18.0.0 或更高版本(
>=18.0.0)。
平台相关注意事项:
-
Windows: 如果已正确安装 Node.js v18+,并将其添加到系统的 PATH 环境变量中,则可以直接在命令提示符、PowerShell 或 Windows Terminal 中运行
npx命令。 -
macOS / Linux / WSL(适用于 Linux 的 Windows 子系统):
- 检查 Node.js 版本: 运行
node -v。 - 可能遇到的问题: 系统软件包管理器(如 Ubuntu/Debian 上的
apt)提供的默认 Node.js 版本可能较旧(例如 v12.x)。使用旧版 Node.js 运行npx很可能会失败。 - 推荐解决方案: 使用 NVM(Node 版本管理器) 或 NodeSource 等 Node 版本管理器安装和管理 Node.js 版本。系统软件源中的版本通常落后于最新的 Node.js 版本。
- 使用 NVM(示例):
- 安装 NVM(请查看 NVM 官方仓库以获取最新命令):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 重启终端,或运行 NVM 安装程序提示的命令。
- 安装 Node.js v18+ 版本:
nvm install 18(或指定版本,例如nvm install 18.17.0) - 使用已安装的版本:
nvm use 18 - 现在,
npx @telagod/memory-bank-mcp-server命令应该可以正常运行。
- 安装 NVM(请查看 NVM 官方仓库以获取最新命令):
- 检查 Node.js 版本: 运行
此服务通常由 MCP 宿主应用(如 Roo Code)根据其配置(例如 mcp_settings.json)自动启动,而 npx 命令是其底层运行方式。
集成指南(使用 npx)
你可以将此 Memory Bank MCP 服务集成到支持 MCP 的应用程序(如 RooCode)中。建议使用 npx 运行此服务。
RooCode 配置示例
-
打开 RooCode 的
mcp_settings.json配置文件。 -
按照下方示例,在
servers对象中添加新的服务配置项。键(例如"memory-bank-server")是用于引用此服务的唯一标识符:{ "servers": { "memory-bank-server": { "name": "Memory Bank Server (npx)", "command": "npx", "args": [ "-y", "@telagod/memory-bank-mcp-server" ], "type": "stdio", "alwaysAllow": [ "initialize_memory_bank", "get_memory_bank_status", "read_memory_bank_section", "update_memory_bank_entry" ], "disabled": false } } } -
重要: 确保软件包名称
@telagod/memory-bank-mcp-server正确。如果使用的是分支版本或不同版本,请相应更新名称。 -
可选参数: 如果服务支持其他命令行参数(例如配置文件路径),可以将它们作为单独的字符串添加到
args数组中的软件包名称之后。 -
保存
mcp_settings.json文件。 -
重启 RooCode 以加载新的 MCP 服务。
其他 MCP 客户端
对于其他支持 MCP 的客户端,请参阅其文档,了解如何配置通过命令行启动的 stdio 或 SSE 类型 MCP 服务。通常,你需要提供 npx 命令及相应参数,如上面的示例所示。
MCP 工具
该服务提供以下 MCP 工具:
-
initialize_memory_bank- 描述: 为指定项目路径初始化记忆库存储。如果
memory-bank/目录和memory.db文件不存在,则创建它们。 - 输入:
project_path(字符串,必填):项目的绝对路径。
- 输出: 包含状态消息和数据库路径的对象。
- 描述: 为指定项目路径初始化记忆库存储。如果
-
get_memory_bank_status- 描述: 检查指定项目路径的记忆库状态(数据库文件是否存在)。
- 输入:
project_path(字符串,必填):项目的绝对路径。
- 输出: 包含
exists(布尔值)、db_path(字符串)和message(字符串)的对象。
-
read_memory_bank_section- 描述: 从记忆库的指定分区读取条目。
- 输入:
project_path(字符串,必填):项目的绝对路径。section(字符串,必填):要读取的分区(例如product_context、decisions、progress、focus、system_patterns)。limit(数字,可选,默认值:10):返回的最大条目数。offset(数字,可选,默认值:0):分页偏移量。
- 输出: 一个对象数组,表示该分区中的记录。
-
update_memory_bank_entry- 描述: 向记忆库的指定分区添加新条目。
- 输入:
project_path(字符串,必填):项目的绝对路径。section(字符串,必填):要更新的分区(同上)。entry_data(对象,必填):新条目的数据。键应与该分区数据库表的列名一致(不包括id和timestamp)。product_context:{ "content": "..." }decisions:{ "reason": "...", "outcome": "..." }progress:{ "update_summary": "...", "status": "..." }focus:{ "area": "...", "details": "..." }system_patterns:{ "pattern_name": "...", "description": "..." }
- 输出: 包含状态消息和新插入条目 ID 的对象。
工作原理
下图展示了 Memory Bank MCP Server 的基本工作流:
graph TD
Client["Client"] -- "Tool Call\n(e.g., update_entry, section='decisions')" --> MCPServer["Memory Bank MCP Server"]
MCPServer -- "Parse Request" --> Router{"Router/Logic"}
subgraph "Database Interaction"
direction LR
Router -- "section='product_context'?" --> Table_PC["product_context Table"]
Router -- "section='decisions'?" --> Table_DEC["decisions Table"]
Router -- "section='progress'?" --> Table_PROG["progress Table"]
Router -- "section='focus'?" --> Table_FOC["focus Table"]
Router -- "section='system_patterns'?" --> Table_SP["system_patterns Table"]
Table_PC -- "Read/Write Ops" --> SQLiteDB["SQLite DB"]
Table_DEC -- "Read/Write Ops" --> SQLiteDB
Table_PROG -- "Read/Write Ops" --> SQLiteDB
Table_FOC -- "Read/Write Ops" --> SQLiteDB
Table_SP -- "Read/Write Ops" --> SQLiteDB
end
SQLiteDB -- "Operation Result" --> MCPServer
MCPServer -- "Format & Send Response" --> Client
- 客户端请求: 客户端(例如 RooCode)向 Memory Bank MCP Server 发起工具调用请求,通常包含一个
section参数(例如,使用section='decisions'调用update_memory_bank_entry)。 - 服务端解析: 服务端核心接收并解析请求。
- 路由逻辑: 服务端的内部路由逻辑根据请求中的
section参数确定目标数据库表。 - 表交互: 请求被路由到相应的表处理逻辑(
product_context、decisions、progress、focus或system_patterns)。 - 数据库操作: 在 SQLite 数据库(
memory-bank/memory.db)中对所选表执行读取或写入操作。 - 返回结果(数据库): SQLite 数据库返回操作结果(例如,查询到的数据或插入成功的确认信息)。
- 处理并格式化: 服务端核心处理数据库返回的结果,并将其格式化为 MCP 响应。
- 发送响应: 服务端将最终响应发送回客户端。
数据库结构
记忆库的核心由以下 SQLite 表组成,它们共同存储项目的关键信息:
product_context:存储有关产品或项目的高层背景信息、目标、范围等。这有助于了解项目的“缘由”。decisions:记录重要的技术选择、架构决策、产品方向调整等。包含决策原因、考虑过的选项和最终结果,为后续回顾提供依据。progress:跟踪开发过程中的关键进展、状态更新、已完成任务或里程碑。这有助于了解项目“进展如何”。focus:定义当前或近期的开发重点、待解决的关键问题或需要特别关注的领域。这有助于团队保持目标一致。system_patterns:记录在代码库或系统架构中发现的可复用模式、常见解决方案或重要设计原则。这有助于保留知识并保持代码一致性。
这些表协同工作,构成一个动态的项目“记忆库”,记录项目的演进过程和关键知识点。
致谢
本项目的部分设计和灵感源自 RooFlow 项目。感谢该项目为 MCP 生态系统和 AI 辅助开发工作流提供的创意。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。