一个与 Mem0.ai 集成的模型上下文协议(MCP)服务器,为大语言模型(LLMs)提供持久记忆能力。它允许AI代理在会话之间存储和检索信息。
此服务器使用 mem0ai Node.js SDK 来实现其核心功能。
add_memory: 将一段文本内容作为与特定 userId 相关的记忆存储。
content (字符串), userId (字符串)sessionId (字符串), agentId (字符串), appId (字符串), metadata (对象)includes (字符串), excludes (字符串), infer (布尔值), outputFormat (字符串), customCategories (对象), customInstructions (字符串), immutable (布尔值), expirationDate (字符串)search_memory: 根据自然语言查询搜索特定 userId 的存储记忆。
query (字符串), userId (字符串)sessionId (字符串), agentId (字符串), appId (字符串), filters (对象), threshold (数字)topK (数字), fields (数组), rerank (布尔值), keywordSearch (布尔值), filterMemories (布尔值)delete_memory: 根据ID删除特定的记忆。
memoryId (字符串), userId (字符串)agentId (字符串), appId (字符串)此服务器支持三种存储模式:
云存储模式 ☁️ (推荐用于生产环境)
MEM0_API_KEY 环境变量提供)Supabase 存储模式 🗄️ (推荐用于自托管)
SUPABASE_URL 和 SUPABASE_KEY 环境变量)OPENAI_API_KEY 环境变量)用于嵌入本地存储模式 💾 (仅限开发/测试)
OPENAI_API_KEY 环境变量提供)您可以以三种主要方式运行此服务器:
要通过 Smithery 自动安装 Mem0 记忆服务器:
npx -y @smithery/cli install @pinkpixel-dev/mem0-mcp-server --client claude
全局安装包并使用 mem0-mcp 命令:
npm install -g @pinkpixel/mem0-mcp
全局安装后,可以直接运行服务器:
mem0-mcp
配置您的 MCP 客户端以使用全局命令:
{
"mcpServers": {
"mem0-mcp": {
"command": "mem0-mcp",
"args": [],
"env": {
"MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE",
"DEFAULT_USER_ID": "user123",
"DEFAULT_AGENT_ID": "your-agent-id",
"DEFAULT_APP_ID": "your-app-id"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
{
"mcpServers": {
"mem0-mcp": {
"command": "mem0-mcp",
"args": [],
"env": {
"SUPABASE_URL": "YOUR_SUPABASE_PROJECT_URL",
"SUPABASE_KEY": "YOUR_SUPABASE_ANON_KEY",
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
"DEFAULT_USER_ID": "user123",
"DEFAULT_AGENT_ID": "your-agent-id",
"DEFAULT_APP_ID": "your-app-id"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
{
"mcpServers": {
"mem0-mcp": {
"command": "mem0-mcp",
"args": [],
"env": {
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
"DEFAULT_USER_ID": "user123"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
npx(推荐偶尔使用)配置您的 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",
"DEFAULT_AGENT_ID": "your-agent-id",
"DEFAULT_APP_ID": "your-app-id"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
{
"mcpServers": {
"mem0-mcp": {
"command": "npx",
"args": [
"-y",
"@pinkpixel/mem0-mcp"
],
"env": {
"SUPABASE_URL": "YOUR_SUPABASE_PROJECT_URL",
"SUPABASE_KEY": "YOUR_SUPABASE_ANON_KEY",
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
"DEFAULT_USER_ID": "user123",
"DEFAULT_AGENT_ID": "your-agent-id",
"DEFAULT_APP_ID": "your-app-id"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
{
"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",
"delete_memory"
]
}
}
}
注意:此方法需要您先克隆仓库。
克隆仓库,安装依赖项,并构建服务器:
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": [
"/绝对路径到/mem0-mcp/build/index.js"
],
"env": {
"MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE",
"DEFAULT_USER_ID": "user123",
"DEFAULT_AGENT_ID": "your-agent-id",
"DEFAULT_APP_ID": "your-app-id"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
{
"mcpServers": {
"mem0-mcp": {
"command": "node",
"args": [
"/绝对路径到/mem0-mcp/build/index.js"
],
"env": {
"SUPABASE_URL": "YOUR_SUPABASE_PROJECT_URL",
"SUPABASE_KEY": "YOUR_SUPABASE_ANON_KEY",
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
"DEFAULT_USER_ID": "user123",
"DEFAULT_AGENT_ID": "your-agent-id",
"DEFAULT_APP_ID": "your-app-id"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
{
"mcpServers": {
"mem0-mcp": {
"command": "node",
"args": [
"/绝对路径到/mem0-mcp/build/index.js"
],
"env": {
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
"DEFAULT_USER_ID": "user123"
},
"disabled": false,
"alwaysAllow": [
"add_memory",
"search_memory",
"delete_memory"
]
}
}
}
重要提示:
/绝对路径到/mem0-mcp/ 替换为您实际克隆的仓库的绝对路径build/index.js 文件,而不是 src/index.ts 文件如果您选择使用 Supabase 存储模式,您需要设置您的 Supabase 数据库所需的表。
在 Supabase SQL 编辑器中运行这些 SQL 命令:
-- 启用向量扩展
create extension if not exists vector;
-- 创建 memories 表
create table if not exists memories (
id text primary key,
embedding vector(1536),
metadata jsonb,
created_at timestamp with time zone default timezone('utc', now()),
updated_at timestamp with time zone default timezone('utc', now())
);
-- 创建向量相似度搜索函数
create or replace function match_vectors(
query_embedding vector(1536),
match_count int,
filter jsonb default '{}'::jsonb
)
returns table (
id text,
similarity float,
metadata jsonb
)
language plpgsql
as $$
begin
return query
select
t.id::text,
1 - (t.embedding <=> query_embedding) as similarity,
t.metadata
from memories t
where case
when filter::text = '{}'::text then true
else t.metadata @> filter
end
order by t.embedding <=> query_embedding
limit match_count;
end;
$$;
-- 创建 memory_history 表以跟踪历史记录
create table if not exists memory_history (
id text primary key,
memory_id text not null,
previous_value text,
new_value text,
action text not null,
created_at timestamp with time zone default timezone('utc', now()),
updated_at timestamp with time zone,
is_deleted integer default 0
);
添加这些到您的 MCP 配置中:
SUPABASE_URL: 您的 Supabase 项目 URL(例如,https://your-project.supabase.co)SUPABASE_KEY: 您的 Supabase 匿名密钥OPENAI_API_KEY: 您的 OpenAI API 密钥(用于嵌入)✅ 持久存储 - 数据在服务器重启时仍然存在 ✅ 免费层级可用 - 开发时提供慷慨的免费层级 ✅ 可自托管 - 可以运行自己的 Supabase 实例 ✅ 可扩展 - 随着需求增长而扩展 ✅ SQL 访问 - 直接数据库访问进行高级查询 ✅ 实时功能 - 内置实时订阅
服务器使用四个关键参数来组织和限定记忆:
userId - 标识用户(必需)agentId - 标识调用工具的 LLM/代理(可选)appId - 标识用户的项目/应用程序 - 这控制项目范围!(可选)sessionId - 标识对话会话(映射到 Mem0 中的 run_id)(可选)MCP 服务器支持环境变量回退以识别用户和项目设置:
DEFAULT_USER_ID: 当工具调用中未提供时使用的回退用户 IDDEFAULT_AGENT_ID: 用于标识 LLM/代理的回退代理 IDDEFAULT_APP_ID: 用于项目限定的回退应用 ID// 您的 MCP 配置
"env": {
"DEFAULT_USER_ID": "john-doe",
"DEFAULT_AGENT_ID": "my-assistant",
"DEFAULT_APP_ID": "my-project"
}
如果 LLM 提供参数:
{
"tool": "add_memory",
"arguments": {
"content": "记住这个",
"userId": "session-123", // ← 覆盖 DEFAULT_USER_ID
"agentId": "different-agent", // ← 覆盖 DEFAULT_AGENT_ID
"appId": "special-project" // ← 覆盖 DEFAULT_APP_ID
// sessionId 省略 // ← 没有回退,将是未定义的
}
}
结果:使用 session-123,different-agent 和 special-project
如果 LLM 省略参数:
{
"tool": "add_memory",
"arguments": {
"content": "记住这个"
// 所有 ID 省略 - 使用环境变量
}
}
结果:使用 john-doe,my-assistant 和 my-project
为了确保使用您的环境变量,请指示您的 LLM:
为了获得最佳效果,在您的系统提示中包含如下指令:
当创建记忆时,使用:
- agentId: "my-assistant"
- appId: "my-project"
- sessionId: "当前对话ID"
使用 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",
"ORG_ID": "your-org-id",
"PROJECT_ID": "your-project-id"
}
}
}
}
或者直接使用 node 运行:
git clone https://github.com/pinkpixel-dev/mem0-mcp
cd mem0-mcp
npm install
npm run build
{
"mcpServers": {
"mem0-mcp": {
"command": "node",
"args": [
"路径到/mem0-mcp/build/index.js"
],
"env": {
"OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
"DEFAULT_USER_ID": "user123"
}
}
}
}