关于 Memlord
Memlord 是一个可自托管的 MCP 记忆服务,面向个人及团队使用。它基于 PostgreSQL 与 pgvector,结合 BM25 全文检索与向量检索,并提供多用户隔离、工作区、OAuth 2.1 授权和 Web 界面。项目采用 AGPL-3.0 与商业双许可。
主要功能
- 01BM25 与向量检索的混合搜索
- 02多用户隔离与共享工作区
- 03OAuth 2.1 内置授权服务
- 04Web 界面浏览、编辑与导入导出
- 05基于 LLM 的 dream 记忆整理流程
- 06保存前的近似重复检测
适用场景
- 01为个人或团队搭建共享的 AI 记忆库
- 02在多个 MCP 客户端之间保存并检索偏好与决策记录
- 03定期整理与合并相似或冲突的记忆
MCP 相关
该项目是 MCP 服务,提供 11 个记忆相关工具(如 store_memory、retrieve_memory、dream_report)以及 dream 提示词,供 MCP 客户端调用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://app.memlord.com/mcpclaude mcp add --transport http memlord https://app.memlord.com/mcp{"mcpServers":{"memlord":{"type":"http","url":"https://app.memlord.com/mcp"}}}在 Cursor 中打开{"servers":{"memlord":{"type":"http","url":"https://app.memlord.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"memlord":{"type":"http","url":"https://app.memlord.com/mcp"}}}{"mcpServers":{"memlord":{"serverUrl":"https://app.memlord.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
面向个人和团队的可自托管 MCP 记忆服务
快速开始 • 工作原理 • MCP 工具 • 配置 • 系统要求 • 许可证
✨ 功能特性
- 🔍 混合搜索 — BM25(全文搜索)+ 向量 KNN(pgvector),通过倒数排名融合进行合并
- 📂 多用户 — 每位用户只能查看自己的记忆;工作区可用于共享团队知识
- 🛠️ 11 个 MCP 工具 — 存储、检索、回忆、列出、按标签搜索、获取、更新、删除、移动、列出工作区、生成梦境报告
- 💤 梦境整理 — 引导式整合流程(
dreamMCP 提示词 +dream_report工具):查找近似重复和相互冲突的记忆,以非破坏方式将它们整合为洞见,由客户端大模型驱动 - 🌐 Web 界面 — 在浏览器中浏览、搜索、编辑和删除记忆;导出/导入 JSON
- 🔒 OAuth 2.1 — 完整的进程内授权服务器,始终启用
- 🐘 PostgreSQL — 使用 pgvector 存储嵌入向量,使用 tsvector 进行全文搜索
- 📊 渐进式披露 — 默认情况下,搜索仅返回精简片段;仅对所需内容调用
get_memory(name),降低令牌用量 - 🔁 去重 — 保存前自动检测近似相同的记忆,避免噪声累积
🆚 Memlord 对比
| Memlord | OpenMemory | mcp-memory-service | basic-memory | |
|---|---|---|---|---|
| 搜索 | BM25 + 向量 + RRF | 仅向量(Qdrant) | BM25 + 向量 + RRF | BM25 + 向量 |
| 嵌入 | 本地 ONNX,无需配置 | 默认使用 OpenAI;可选 Ollama | 本地 ONNX,无需配置 | 本地 FastEmbed |
| 存储 | PostgreSQL + pgvector | PostgreSQL + Qdrant | SQLite-vec / Cloudflare Vectorize | SQLite + Markdown 文件 |
| 多用户 | ✅ | ❌ 实际上仅支持单用户 | ⚠️ 按 agent-ID 限定范围,无隔离 | ❌ |
| 工作区 | ✅ 共享 + 个人,邀请链接 | ⚠️ “Apps” 命名空间 | ⚠️ 标签 + conversation_id | ✅ 按项目设置标志 |
| 身份验证 | ✅ OAuth 2.1 | ❌ 无(可自托管) | ✅ OAuth 2.0 + PKCE | ❌ |
| Web 界面 | ✅ 浏览、编辑、导出 | ✅ Next.js 仪表板 | ✅ 丰富的界面、图可视化、质量评分 | ❌ 本地;仅限云端 |
| MCP 工具 | 11 | 5 | 15+ | ~20 |
| 可自托管 | ✅ 单进程 | ✅ Docker(3 个容器) | ✅ | ✅ |
| 记忆输入 | 手动(显式存储) | 由 LLM 自动提取 | 手动 | 手动(Markdown 笔记) |
| 记忆类型 | 事实 / 偏好 / 指令 / 反馈 / 决策 / 洞察 | 自动提取的事实 | — | 观察记录 + wiki 链接 |
| 时间感知搜索 | ✅ 自然语言日期 | ⚠️ 仅限 REST,不支持 MCP 工具 | — | ✅ recent_activity |
| Token 效率 | ✅ 渐进式披露 | ❌ | — | ✅ build_context 遍历 |
| 导入 / 导出 | ✅ JSON | ✅ ZIP(JSON + JSONL) | — | ✅ Markdown(人类可读) |
| 许可证 | AGPL-3.0 / 商业 | Apache 2.0 | Apache 2.0 | AGPL-3.0 |
| 竞争对手真正占优之处: |
- OpenMemory — 可从原始对话文本中自动提取记忆;无需手动决定要存储什么;导入/导出功能良好
- mcp-memory-service — Web UI 更丰富(图谱可视化、质量评分、8 个标签页);许可证限制更宽松(Apache 2.0);支持多种传输选项(stdio、SSE、HTTP)
- basic-memory — 记忆以人类可读的 Markdown 文件形式保存,可编辑、进行版本控制,也可在没有任何 服务的情况下阅读;维基式实体链接可构成本地知识图谱;约 20 个 MCP 工具
适合选择 Memlord 的情况:
- 你想要零配置本地嵌入——ONNX 模型随服务一同提供,无需 Ollama 或外部 API
- 你运行的是多用户团队服务,需要完善的 OAuth 2.1 身份验证和基于邀请的工作区
- 你想要生产级数据库(PostgreSQL),以便扩展到单机 SQLite 无法满足的规模
- 你希望明确管理记忆——只存储真正重要的内容,并进行类型划分和标记,而非存储大模型决定提取的所有内容
- 你想要可自托管的 Web UI,具备完整的 CRUD 和 JSON 导出功能,无需订阅云服务
🚀 快速入门
🐳 Docker
cp .env.example .env
docker compose up
HTTP 服务(多用户、Web UI、OAuth)
# Install dependencies
uv sync --dev
# Download ONNX model (~23 MB)
uv run python scripts/download_model.py
# Run migrations
alembic upgrade head
# Start the server
memlord
打开 http://localhost:8000 使用 Web UI。MCP 端点位于 /mcp。
🔍 工作原理
每个搜索请求都会并行运行 BM25 和向量 KNN,然后通过倒数排名融合合并结果:
flowchart TD
Q([query]) --> BM25["BM25\nsearch_vector @@ websearch_to_tsquery"]
Q --> EMB["ONNX embed\nparaphrase-multilingual-MiniLM-L12-v2 · 384d · local"]
EMB --> KNN["KNN\nembedding <=> query_vector\ncosine distance"]
BM25 --> RRF["RRF fusion\nscore = 1/(k+rank_bm25) + 1/(k+rank_vec)\nk=60"]
KNN --> RRF
RRF --> R([top-N results])
⚙️ 配置
所有设置都使用 MEMLORD_ 前缀。完整列表请参阅 .env.example。
| 变量 | 默认值 | 描述 |
|---|---|---|
MEMLORD_DB_URL | postgresql+asyncpg://postgres:postgres@localhost/memlord | PostgreSQL 连接 URL |
MEMLORD_PORT | 8000 | 服务端口 |
MEMLORD_BASE_URL | http://localhost:8000 | OAuth 公共 URL(HTTP 模式) |
MEMLORD_OAUTH_JWT_SECRET | memlord-dev-secret-please-change | JWT 签名密钥(HTTP 模式) |
部署前,请将 MEMLORD_BASE_URL 设置为你的公共 URL,并更改 MEMLORD_OAUTH_JWT_SECRET。
🛠️ MCP 工具
| 工具 | 描述 |
|---|---|
store_memory | 保存一条记忆(按内容幂等);遇到近似重复内容时会报错;可选设置 expires_at |
retrieve_memory | 混合语义搜索和全文搜索;默认返回片段 |
recall_memory | 根据自然语言时间表达式搜索;默认返回片段 |
list_memories | 支持按类型和标签筛选的分页列表 |
search_by_tag | AND/OR 标签搜索 |
get_memory | 按名称获取单条记忆及其完整内容(包括已过期的记忆) |
update_memory | 按名称更新内容、类型、标签、元数据或到期时间(也可选择重命名) |
delete_memory | 按名称删除记忆 |
move_memory | 将记忆移至其他工作区 |
list_workspaces | 列出你所属的工作区(包括个人工作区) |
dream_report | 只读的整合候选项:相似记忆对、已过期和即将过期的记忆 |
dream MCP 提示词会引导客户端大模型基于
dream_report 输出完成一次完整的整合流程:对相似记忆对进行分类(重复/互补/冲突),合并为
insight 记忆,并通过 expires_at 让已被取代的记忆退役——绝不进行破坏性操作。
工作区管理(创建、邀请、加入、离开)通过 Web UI 进行。
💻 系统要求
- Python 3.12
- PostgreSQL ≥ 15,并安装 pgvector 扩展
- uv — Python 包管理器
👨💻 开发
pyright src/ # type check
ruff format . # format
pytest # run tests
alembic-autogen-check # verify migrations are up to date
📄 许可证
Memlord 使用双重许可:
- AGPL-3.0 — 可免费用于开源项目。如果你将修改后的版本作为网络服务运行,则必须 发布源代码。
- Commercial License — 适用于专有或闭源部署。请联系 [email protected] 或 [email protected] 购买。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。