一、Memory MCP 能帮你做什么?
- 记住「没写完的函数」:今天下班写到一半,明天继续对话,AI 自动把昨天的变量名、逻辑续上。
- 记住「重构计划」:让 AI 把"拆组件、改 API、补单测"三步记下来,下次直接问"我下一步该干嘛?"
- 记住「踩坑现场」:报错栈、复现步骤、解决思路一次录入,日后再遇到同样关键字,AI 直接提示"上次你改了 webpack 的 alias"。
一句话:跨项目、跨窗口、跨时间的「代码备忘录」,而且本地存储,不走云端 。
二、安装步骤
方法一:自动
1、安装好前置:Node.js ≥ 18、Cursor ≥ 1.7
2、打开 Cursor → 右下角 Chat → 粘贴下面中文口令→回车:
帮我安装 Memory MCP 服务器,使用官方 npm 包 @modelcontextprotocol/server-memory,装好写进 settings.json 并重启。
3、弹窗点「允许」→ 自动重启 → 左侧 MCP Servers 出现 memory 绿灯,完事!
方法二:手动
1、终端执行
npm i -g @modelcontextprotocol/server-memory
2、找到 Cursor 的 mcp 设置

3、追加一段(注意逗号)

bash
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
4、保存 → 重启 Cursor → 绿灯亮,成功。
三、浅浅尝试
输入下面内容,能返回「已记住 / 已召回」即表示通路正常:
| 中文提示词 | AI 回复 |
|---|---|
| 「记住我现在写的 utils/debounce.ts,函数名是 debounce,下次别改错。」 | 已存入 memory:debounce.ts |
| 「我上回让你记的 debounce 函数,贴出来。」 | 召回:debounce 代码片段 |
四、注意点
Cursor 自带一套「知识库/Knowledge」系统(官方也叫 Memory,但和 MCP 服务器无关)。它把"当前工作区"的代码、TODO、函数名自动建索引 → 保存在 Cursor 云端账号 → 下次任何对话里提到相关词就自动召回。
和前面安装的「Memory MCP 服务器」是两条不同的技术路线。
如何区分呢?
方法一:调用的工具名称
当保存或读取记忆时,工具名称会告诉我们用的是哪个系统:
Cursor 内置系统:
bash
update_memory (action: create/update/delete)
Memory MCP:
bash
mcp_memory_create_entities
mcp_memory_read_graph
mcp_memory_search_nodes
mcp_memory_add_observations
...等所有 mcp_memory_ 开头的工具
方法二:看返回结果的格式
Cursor 内置系统返回:
bash
Successfully created memory: "内容..." (ID: 10901483)
- 简单的文本确认
- 有 ID 号
Memory MCP 返回:
bash
{
"entities": [...],
"relations": [...]
}
- 结构化的 JSON 数据
- 包含实体和关系
方法三:测试哪个能读取
- Memory MCP 可以读取(返回了 xxx 个实体)
- Cursor 内置系统没有直接的读取工具,只能被 AI 自动检索。
区别是什么呢?
两个记忆系统对比
Cursor 内置记忆系统
1、特点
- 自动集成:Cursor 自带,无需配置
- AI自动检索:AI 会在对话中自动查找相关记忆
- 云端同步:可能与 Cursor 账号同步
- 无法手动查看:没有直接的界面或工具查看所有记忆
- 控制有限:只能通过 AI 间接管理
- 结构简单:纯文本存储,无复杂关系
2、存储格式
bash
Title: "防抖函数位置和命名规范"
Content: "在 xxx 项目中,防抖函数位于..."
Memory MCP 服务器
1、特点
- 知识图谱:支持实体 + 关系的复杂结构
- 完全可控:可以随时查看、搜索、编辑
- 本地存储:数据存在本地
- 结构化
- 需要配置:需要在 mcp.json 中配置
2、存储格式
bash
{
"name": "debounce函数",
"entityType": "代码规范",
"observations": [
"位置: utils/debounce.ts",
"函数名: debounce"
]
}
如何控制启动哪一个?
如果不想同时使用,就在对话的时候指定某一个 memory 保存。