mem0 Memory System

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Supports Google's AI models for memory functionality and context management

  • Draws inspiration from LangChain for memory management capabilities

  • Provides integration with Ollama for local LLM support and embedding generation

@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 (字符串,可选)
    • 永久删除指定的内存。
    • 根据语义相似性检索相关记忆。

先决条件🔑

该服务器支持两种存储模式:

  1. 云存储模式☁️(推荐)
    • 需要Mem0 API 密钥(作为MEM0_API_KEY环境变量提供)
    • 记忆永久存储在 Mem0 的云服务器上
    • 无需本地数据库
  2. 本地存储模式💾
    • 需要OpenAI API 密钥(作为OPENAI_API_KEY环境变量提供)
    • 记忆存储在内存向量数据库中(默认情况下是非持久性的)
    • 除非配置为持久存储,否则服务器重启时数据会丢失

安装和配置⚙️

您可以通过两种主要方式运行此服务器:

1. 使用npx (推荐快速使用)

使用 npm 全局安装包:

npm install -g @pinkpixel/mem0-mcp

配置您的 MCP 客户端(例如,Claude Desktop、Cursor、Cline、Roo Code 等)以使用npx运行服务器:

云存储配置(推荐)

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

**注意:**"YOUR_MEM0_API_KEY_HERE"替换为您的实际 Mem0 API 密钥。

本地存储配置(替代)

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

**注意:**用您的实际 OpenAI API 密钥替换"YOUR_OPENAI_API_KEY_HERE"

2. 从克隆的存储库运行

注意:此方法要求您先 git clone 存储库。

克隆存储库、安装依赖项并构建服务器:

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install npm run build

然后,配置您的 MCP 客户端以使用node直接运行构建的脚本:

{ "mcpServers": { "mem0-mcp": { "command": "node", "args": [ "/absolute/path/to/mem0-mcp/build/index.js" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" // OR use "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE" for local storage }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

重要提示:

  1. /absolute/path/to/mem0-mcp/替换为克隆存储库的实际绝对路径
  2. 使用build/index.js文件,而不是src/index.ts文件
  3. MCP 服务器需要干净的标准输出来进行协议通信 - 任何写入标准输出的库或代码都可能干扰协议

默认用户 ID(可选后备)

add_memorysearch_memory工具都需要一个userId参数来将记忆与特定用户关联。

为了方便测试或单用户场景,您可以在启动服务器时选择性地设置DEFAULT_USER_ID环境变量。如果设置了此变量,并且在调用search_memory工具时省略了userId参数,则服务器将使用DEFAULT_USER_ID的值进行搜索。

**注意:**虽然存在此后备方案,但通常建议调用代理(LLM)明确提供正确的userId以添加和搜索记忆,以避免歧义。

使用DEFAULT_USER_ID的示例配置:

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, } } }

或者直接使用node运行时:

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install npm run build
{ "mcpServers": { "mem0-mcp": { "command": "node", "args": [ "path/to/mem0-mcp/build/index.js" ], "env": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, } } }

云存储 vs. 本地存储

云存储(Mem0 API)

  • 默认持久化- 您的记忆在会话和服务器重启后仍然可用
  • 无需本地数据库- 所有数据都存储在 Mem0 的服务器上
  • 更高的检索质量- 使用 Mem0 优化的搜索算法
  • 附加字段- 支持agent_idthreshold参数
  • 需要- Mem0 API 密钥

本地存储(OpenAI API)

  • 默认内存存储- 数据仅存储在 RAM 中,不会长期持久化。虽然可能会进行一些缓存,但不应将其用作永久存储。
  • 数据丢失风险——服务器重启、系统重启或进程终止时,内存数据将丢失
  • 推荐用于- 仅限开发、测试或临时使用
  • 对于持久存储- 如果您需要可靠的长期内存,请使用带有 Mem0 API 的云存储选项
  • 使用 OpenAI 嵌入- 用于向量搜索功能
  • 自包含- 所有数据都保留在您的机器上
  • 需要- OpenAI API 密钥

发展💻

克隆存储库并安装依赖项:

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install

构建服务器:

npm run build

对于文件更改时自动重建的开发:

npm run watch

调试🐞

由于 MCP 服务器通过 stdio 进行通信,因此调试起来可能比较困难。以下是一些方法:

  1. 使用 MCP Inspector :此工具可以监控 MCP 协议通信:
npm run inspector
  1. 控制台日志:添加控制台日志时,请始终使用console.error()而不是console.log()以避免干扰 MCP 协议
  2. 环境文件:使用.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工具时将它们添加到元数据对象中。例如:

{ "content": "Important information to remember", "userId": "user123", "sessionId": "project-abc", "metadata": { "includes": "important context", "excludes": "sensitive data", "immutable": true, "expiration_date": "2025-12-31", "custom_instructions": "Prioritize this memory for financial questions", "version": "v2" } }

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工具的复杂过滤器的示例:

{ "query": "What are Alice's hobbies?", "userId": "user123", "filters": { "AND": [ { "user_id": "alice" }, { "agent_id": {"in": ["travel-agent", "sports-agent"]} } ] }, "threshold": 0.5, "top_k": 5 }

这将搜索与 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.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

用于 AI 应用的灵活内存系统,支持多个 LLM 提供程序,可用作 MCP 服务器或直接库集成,无需明确命令即可实现自主内存管理。

  1. Features 🧠
    1. Tools
  2. Prerequisites 🔑
    1. Installation & Configuration ⚙️
      1. 1. Using npx (Recommended for quick use)
      2. 2. Running from Cloned Repository
      3. Default User ID (Optional Fallback)
    2. Cloud vs. Local Storage 🔄
      1. Cloud Storage (Mem0 API)
      2. Local Storage (OpenAI API)
    3. Development 💻
      1. Debugging 🐞
        1. Technical Implementation Notes 🔧
          1. Advanced Mem0 API Parameters
          2. SafeLogger
          3. Environment Variables
        ID: fd4ya2uyoa