@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.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
用于 AI 应用的灵活内存系统,支持多个 LLM 提供程序,可用作 MCP 服务器或直接库集成,无需明确命令即可实现自主内存管理。
Related Resources
Related MCP Servers
- -securityFlicense-qualityAn MCP server that allows Claude and other LLMs to manage persistent memories across conversations through text file storage, enabling commands to add, search, delete and list memory entries.Last updated -2TypeScript
- -securityAlicense-qualityAn MCP server that provides persistent memory capabilities for Claude, offering tiered memory architecture with semantic search, memory consolidation, and integration with the Claude desktop application.Last updated -5PythonMIT License
- -securityAlicense-qualityAn MCP-native server that enables intelligent task delegation from advanced AI agents like Claude to more cost-effective LLMs, optimizing for cost while maintaining output quality.Last updated -80PythonMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides AI agents with persistent memory capabilities through Mem0, allowing them to store, retrieve, and semantically search memories.Last updated -2PythonMIT License