这是一个用于管理项目特定“内存库”数据的模型上下文协议(MCP)服务器。它使用 SQLite 数据库来存储和检索与项目相关的上下文信息,如产品背景、决策日志、进度更新等。
memory-bank/memory.db 文件中,提供结构化且高效的访问。此服务器已发布到 npm,可以使用 npx 直接运行,无需手动克隆、安装或构建。
运行此服务器的主要方式是使用 npx,这会直接从 npm 注册表执行该包:
npx @telagod/memory-bank-mcp-server
Node.js 版本要求:
>=18.0.0)。平台特定注意事项:
Windows: 如果正确安装了 Node.js v18+ 并将其添加到了系统 PATH 环境变量中,那么在命令提示符、PowerShell 或 Windows 终端中直接运行 npx 命令应该没有问题。
macOS / Linux / WSL (Windows Subsystem for Linux):
node -v。apt)提供的默认 Node.js 版本可能过时(例如 v12.x)。使用旧版本的 Node.js 运行 npx 很可能会失败。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 1.8(或特定版本如 nvm install 18.17.0)nvm use 18npx @telagod/memory-bank-mcp-server 命令应该能正常工作。此服务器通常由 MCP 主应用(如 Roo Code)根据其配置(例如 mcp_settings.json)自动启动,但 npx 命令是实际使用的底层方法。
你可以将此内存库 MCP 服务器集成到支持 MCP 的应用程序(如 RooCode)中。建议使用 npx 运行服务器。
打开 RooCode 的 mcp_settings.json 配置文件。
在 servers 对象中添加一个新的服务器配置条目,如下所示。键(例如 "memory-bank-server")是你用来引用此服务器的唯一标识符:
{
"servers": {
"memory-bank-server": {
"name": "内存库服务器 (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 的客户端,请参阅其文档了解如何配置通过命令行启动的 stdio 或 SSE 类型的 MCP 服务器。通常,你需要提供 npx 命令及其相应的参数,如上述示例所示。
服务器提供了以下 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": "..." }下图展示了内存库 MCP 服务器的基本工作流程:
graph TD
Client["客户端"] -- "工具调用\n(例如,update_entry, section='decisions')" --> MCPServer["内存库 MCP 服务器"]
MCPServer -- "解析请求" --> Router{"路由器/逻辑"}
subgraph "数据库交互"
direction LR
Router -- "section='product_context'?" --> Table_PC["product_context 表"]
Router -- "section='decisions'?" --> Table_DEC["decisions 表"]
Router -- "section='progress'?" --> Table_PROG["progress 表"]
Router -- "section='focus'?" --> Table_FOC["focus 表"]
Router -- "section='system_patterns'?" --> Table_SP["system_patterns 表"]
Table_PC -- "读写操作" --> SQLiteDB["SQLite 数据库"]
Table_DEC -- "读写操作" --> SQLiteDB
Table_PROG -- "读写操作" --> SQLiteDB
Table_FOC -- "读写操作" --> SQLiteDB
Table_SP -- "读写操作" --> SQLiteDB
end
SQLiteDB -- "操作结果" --> MCPServer
MCPServer -- "格式并发送响应" --> Client
section 参数(例如,update_memory_bank_entry 与 section='decisions')。section 参数确定目标数据库表。product_context,decisions,progress,focus 或 system_patterns)。memory-bank/memory.db)中选定的表上执行读或写操作。内存库的核心由以下 SQLite 表组成,这些表共同存储关键项目信息:
product_context:存储关于产品或项目的高层次背景信息、目标、范围等。这有助于理解项目的“为什么”。decisions:记录重要的技术选择、架构决策、产品方向调整等。包括决策的原因、考虑的选项以及最终结果,为未来的审查提供基础。progress:跟踪开发过程中的关键进展、状态更新、完成的任务或里程碑。这有助于理解项目的“进展情况”。focus:定义当前或近期的开发重点、需要解决的关键问题或需要特别关注的领域。这有助于团队保持一致。system_patterns:记录在代码库或系统架构中识别出的可重用模式、常见解决方案或重要设计原则。这有助于知识保留和代码一致性。这些表协同工作,形成一个动态的项目“内存库”,捕捉项目的演变和关键知识点。
该项目的设计和灵感部分来自 RooFlow 项目。感谢为 MCP 生态系统和 AI 辅助开发工作流提供的想法。