使用说明
存储库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) 安装。
平台特定注意事项:
-
窗户: 如果你正确安装了Node.js v18+,并将其添加到系统的PATH环境变量中
npx命令应直接在命令提示符、PowerShell或Windows终端中工作。 -
macOS/Linux/WSL(Linux的Windows子系统):
- 检查你的Node.js版本: 跑
node -v. - 潜在问题: 系统包管理器提供的默认Node.js版本(如
apt在Ubuntu/Debian上)可能已经过时(例如v12.x)。跑步npx使用旧的Node.js版本可能会失败。 - 推荐解决方案: 使用节点版本管理器,如 NVM(节点版本管理器) 或 节点源 安装和管理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 command是使用的底层方法。
集成指南(使用npx)
您可以将此内存库MCP服务器集成到启用MCP的应用程序(如RooCode)中。使用 npx 建议运行服务器。
房间代码配置示例
-
打开房间代码
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是正确的。如果您使用的是fork或其他版本,请相应地更新名称。 -
可选参数: 如果服务器支持其他命令行参数(如配置文件路径),您可以在
args包名称后的数组。 -
保存
mcp_settings.json文件。 -
重新启动RooCode以加载新的MCP服务器。
其他MCP客户端
对于其他启用MCP的客户端,请参阅他们的文档,了解如何配置通过命令行启动的stdio或SSE类型的MCP服务器。通常,您需要提供 npx 命令和相应的参数,如上例所示。
MCP工具
服务器提供以下MCP工具:
-
initialize_memory_bank- 说明: 初始化指定项目路径的内存库存储。创建
memory-bank/目录和memory.db文件,如果它们不存在。 - 输入:
project_path(string,必填):项目的绝对路径。
- 输出: 包含状态消息和数据库路径的对象。
- 说明: 初始化指定项目路径的内存库存储。创建
-
get_memory_bank_status- 说明: 检查指定项目路径的内存库状态(数据库文件是否存在)。
- 输入:
project_path(string,必填):项目的绝对路径。
- 输出: 包含以下内容的对象
exists(布尔值),db_path(字符串),以及message(字符串)。
-
read_memory_bank_section- 说明: 从存储体的特定部分读取条目。
- 输入:
project_path(string,必填):项目的绝对路径。section(string,必填):要读取的部分(例如。,product_context,decisions,progress,focus,system_patterns).limit(number,可选,默认值:10):要返回的最大条目数。offset(数字,可选,默认值:0):分页偏移量。
- 输出: 表示该部分记录的对象数组。
-
update_memory_bank_entry- 说明: 向存储体的特定部分添加新条目。
- 输入:
project_path(string,必填):项目的绝对路径。section(string,必填):要更新的部分(如上所述)。entry_data(object,必填):新条目的数据。键应与节数据库表的列名匹配(不包括id和timestamp).product_context:{ "content": "..." }decisions:{ "reason": "...", "outcome": "..." }progress:{ "update_summary": "...", "status": "..." }focus:{ "area": "...", "details": "..." }system_patterns:{ "pattern_name": "...", "description": "..." }
- 输出: 包含状态消息和新插入条目的ID的对象。
运作原理
下图说明了存储体MCP服务器的基本工作流程:
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)向存储体MCP服务器发起工具调用请求,通常包括
section参数(例如。,update_memory_bank_entry随着section='decisions'). - 服务器解析: 服务器核心接收并解析请求。
- 路由逻辑: 服务器的内部路由逻辑根据以下内容确定目标数据库表
section请求中的参数。 - 表交互: 请求被路由到适当的表处理逻辑(
product_context,decisions,progress,focus,或system_patterns). - 数据库操作: 对SQLite数据库中的选定表执行读取或写入操作(
memory-bank/memory.db). - 返回结果(DB): SQLite数据库返回操作结果(例如,查询的数据或成功插入的确认)。
- 流程和格式: 服务器核心处理从数据库返回的结果,并将其格式化为MCP响应。
- 发送响应: 服务器将最终响应发送回客户端。
数据库结构
内存库的核心由以下SQLite表组成,这些表共同存储关键项目信息:
product_context:存储有关产品或项目、目标、范围等的高级背景信息。这有助于理解项目的“为什么”。decisions:记录重要的技术选择、架构决策、产品方向调整等。包括做出决定的原因、考虑的选项和最终结果,为未来的审查提供依据。progress:跟踪开发过程中的关键进度、状态更新、已完成的任务或里程碑。这有助于理解项目的“进展情况”。focus:定义当前或近期的发展重点、需要解决的关键问题或需要特别关注的领域。这有助于团队保持一致。system_patterns:记录代码库或系统架构中确定的可重用模式、通用解决方案或重要设计原则。这有助于知识保留和代码一致性。
这些表协同工作,形成一个动态的项目“记忆库”,记录项目的演变和关键知识点。
致谢
这个项目的部分设计和灵感来自 RooFlow 项目。感谢您为MCP生态系统和人工智能辅助开发工作流程提供的想法。