使用说明
易记忆MCP
英语 | 中文
一个轻量级的、本地第一个人工智能代理个人记忆中心,由 兰斯数据库 和那个 模型上下文协议(MCP).
多个代理(Claude Code、OpenClaw、Cursor等)连接到这个MCP服务器,通过语义向量搜索存储和检索长期记忆,不需要外部数据库进程。
特性
- 语义搜索 --LanceDB支持的向量相似性搜索,而不仅仅是关键字匹配
- 零基础设施 --LanceDB是嵌入式的,无需运行单独的数据库服务器
- 多代理共享内存 --一个内存存储,多个代理
- 命名空间隔离 --每个项目或代理都有内存范围,以防止渗透
- 中、英文 --用途
BAAI/bge-m3高质量双语嵌入 - 本地优先和私人 --所有数据都保留在您的计算机上
~/memory-mcp/ - 去重 --保存时自动进行相似性检查,避免冗余内存
- 记忆巩固 --合并相似的记忆,保持店铺整洁
建筑
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Claude Code │ │ OpenClaw │ │ Cursor ... │
└──────┬───────┘ └──────┬──────┘ └──────┬───────┘
│ MCP (stdio/SSE)│ │
└─────────┬─────────┘───────────────┘
│
┌─────────▼──────────┐
│ Easy Memory MCP │
│ (Python + FastMCP) │
├────────────────────┤
│ Memory Manager │ ← dedup / consolidate / decay
│ Embedding Engine │ ← local model or API
│ Namespace Router │ ← multi-project isolation
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ LanceDB │
│ ~/memory-mcp/ │
│ (embedded, local) │
└────────────────────┘
用例
Easy Memory MCP专为需要持久、可搜索内存的AI代理而设计。以下是一些常见的场景:
- 个人开发助理 --Claude Code会记住您的编码偏好、项目决策和跨会话的技术背景。不再重复自己。
- 多智能体知识共享 --多个代理(Claude Code、Cursor、自定义机器人)共享一个内存存储。一个代理学习的知识可以通过命名空间隔离供所有人使用。
- 项目上下文持久性 -体系结构决策、API契约和部署说明在单个会话之后仍然有效。几周后回来,你的经纪人已经知道这个项目了。
- 反馈循环 --代理保存更正(“不要使用
any在TypeScript中”),并避免在未来的会话中重复错误。 - 参考图书馆 --构建一个可搜索的知识库,其中包含开发过程中发现的解决方案、代码片段和调试技巧。
看 用例 有关代码示例的详细演练。
快速开始
一键安装(推荐)
git clone https://github.com/ibb-net/easy_memory_mcp.git
cd easy_memory_mcp
bash install.sh
交互式安装程序处理:包安装、Claude Code MCP注册、systemd服务设置和嵌入模型下载。
非交互式:
bash install.sh --install # full install
bash install.sh --download-model # download embedding model
bash install.sh --status # show status
手动安装
pip install easy-memory-mcp
或来源:
git clone https://github.com/ibb-net/easy_memory_mcp.git
cd easy_memory_mcp
pip install -e ".[dev]"
跑
# stdio transport (default, for Claude Code / Cursor)
python -m easy_memory_mcp
# SSE transport (persistent service, recommended)
python -m easy_memory_mcp --transport sse --port 8135
# Streamable HTTP transport (newest, recommended for remote)
python -m easy_memory_mcp --transport streamable-http --port 8135
SSE/HTTP传输在启动时预加载嵌入模型,因此第一个工具调用会立即响应。
在MCP客户端中注册
克劳德代码 (苏格兰和南方能源公司,建议通过 claude CLI):
claude mcp add memory -s user --transport sse http://localhost:8135/sse
克劳德代码 (stdio--通过配置文件 ~/.claude.json 或 .mcp.json):
{
"mcpServers": {
"memory": {
"command": "python",
"args": ["-m", "easy_memory_mcp"],
"env": {
"MEMORY_MCP_PATH": "/home/you/memory-mcp"
}
}
}
}
光标/风帆 (.cursor/mcp.json):
{
"mcpServers": {
"memory": {
"url": "http://localhost:8135/sse"
}
}
}
远程访问 (通过HTTPS与反向代理):
{
"mcpServers": {
"memory": {
"url": "https://your-domain.com/sse"
}
}
}
健康检查
curl http://localhost:8135/health
# {"status":"ok","uptime_seconds":123.4,"namespace":"default","storage_path":"/home/you/memory-mcp"}
代理提示模板
为了获得最佳结果,请配置AI代理的系统提示/规则,使其自动检索和存储内存。现成的模板位于 prompts/ 文件夹:
克劳德代码
从以下位置复制内容 prompts/claude-code-memory.md 进入你的项目 CLAUDE.md (或 ~/.claude/CLAUDE.md 全球效应)。
光标
光标使用 规则 --注入到每个对话中的项目级提示文件。
复制 .mdc 将文件归档到项目的 .cursor/rules/ 目录:
| 文件 | 描述 |
|---|---|
cursor-memory-light.mdc |
轻量级——回答前搜索,有价值时保存 |
cursor-memory-strict.mdc |
严格SOP——强制搜索,明确保存条件 |
cursor-memory-light-cn.mdc |
轻量版(中文) |
cursor-memory-strict-cn.mdc |
严格版(中文) |
# Example: install the light version
mkdir -p .cursor/rules
cp prompts/cursor-memory-light.mdc .cursor/rules/memory-workflow.mdc
这 alwaysApply: true frontmatter确保规则在每次对话中都是有效的。
其他代理商
对于支持系统提示的任何代理,关键说明如下:
- 在回答之前 --呼叫
memory_search(query=<user request>, top_k=5) - 保存时 --呼叫
memory_save(content=..., type=..., tags=[...], importance=...) - 从不保存 凭证、一次性信息或未经证实的假设
MCP工具
| 工具 | 说明 |
|---|---|
memory_save |
通过自动嵌入和数据消除检查存储新内存 |
memory_search |
使用可选类型/标签/命名空间过滤器进行语义相似性搜索 |
memory_get |
按ID检索内存 |
memory_update |
更新内容或标签(自动重新嵌入) |
memory_delete |
按ID删除内存 |
memory_list |
按类型、标签或命名空间筛选列出内存 |
memory_consolidate |
合并相似的内存以减少冗余 |
示例用法(来自代理)
# Save a memory
memory_save(content="User prefers concise responses without emoji", type="feedback", tags=["style"], namespace="default")
# Search memories
memory_search(query="user communication preferences", top_k=5)
# List all feedback memories
memory_list(type="feedback", limit=20)
数据模型
每条内存记录包含:
| 字段 | 类型 | 描述 |
|---|---|---|
id |
string | UUID,自动生成 |
content |
string | 内存文本 |
type |
字符串 | user / feedback / project / reference / conversation |
tags |
list[string] | 可搜索标签 |
namespace |
string | 项目或代理范围(默认值: "default") |
source |
string | 哪个代理创建了它(例如。 "claude-code") |
importance |
float | 0–1分,用于排名和衰减 |
access_count |
int | 跟踪检索此内存的频率 |
created_at |
日期时间 | 创建时间戳 |
updated_at |
日期时间 | 上次修改时间戳 |
last_accessed_at |
日期时间 | 上次检索时间戳 |
配置
所有配置都是通过环境变量进行的:
| 变量 | 默认值 | 描述 |
|---|---|---|
MEMORY_MCP_PATH |
~/memory-mcp |
LanceDB数据文件目录 |
MEMORY_MCP_EMBEDDING_MODEL |
BAAI/bge-m3 |
句子变压器型号名称 |
MEMORY_MCP_EMBEDDING_DIM |
1024 |
嵌入向量维度 |
MEMORY_MCP_DEDUP_THRESHOLD |
0.95 |
去重的相似性阈值(0-1) |
MEMORY_MCP_NAMESPACE |
default |
内存的默认命名空间 |
MEMORY_MCP_EMBEDDING_BACKEND |
local |
local 或 openai |
OPENAI_API_KEY |
(未设置) | 设置为使用OpenAI嵌入而不是本地模型 |
MEMORY_MCP_OPENAI_MODEL |
text-embedding-3-small |
OpenAI嵌入模型(如果使用API) |
HF_HUB_OFFLINE |
(未设置) | 设置为 1 防止HuggingFace在线检查(建议维修) |
技术栈
- MCP Python SDK --模型上下文协议服务器框架
- 兰斯数据库 --嵌入式矢量数据库(无服务器进程)
- 句子变换器 --本地嵌入模型(默认:BGE-M3)
- PyArrow --LanceDB模式和数据处理
与备选方案的比较
| 功能 | 易记忆MCP | 官方MCP内存 | MCP内存服务 | Mem0 |
|---|---|---|---|---|
| 矢量语义搜索 | 是 | 否(仅关键字) | 是 | 是 |
| 零外部deps | 是(嵌入式DB) | 是(JSON文件) | 否(ChromaDB) | 否 |
| 中国支持 | 是(BGE-M3) | 不适用 | 否 | 否 |
| 命名空间隔离 | 是 | 否 | 否 | 弱 |
| 内存整合 | 是 | 否 | 是 | 是 |
| 本地优先 | 是 | 是 | 有 | 可选 |
路线图
- [x] 第一阶段——核心:LanceDB商店、嵌入引擎、7个MCP工具、测试
- [x] 第2阶段--增强:命名空间隔离、数据消除、整合、运行状况端点
- []第3阶段——生态系统:身份验证和多用户、Web UI、导入/导出、重要性衰减
演示
一个独立的演示脚本显示了API的核心操作-保存、搜索、重复数据消除、更新、删除:
pip install -e ".[dev]"
python examples/demo.py
看 examples/demo.py 完整的来源。
贡献
欢迎投稿!看 贡献.md 用于:
- 开发设置和代码风格
- 如何添加新的MCP工具或嵌入后端
- 提交消息约定和公关指南
- 问题报告指南
许可证
麻省理工学院
