hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
@pinkpixel/mem0-mcp MCP 服务器 ✨
模型上下文协议 (MCP) 服务器与Mem0.ai集成,为 LLM 提供持久内存功能。它允许 AI 代理跨会话存储和检索信息。
该服务器使用mem0ai
Node.js SDK 作为其核心功能。
特点🧠
工具
add_memory
:将一段文本内容存储为与特定userId
关联的记忆。- 输入:
content
(字符串,必需)、userId
(字符串,必需)、sessionId
(字符串,可选)、agentId
(字符串,可选)、metadata
(对象,可选) - 存储提供的文本,以便在将来的交互中回忆。
- 输入:
search_memory
:根据特定userId
的自然语言查询搜索存储的记忆。- 输入:
query
(字符串,必需)、userId
(字符串,必需)、sessionId
(字符串,可选)、agentId
(字符串,可选)、filters
(对象,可选)、threshold
(数字,可选) - 根据语义相似性检索相关记忆。
- 输入:
delete_memory
:根据 ID 从存储中删除特定内存。- 输入:
memoryId
(字符串,必需)、userId
(字符串,必需)、sessionId
(字符串,可选)、agentId
(字符串,可选) - 永久删除指定的内存。
- 根据语义相似性检索相关记忆。
- 输入:
先决条件🔑
该服务器支持两种存储模式:
- 云存储模式☁️(推荐)
- 需要Mem0 API 密钥(作为
MEM0_API_KEY
环境变量提供) - 记忆永久存储在 Mem0 的云服务器上
- 无需本地数据库
- 需要Mem0 API 密钥(作为
- 本地存储模式💾
- 需要OpenAI API 密钥(作为
OPENAI_API_KEY
环境变量提供) - 记忆存储在内存向量数据库中(默认情况下是非持久性的)
- 除非配置为持久存储,否则服务器重启时数据会丢失
- 需要OpenAI API 密钥(作为
安装和配置⚙️
您可以通过两种主要方式运行此服务器:
1. 使用npx
(推荐快速使用)
使用 npm 全局安装包:
配置您的 MCP 客户端(例如,Claude Desktop、Cursor、Cline、Roo Code 等)以使用npx
运行服务器:
云存储配置(推荐)
**注意:**将"YOUR_MEM0_API_KEY_HERE"
替换为您的实际 Mem0 API 密钥。
本地存储配置(替代)
**注意:**用您的实际 OpenAI API 密钥替换"YOUR_OPENAI_API_KEY_HERE"
。
2. 从克隆的存储库运行
注意:此方法要求您先 git clone 存储库。
克隆存储库、安装依赖项并构建服务器:
然后,配置您的 MCP 客户端以使用node
直接运行构建的脚本:
重要提示:
- 将
/absolute/path/to/mem0-mcp/
替换为克隆存储库的实际绝对路径 - 使用
build/index.js
文件,而不是src/index.ts
文件 - MCP 服务器需要干净的标准输出来进行协议通信 - 任何写入标准输出的库或代码都可能干扰协议
默认用户 ID(可选后备)
add_memory
和search_memory
工具都需要一个userId
参数来将记忆与特定用户关联。
为了方便测试或单用户场景,您可以在启动服务器时选择性地设置DEFAULT_USER_ID
环境变量。如果设置了此变量,并且在调用search_memory
工具时省略了userId
参数,则服务器将使用DEFAULT_USER_ID
的值进行搜索。
**注意:**虽然存在此后备方案,但通常建议调用代理(LLM)明确提供正确的userId
以添加和搜索记忆,以避免歧义。
使用DEFAULT_USER_ID
的示例配置:
或者直接使用node
运行时:
云存储 vs. 本地存储
云存储(Mem0 API)
- 默认持久化- 您的记忆在会话和服务器重启后仍然可用
- 无需本地数据库- 所有数据都存储在 Mem0 的服务器上
- 更高的检索质量- 使用 Mem0 优化的搜索算法
- 附加字段- 支持
agent_id
和threshold
参数 - 需要- Mem0 API 密钥
本地存储(OpenAI API)
- 默认内存存储- 数据仅存储在 RAM 中,不会长期持久化。虽然可能会进行一些缓存,但不应将其用作永久存储。
- 数据丢失风险——服务器重启、系统重启或进程终止时,内存数据将丢失
- 推荐用于- 仅限开发、测试或临时使用
- 对于持久存储- 如果您需要可靠的长期内存,请使用带有 Mem0 API 的云存储选项
- 使用 OpenAI 嵌入- 用于向量搜索功能
- 自包含- 所有数据都保留在您的机器上
- 需要- OpenAI API 密钥
发展💻
克隆存储库并安装依赖项:
构建服务器:
对于文件更改时自动重建的开发:
调试🐞
由于 MCP 服务器通过 stdio 进行通信,因此调试起来可能比较困难。以下是一些方法:
- 使用 MCP Inspector :此工具可以监控 MCP 协议通信:
- 控制台日志:添加控制台日志时,请始终使用
console.error()
而不是console.log()
以避免干扰 MCP 协议 - 环境文件:使用
.env
文件进行本地开发,以简化设置 API 密钥和其他配置选项
技术实现说明
高级 Mem0 API 参数
使用 Mem0 API 的 Cloud Storage 模式时,您可以利用其他参数进行更复杂的内存管理。虽然工具架构中未明确公开这些参数,但在添加内存时可以将其包含在metadata
对象中:
add_memory
的高级参数:
范围 | 类型 | 描述 |
---|---|---|
metadata | 目的 | 存储关于记忆的额外上下文信息(例如,位置、时间、标识符)。这可以在检索过程中用于筛选。 |
includes | 细绳 | 包含在记忆中的具体偏好。 |
excludes | 细绳 | 从记忆中排除的特定偏好。 |
infer | 布尔值 | 是否推断记忆或直接存储消息(默认值:true)。 |
output_format | 细绳 | 格式版本,v1.0(默认,已弃用)或 v1.1(推荐)。 |
custom_categories | 目的 | 带有名称和描述的类别列表。 |
custom_instructions | 细绳 | 处理和组织记忆的项目特定指南。 |
immutable | 布尔值 | 内存是否不可变(默认值:false)。 |
expiration_date | 细绳 | 内存何时过期(格式:YYYY-MM-DD)。 |
org_id | 细绳 | 与此记忆关联的组织 ID。 |
project_id | 细绳 | 与此内存关联的项目 ID。 |
version | 细绳 | 内存版本(v1 已弃用,建议新应用程序使用 v2)。 |
要在 MCP 服务器中使用这些参数,请在调用add_memory
工具时将它们添加到元数据对象中。例如:
search_memory
的高级参数:
Mem0 v2 搜索 API 提供了强大的过滤功能,可以通过filters
参数使用:
范围 | 类型 | 描述 |
---|---|---|
filters | 目的 | 具有逻辑运算符和比较条件的复杂过滤器 |
top_k | 整数 | 返回的顶级结果数(默认值:10) |
fields | 细绳[] | 响应中要包含的特定字段 |
rerank | 布尔值 | 是否对记忆进行重新排序(默认值:false) |
keyword_search | 布尔值 | 是否根据关键字搜索(默认值:false) |
filter_memories | 布尔值 | 是否过滤记忆(默认值:false) |
threshold | 数字 | 结果的最小相似度阈值(默认值:0.3) |
org_id | 细绳 | 用于筛选记忆的组织 ID |
project_id | 细绳 | 用于筛选记忆的项目 ID |
filters
参数支持复杂的逻辑运算(AND、OR)和各种比较运算符:
操作员 | 描述 |
---|---|
in | 匹配任何指定的值 |
gte | 大于或等于 |
lte | 小于或等于 |
gt | 大于 |
lt | 少于 |
ne | 不等于 |
icontains | 不区分大小写的包含检查 |
使用search_memory
工具的复杂过滤器的示例:
这将搜索与 Alice 的爱好相关的记忆,其中 user_id 为“alice”并且 agent_id 为“travel-agent”或“sports-agent”,返回最多 5 个结果,相似度得分至少为 0.5。
有关这些参数的更多详细信息,请参阅Mem0 API 文档。
安全记录器
MCP 服务器实现了一个SafeLogger
类,该类可以选择性地将 console.log 调用从 mem0ai 库重定向到 stderr,而不会中断 MCP 协议:
- 拦截 console.log 调用并检查堆栈跟踪以确定来源
- 仅重定向来自 mem0ai 库或我们自己的代码的日志调用
- 为 MCP 协议通信保留干净的标准输出
- 进程退出时自动清理资源
这允许 MCP 客户端正常运行,同时保留有用的调试信息。
环境变量
服务器识别几个控制其行为的环境变量:
MEM0_API_KEY
:云存储模式的 API 密钥OPENAI_API_KEY
:本地存储模式(嵌入)的 API 密钥DEFAULT_USER_ID
:内存操作的默认用户ID
由 Pink Pixel 用❤️制作
You must be authenticated.
用于 AI 应用的灵活内存系统,支持多个 LLM 提供程序,可用作 MCP 服务器或直接库集成,无需明确命令即可实现自主内存管理。
- Features 🧠
- Prerequisites 🔑
- Installation & Configuration ⚙️
- Cloud vs. Local Storage 🔄
- Development 💻
- Debugging 🐞
- Technical Implementation Notes 🔧