Memory Bank MCP Server

by yywdandan
MIT License
5
Integrations
  • Supports configuration through .env files or environment variables for settings like port, data directory, and session keys.

  • Repository hosting for cloning the codebase, with contribution workflow for submitting issues and code changes.

  • Supports storing and managing all project documents in Markdown format, making them easy to edit and maintain.

Memory Bank MCP Server

基于MCP协议的内存银行服务器,支持多项目隔离和Markdown格式文档管理,适用于大型语言模型(LLM)工具调用。

功能特点

  • 符合MCP协议: 完全符合Model Context Protocol规范,可被大模型直接调用。
  • 多项目隔离: 支持多个项目隔离管理,各项目任务及进度等信息分开存储。
  • Markdown格式: 所有项目文档使用Markdown格式存储,易于编辑和维护。
  • Web界面: 提供直观的Web管理界面,可以查看和编辑项目文档。
  • 灵活规则系统: 支持全局规则和项目特定规则设置,项目规则优先于全局规则。
  • 导入导出功能: 支持项目级别的数据导入和导出。
  • 无需数据库: 使用文件系统进行存储,降低部署门槛。

架构设计

Memory Bank MCP Server采用了模块化设计,主要包含以下组件:

  • MCP服务器: 实现MCP协议,提供工具接口给LLM调用
  • Web服务器: 提供REST API和前端界面
  • 文件存储系统: 使用JSON文件和Markdown文件进行数据持久化
  • 项目管理系统: 隔离不同项目的数据和规则

安装和运行

前提条件

  • Node.js 16+ (推荐18+)
  • npm 7+ 或 yarn 1.22+

安装步骤

  1. 克隆代码库
git clone https://github.com/your-username/memory-bank-mcp-server.git cd memory-bank-mcp-server
  1. 安装依赖
npm install
  1. 构建项目
npm run build
  1. 启动服务器
# 同时启动Web和MCP服务器 npm start # 仅启动Web服务器 npm start -- web # 仅启动MCP服务器 npm start -- mcp

环境变量

可以通过创建.env文件或设置环境变量来配置服务器:

PORT=3000 # Web服务器端口 ROOT_DIR=/app/data # 数据存储根目录 SESSION_SECRET=your-secret-key # 会话密钥

数据存储

服务器采用文件系统进行数据存储,主要包含以下文件和目录:

data/ ├── projects.json # 项目元数据 ├── documents.json # 文档元数据 ├── rules.json # 规则元数据 ├── projects/ # 项目文件目录 │ ├── {project-id}/ # 单个项目目录 │ │ ├── projectbrief.md # 项目概述 │ │ ├── activeContext.md # 当前上下文 │ │ ├── tasks.md # 任务清单 │ │ └── ... # 其他文档 ├── templates/ # 文档模板目录

Markdown文件格式

项目文档采用Markdown格式存储,以下是几种主要文档类型:

  1. projectbrief.md - 项目概述
# 项目概述 ## 项目名称 ## 目标 ## 需求 ## 技术栈 ## 时间线
  1. tasks.md - 任务跟踪
# 任务 ## 待办任务 - [ ] 任务1 - [ ] 任务2 ## 进行中任务 - [ ] 任务3 ## 已完成任务 - [x] 任务4

API参考

服务器提供以下主要API接口:

REST API

项目管理
  • GET /api/projects - 获取所有项目
  • GET /api/projects/:id - 获取项目详情
  • POST /api/projects - 创建新项目
  • PUT /api/projects/:id - 更新项目
  • DELETE /api/projects/:id - 删除项目
文档管理
  • GET /api/projects/:projectId/documents - 获取项目文档列表
  • GET /api/projects/:projectId/documents/:type - 获取文档内容
  • PUT /api/projects/:projectId/documents/:type - 更新文档内容
规则管理
  • GET /api/projects/:projectId/rules - 获取项目规则列表
  • GET /api/rules/:id - 获取规则内容
  • POST /api/rules - 创建规则
  • PUT /api/rules/:id - 更新规则
  • DELETE /api/rules/:id - 删除规则

MCP工具接口

服务器提供以下MCP工具接口供大模型调用:

  • list_projects - 获取所有项目
  • create_project - 创建新项目
  • update_project - 更新项目
  • delete_project - 删除项目
  • list_documents - 获取项目文档列表
  • get_document - 获取文档内容
  • update_document - 更新文档内容
  • list_rules - 获取项目规则列表
  • get_rule - 获取规则内容
  • create_rule - 创建规则
  • update_rule - 更新规则
  • delete_rule - 删除规则

与Cursor配合使用

配置步骤

  1. 启动MCP服务器
npm start -- mcp
  1. 在Cursor中打开设置,找到"AI设置"
  2. 在Tool Providers部分添加自定义工具提供商:
    • 名称: Memory Bank
    • 描述: 多项目Markdown文档管理工具
    • 命令: node [你的安装路径]/memory-bank-mcp-server/dist/index.js mcp
    • 勾选"启用"
  3. 保存设置并重启Cursor
  4. 现在你可以在Cursor中使用像这样的命令调用Memory Bank:
使用Memory Bank创建一个新项目,名称为"我的项目",描述为"这是我的第一个项目"

与cursor-memory-bank的区别与改进

与原始的cursor-memory-bank项目相比,本项目的主要区别和改进包括:

  1. MCP协议支持: 实现了完整的MCP协议,可以被大模型直接调用
  2. 多项目隔离: 支持管理多个项目,每个项目拥有独立的文档和规则
  3. Web界面: 提供了可视化的Web管理界面
  4. 规则系统: 支持全局规则和项目特定规则设置
  5. 更灵活的文档管理: 支持自定义文档类型和模板
  6. 模块化设计: 采用模块化架构,易于扩展和维护

最佳实践

  • 文档命名: 为每个文档使用清晰、一致的命名约定
  • 项目结构: 为每个项目创建一致的文档结构
  • 规则管理: 在全局规则中设置通用规则,在项目规则中设置特定项目的规则
  • 定期备份: 定期导出项目数据进行备份
  • Markdown格式: 利用Markdown的格式特性,如标题层级、列表和表格,使文档更有结构

注意事项

  • 文件修改是立即生效的,无需重启服务器
  • 删除项目将删除该项目的所有文档和规则,此操作不可撤销
  • 项目ID在创建后不可更改
  • 文档内容使用UTF-8编码存储

故障排除

  • MCP服务器连接失败: 检查命令路径是否正确,确保服务器已启动
  • Web界面访问失败: 检查端口是否被占用,确保服务器已启动
  • 文档保存失败: 检查文件系统权限,确保目录可写
  • 导入项目失败: 检查导入文件格式是否正确

未来计划

  • 添加用户认证系统
  • 支持实时协作编辑
  • 增加更多文档类型模板
  • 支持文档版本历史
  • 添加搜索功能
  • 支持更多导入/导出格式

许可证

本项目采用MIT许可证,详见LICENSE文件。

贡献

欢迎提交问题报告、功能建议和代码贡献。请先创建issue讨论您要进行的更改。

API参考

项目管理
获取所有项目
GET /api/projects

请求示例:

fetch('/api/projects') .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": [ { "id": "project-123", "name": "示例项目", "description": "这是一个示例项目", "createdAt": "2023-11-30T08:15:30Z", "updatedAt": "2023-11-30T10:22:45Z" }, { "id": "project-456", "name": "测试项目", "description": "用于测试的项目", "createdAt": "2023-11-29T14:25:10Z", "updatedAt": "2023-11-29T16:30:22Z" } ] }
创建新项目
POST /api/projects

请求示例:

fetch('/api/projects', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: '新项目', description: '这是一个新项目' }) }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "project-789", "name": "新项目", "description": "这是一个新项目", "createdAt": "2023-12-01T09:45:12Z", "updatedAt": "2023-12-01T09:45:12Z", "documents": [ "projectbrief.md", "tasks.md", "activeContext.md" ] } }
获取项目详情
GET /api/projects/:id

请求示例:

fetch('/api/projects/project-123') .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "project-123", "name": "示例项目", "description": "这是一个示例项目", "createdAt": "2023-11-30T08:15:30Z", "updatedAt": "2023-11-30T10:22:45Z" } }
更新项目
PUT /api/projects/:id

请求示例:

fetch('/api/projects/project-123', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: '更新的项目名称', description: '更新的项目描述' }) }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "project-123", "name": "更新的项目名称", "description": "更新的项目描述", "updatedAt": "2023-12-01T11:30:25Z" } }
删除项目
DELETE /api/projects/:id

请求示例:

fetch('/api/projects/project-123', { method: 'DELETE' }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "success": true, "message": "项目删除成功" } }
文档管理
获取项目文档列表
GET /api/projects/:projectId/documents

请求示例:

fetch('/api/projects/project-123/documents') .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": [ { "id": "doc-001", "name": "projectbrief.md", "type": "projectbrief", "updatedAt": "2023-11-30T09:20:15Z" }, { "id": "doc-002", "name": "tasks.md", "type": "tasks", "updatedAt": "2023-11-30T10:15:30Z" }, { "id": "doc-003", "name": "activeContext.md", "type": "activeContext", "updatedAt": "2023-11-30T11:05:45Z" } ] }
获取文档内容
GET /api/projects/:projectId/documents/:type

请求示例:

fetch('/api/projects/project-123/documents/tasks') .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "doc-002", "name": "tasks.md", "content": "# 任务列表\n\n## 待办任务\n- [ ] [高] 实现用户认证\n- [ ] [中] 添加日志记录\n\n## 进行中任务\n- [-] 完善错误处理 (60%)\n\n## 已完成任务\n- [x] 设计数据模型\n- [x] 创建项目结构", "type": "tasks", "updatedAt": "2023-11-30T10:15:30Z", "html": "<h1>任务列表</h1>..." } }
更新文档内容
PUT /api/projects/:projectId/documents/:type

请求示例:

fetch('/api/projects/project-123/documents/tasks', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ content: "# 任务列表\n\n## 待办任务\n- [ ] [高] 实现用户认证\n- [ ] [中] 添加日志记录\n- [ ] [低] 优化性能\n\n## 进行中任务\n- [-] 完善错误处理 (60%)\n\n## 已完成任务\n- [x] 设计数据模型\n- [x] 创建项目结构" }) }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "doc-002", "name": "tasks.md", "type": "tasks", "updatedAt": "2023-12-01T14:25:45Z", "message": "文档更新成功" } }
规则管理
获取项目规则列表
GET /api/projects/:projectId/rules

请求示例:

fetch('/api/projects/project-123/rules') .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "projectRules": [ { "id": "rule-001", "name": "项目规范", "description": "项目特定的规范", "isGlobal": false } ], "globalRules": [ { "id": "rule-global-001", "name": "文档格式", "description": "Markdown文档格式规范", "isGlobal": true }, { "id": "rule-global-002", "name": "工作流程", "description": "标准工作流程规范", "isGlobal": true } ] } }
获取规则内容
GET /api/rules/:ruleId

请求示例:

fetch('/api/rules/rule-001') .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "rule-001", "name": "项目规范", "content": "# 项目规范\n\n## 命名规则\n\n1. 文件名使用小写字母和连字符\n2. 变量使用驼峰式命名\n3. 常量使用大写字母和下划线\n\n## 代码风格\n\n1. 使用2个空格缩进\n2. 行末不留空格\n3. 文件末尾保留一个空行", "description": "项目特定的规范", "isGlobal": false, "projectId": "project-123" } }
创建规则
POST /api/rules

请求示例:

fetch('/api/rules', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: '新规则', content: '# 新规则\n\n## 规则内容\n\n1. 规则项目1\n2. 规则项目2', isGlobal: false, projectId: 'project-123', description: '项目特定的新规则' }) }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "rule-002", "name": "新规则", "description": "项目特定的新规则", "isGlobal": false, "projectId": "project-123", "message": "规则创建成功" } }
更新规则
PUT /api/rules/:ruleId

请求示例:

fetch('/api/rules/rule-001', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ content: '# 更新的项目规范\n\n## 命名规则\n\n1. 文件名使用小写字母和连字符\n2. 变量使用驼峰式命名\n3. 常量使用大写字母和下划线\n\n## 代码风格\n\n1. 使用2个空格缩进\n2. 行末不留空格\n3. 文件末尾保留一个空行\n\n## 新增部分\n\n1. 新增规则1\n2. 新增规则2', description: '更新的项目规范描述' }) }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "id": "rule-001", "name": "项目规范", "description": "更新的项目规范描述", "updatedAt": "2023-12-01T16:10:30Z", "message": "规则更新成功" } }
删除规则
DELETE /api/rules/:ruleId

请求示例:

fetch('/api/rules/rule-001', { method: 'DELETE' }) .then(response => response.json()) .then(data => console.log(data));

响应示例:

{ "status": "success", "data": { "success": true, "message": "规则删除成功" } }

MCP工具接口

Memory Bank MCP服务器支持通过MCP协议调用以下工具接口:

基础工具
  • list_projects - 获取所有项目列表
  • create_project - 创建新项目
  • update_project - 更新项目信息
  • delete_project - 删除项目
  • list_documents - 获取项目文档列表
  • get_document - 获取文档内容
  • update_document - 更新文档内容
  • list_rules - 获取项目规则列表
  • get_rule - 获取规则内容
  • create_rule - 创建新规则
  • update_rule - 更新规则内容
  • delete_rule - 删除规则
工作流模式工具
VAN模式 - 项目验证与初始化
  • van_init - 初始化项目,如不提供项目名称则使用默认名称
  • van_verify - 验证项目状态和文件完整性
PLAN模式 - 计划制定与任务分解
  • plan_get_tasks - 获取当前任务列表
  • plan_add_task - 添加新任务到任务列表
  • plan_update_tasks - 更新任务规划文档
CREATIVE模式 - 创意构思与方案设计
  • creative_add_idea - 创建创意记录
  • creative_get_ideas - 获取创意列表
  • creative_update_design - 更新系统设计文档
IMPLEMENT模式 - 实施执行与开发
  • implement_update_progress - 更新开发进度
  • implement_add_note - 记录实现细节
  • implement_update_context - 更新活动上下文文档
REFLECT模式 - 回顾反思与改进
  • reflect_create - 创建项目反思记录
  • reflect_get_history - 获取历史反思记录
  • reflect_update_progress - 更新进度文档
ARCHIVE模式 - 归档整理与知识沉淀
  • archive_completed_tasks - 归档已完成任务
  • archive_generate_summary - 生成项目总结报告
  • archive_export_project - 导出项目文档

有关每个工具接口的详细使用方法和参数说明,请参阅使用教程

许可证

MIT

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    MCP server for collecting code from files and directories into a single markdown document.
    Last updated -
    2
    4
    Python
    MIT License
  • A
    security
    F
    license
    A
    quality
    A powerful Model Context Protocol (MCP) server enabling seamless Vercel project management, including deployments, domains, environment variables, and team configurations through Cursor's Composer or Codeium's Cascade.
    Last updated -
    65
    17
    TypeScript
    • Apple
    • Linux
  • -
    security
    A
    license
    -
    quality
    An MCP server that assists with the orchestration of new software projects by applying standardized templates and best practices in design patterns and software architecture.
    Last updated -
    3
    Python
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    An MCP server implementation that integrates with Backlog API, enabling project management operations including issues, projects, and wikis through natural language interactions.
    Last updated -
    12
    53
    3
    TypeScript
    MIT License

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yywdandan/memory-bank-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server