memory-bank-mcp
MCP协议记忆银行工具,让AI编程助手跨会话持久记住项目上下文与设计决策
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
MCP协议记忆银行工具,让AI编程助手跨会话持久记住项目上下文与设计决策
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Memory Bank MCP Server 核心徽章
你在 Cursor 里写了两天代码,第三天打开项目,AI 助手完全不认识你之前的设计决策——没有上下文,没有历史,不知道你为什么选了 A 方案而非 B 方案。这是每一个 AI 辅助编程工具用户的共同痛点:AI 的「记忆」仅存在于单次会话,一旦会话结束,所有上下文烟消云散。
Memory Bank(记忆银行)的核心理念就是解决这个问题:把项目上下文、设计决策、开发规范以结构化文件的形式持久化,每次新会话开始时由 AI 主动读取。原来的实现依赖本地文件系统,换电脑或换编辑器就断了。而 alioshr/memory-bank-mcp 把这套机制搬上了 MCP 协议,让记忆银行成为了跨编辑器、跨机器、可远程访问的公共服务。
本项目由 Aliosh Pimenta(GitHub @alioshr)开发,灵感直接来源于 Cline Memory Bank,后者是 Cline 编辑器中用于管理项目上下文的自定义指令库。作者将本地文件方案升级为 MCP Server 架构,实现了「一套服务,多端复用」的目标。项目采用 TypeScript 开发,依赖官方 @modelcontextprotocol/sdk,已发布至 npm(@allpepper/memory-bank-mcp),并接入了 Smithery 生态,可一键安装到 Claude Desktop、Cline、Cursor、Roo Code 等主流 MCP 客户端。
Memory Bank MCP Server 以 stdio 模式运行,通过 MCP 协议暴露五个工具(Tool):
| 工具名称 | 功能 | 典型使用场景 |
|---|---|---|
list_projects | 列出所有已注册项目 | 查看有哪些项目启用了记忆银行 |
list_project_files | 列出指定项目内的记忆文件 | 查看某个项目的所有上下文文件 |
memory_bank_read | 读取指定项目的指定文件 | AI 在开始新任务前加载上下文 |
memory_bank_write | 在指定项目中创建新文件 | 初始化项目时写入规范文件 |
memory_bank_update | 更新指定项目内已有文件 | AI 在任务完成后更新决策记录 |
这五个工具覆盖了记忆银行从初始化、读取到更新的完整生命周期。以 memory_bank_read 为例,AI 助手在每次对话开始时自动调用该工具,将项目上下文加载到当前会话的上下文中,实现「记忆恢复」。项目通过环境变量 MEMORY_BANK_ROOT 指定记忆银行根目录,不同项目目录相互隔离,支持路径遍历攻击防护和文件名合法性校验。
项目采用整洁架构(Clean Architecture) 分层,代码结构清晰:
src/
domain/ # 领域实体(File, Project)和业务规则
data/ # 用例协议和数据接口定义
infra/ # 文件系统基础设施层
presentation/ # 控制器层(MCP 适配、请求处理)
validators/ # 参数校验(防注入、必填字段、路径安全)
main/ # 入口和协议层(MCP Server 适配器)
核心依赖仅有两个:@modelcontextprotocol/sdk(MCP 官方 SDK)和 fs-extra(文件系统操作)。Server 入口在 src/main/index.ts,通过 McpServerAdapter 封装官方 SDK 的 Server 类,将路由注册到 stdio transport。
MCP 适配层是整个架构的关键:src/main/protocols/mcp/adapters/mcp-server-adapter.ts 负责初始化 Server 实例并注册 ListToolsRequestSchema 和 CallToolRequestSchema 两个请求处理器;mcp-router-adapter.ts 管理工具路由表;每个 Controller(Read/Write/Update/ListProjects/ListProjectFiles)遵循 Controller<TRequest, TResponse> 接口规范,实现了统一的 handle() 方法。
安全方面,路由层通过 path-security-validator.ts 防止路径遍历(../ 注入),param-name-validator.ts 校验参数名合法性,required-field-validator.ts 确保必填字段存在,三者通过 ValidatorComposite 组合使用。
项目提供三种部署方式:
方式一:Smithery 一键安装(推荐)
运行 npx -y @smithery/cli install @alioshr/memory-bank-mcp --client claude,Smithery 自动修改 Claude Desktop 配置文件,全程无需手动编辑 JSON。
方式二:Docker 容器(生产推荐)
提供 node:20-alpine 多阶段构建 Dockerfile,从源码编译 TypeScript 后以精简镜像运行,容器大小控制在 ~200MB。
方式三:npx 直接运行(开发推荐)
直接运行 npx -y @allpepper/memory-bank-mcp 或全局安装 npm install -g @allpepper/memory-bank-mcp,无需额外配置。
项目为纯 CLI 工具,无 Web UI,部署难度评定为「极简单」,预估部署时间 1 分钟以内。
项目使用 Vitest 作为测试框架,测试目录与源码结构一一对应(tests/domain/、tests/infra/、tests/presentation/、tests/validators/),支持 vitest --ui 可视化测试界面和覆盖率报告。测试覆盖了路径安全校验、参数校验和文件系统操作等核心场景。
MEMORY_BANK_ROOT 默认为本地文件系统,无内置多机同步机制,多设备使用需配合网络文件系统(NFS)或云盘同步。MCP 协议正在成为 AI 工具扩展的事实标准,Smithery 作为 MCP 生态的「应用商店」已收录数千个 Server。本项目将「记忆银行」这一被 Cline 用户广泛验证的工作流搬到 MCP 生态,解锁了跨工具、跨平台的一致记忆体验。目前已获得 912 Stars、84 Forks,npm 周下载量持续增长,在 Smithery MCP 市场中处于工具效率类热门项目。
随着 AI Coding 工具的普及,记忆银行将成为开发者的标配基础设施——它解决了「AI 需要了解项目但不了解」的元问题,让 AI 在每次新会话开始时就能站在前人的肩膀上,而非从零开始。
项目链接:https://github.com/alioshr/memory-bank-mcp | npm: @allpepper/memory-bank-mcp