mcpField
M
Memory Bank MCP Server

Memory Bank MCP Server

本地服务
github.com/TerLand0berver记忆与知识282 周前更新

关于 Memory Bank MCP Server

Memory Bank MCP Server 为项目路径管理项目专属的记忆数据,适用于需要保存背景、决策和进度信息的开发团队。它使用项目目录中的 SQLite 数据库,并通过标准 MCP 工具读写不同信息分区。

主要功能

  1. 01按项目路径独立存储
  2. 02SQLite 数据库持久化
  3. 03初始化与状态检查
  4. 04读取和更新记忆条目
  5. 05按信息分区组织内容

适用场景

  1. 01记录项目背景与目标
  2. 02保存技术决策及其原因
  3. 03跟踪进度和近期重点
  4. 04整理可复用系统模式

MCP 相关

它通过 MCP 工具让客户端初始化记忆库、查询状态,并读取或更新项目记忆分区。数据按项目路径保存在 SQLite 数据库中。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"memory-bank-mcp-server-terland0berver": {
"command": "npx",
"args": [
"-y",
"@telagod/memory-bank-mcp-server"
]
}
}
}
启动命令npx -y @telagod/memory-bank-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@telagod/memory-bank-mcp-server

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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(示例):
      1. 安装 NVM(请查看 NVM 官方仓库以获取最新命令):
        curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
        
      2. 重启终端,或运行 NVM 安装程序提示的命令。
      3. 安装 Node.js v18+ 版本:nvm install 18(或指定版本,例如 nvm install 18.17.0)
      4. 使用已安装的版本:nvm use 18
      5. 现在,npx @telagod/memory-bank-mcp-server 命令应该可以正常运行。

此服务通常由 MCP 宿主应用(如 Roo Code)根据其配置(例如 mcp_settings.json)自动启动,而 npx 命令是其底层运行方式。

集成指南(使用 npx)

你可以将此 Memory Bank MCP 服务集成到支持 MCP 的应用程序(如 RooCode)中。建议使用 npx 运行此服务。

RooCode 配置示例
  1. 打开 RooCode 的 mcp_settings.json 配置文件。

  2. 按照下方示例,在 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
        }
      }
    }
    
  3. 重要: 确保软件包名称 @telagod/memory-bank-mcp-server 正确。如果使用的是分支版本或不同版本,请相应更新名称。

  4. 可选参数: 如果服务支持其他命令行参数(例如配置文件路径),可以将它们作为单独的字符串添加到 args 数组中的软件包名称之后。

  5. 保存 mcp_settings.json 文件。

  6. 重启 RooCode 以加载新的 MCP 服务。

其他 MCP 客户端

对于其他支持 MCP 的客户端,请参阅其文档,了解如何配置通过命令行启动的 stdio 或 SSE 类型 MCP 服务。通常,你需要提供 npx 命令及相应参数,如上面的示例所示。

MCP 工具

该服务提供以下 MCP 工具:

  1. initialize_memory_bank

    • 描述: 为指定项目路径初始化记忆库存储。如果 memory-bank/ 目录和 memory.db 文件不存在,则创建它们。
    • 输入:
      • project_path(字符串,必填):项目的绝对路径。
    • 输出: 包含状态消息和数据库路径的对象。
  2. get_memory_bank_status

    • 描述: 检查指定项目路径的记忆库状态(数据库文件是否存在)。
    • 输入:
      • project_path(字符串,必填):项目的绝对路径。
    • 输出: 包含 exists(布尔值)、db_path(字符串)和 message(字符串)的对象。
  3. read_memory_bank_section

    • 描述: 从记忆库的指定分区读取条目。
    • 输入:
      • project_path(字符串,必填):项目的绝对路径。
      • section(字符串,必填):要读取的分区(例如 product_context、decisions、progress、focus、system_patterns)。
      • limit(数字,可选,默认值:10):返回的最大条目数。
      • offset(数字,可选,默认值:0):分页偏移量。
    • 输出: 一个对象数组,表示该分区中的记录。
  4. 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
  1. 客户端请求: 客户端(例如 RooCode)向 Memory Bank MCP Server 发起工具调用请求,通常包含一个 section 参数(例如,使用 section='decisions' 调用 update_memory_bank_entry)。
  2. 服务端解析: 服务端核心接收并解析请求。
  3. 路由逻辑: 服务端的内部路由逻辑根据请求中的 section 参数确定目标数据库表。
  4. 表交互: 请求被路由到相应的表处理逻辑(product_context、decisions、progress、focus 或 system_patterns)。
  5. 数据库操作: 在 SQLite 数据库(memory-bank/memory.db)中对所选表执行读取或写入操作。
  6. 返回结果(数据库): SQLite 数据库返回操作结果(例如,查询到的数据或插入成功的确认信息)。
  7. 处理并格式化: 服务端核心处理数据库返回的结果,并将其格式化为 MCP 响应。
  8. 发送响应: 服务端将最终响应发送回客户端。
数据库结构

记忆库的核心由以下 SQLite 表组成,它们共同存储项目的关键信息:

  • product_context:存储有关产品或项目的高层背景信息、目标、范围等。这有助于了解项目的“缘由”。
  • decisions:记录重要的技术选择、架构决策、产品方向调整等。包含决策原因、考虑过的选项和最终结果,为后续回顾提供依据。
  • progress:跟踪开发过程中的关键进展、状态更新、已完成任务或里程碑。这有助于了解项目“进展如何”。
  • focus:定义当前或近期的开发重点、待解决的关键问题或需要特别关注的领域。这有助于团队保持目标一致。
  • system_patterns:记录在代码库或系统架构中发现的可复用模式、常见解决方案或重要设计原则。这有助于保留知识并保持代码一致性。

这些表协同工作,构成一个动态的项目“记忆库”,记录项目的演进过程和关键知识点。

致谢

本项目的部分设计和灵感源自 RooFlow 项目。感谢该项目为 MCP 生态系统和 AI 辅助开发工作流提供的创意。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。