Memory Bank MCP Server

Memory Bank MCP Server

TerLand0berver

研究与数据
访问服务器

README

记忆库 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 环境变量中,则 npx 命令应直接在命令提示符、PowerShell 或 Windows 终端中工作。

  • macOS / Linux / WSL (Windows Linux 子系统):

    • 检查您的 Node.js 版本: 运行 node -v。
    • 潜在问题: 系统包管理器(如 Ubuntu/Debian 上的 apt)提供的默认 Node.js 版本可能已过时(例如,v12.x)。使用旧的 Node.js 版本运行 npx 可能会失败。
    • 推荐解决方案: 使用 Node 版本管理器,如 NVM (Node Version Manager) 或 NodeSource 来安装和管理 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)

您可以将此记忆库 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 正确。如果您使用的是 fork 或不同的版本,请相应地更新名称。

  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 的对象。

工作原理

下图说明了记忆库 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
  1. 客户端请求: 客户端(例如,RooCode)向记忆库 MCP 服务器发起工具调用请求,通常包括一个 section 参数(例如,update_memory_bank_entry,其中 section='decisions')。
  2. 服务器解析: 服务器核心接收并解析请求。
  3. 路由逻辑: 服务器的内部路由逻辑根据请求中的 section 参数确定目标数据库表。
  4. 表交互: 请求被路由到相应的表处理逻辑(product_context、decisions、progress、focus 或 system_patterns)。
  5. 数据库操作: 在 SQLite 数据库 (memory-bank/memory.db) 中选定的表上执行读取或写入操作。
  6. 返回结果 (DB): SQLite 数据库返回操作结果(例如,查询的数据或成功插入的确认)。
  7. 处理和格式化: 服务器核心处理从数据库返回的结果,并将它们格式化为 MCP 响应。
  8. 发送响应: 服务器将最终响应发送回客户端。

数据库结构

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

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

这些表协同工作,形成一个动态的项目“记忆库”,捕捉项目的演变和关键知识点。

致谢

该项目的部分设计和灵感来自 RooFlow 项目。感谢为 MCP 生态系统和 AI 辅助开发工作流程提供的想法。

推荐服务器

mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
MCP Word Counter

MCP Word Counter

一个模型上下文协议服务器,提供用于分析文本文档的工具,包括字数和字符数统计。该服务器通过暴露简单的文档统计功能,帮助大型语言模型(LLM)执行文本分析任务。

本地
JavaScript
mcp-server-data-exploration

mcp-server-data-exploration

能够对基于 .csv 的数据集进行自主数据探索,以最少的精力提供智能洞察。

本地
Python
Claude MCP Server for USGS Quakes API

Claude MCP Server for USGS Quakes API

在 Claude Desktop 中提供对 USGS Quakes API 的访问,使用户能够通过自然语言查询检索地震数据和详细信息。

本地
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python