关于 MCP-Mem0: Long-Term Memory for AI Agents
MCP-Mem0 是一个基于 Mem0 的 MCP 服务模板,为 AI Agent 提供持久化的长期记忆能力。项目使用 Python 实现,支持语义搜索,适合作为构建自定义 MCP 服务的参考。它既可直接部署使用,也可作为 AI 编码助手的示例代码。
主要功能
- 01保存、获取全部与语义搜索记忆三类工具
- 02基于 Mem0 与 PostgreSQL 或 Supabase 存储向量
- 03支持 SSE 与 stdio 两种传输方式
- 04提供 uv 与 Docker 两种运行方式
- 05可作为 Python 构建自定义 MCP 服务的模板
适用场景
- 01为 AI Agent 提供跨会话的长期记忆
- 02作为 Python MCP 服务的开发起点
- 03让 AI 编码助手参照该结构生成新的 MCP 服务
MCP 相关
该服务向 MCP 客户端暴露 save_memory、get_all_memories 与 search_memories 三个工具,客户端可通过 SSE 或 stdio 连接。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP-Mem0:AI Agent 的长期记忆
这是一个将 Model Context Protocol (MCP) 服务与 Mem0 集成的模板实现,为 AI Agent 提供持久记忆能力。
你可以将此项目作为参考,自行构建 MCP 服务;也可以将其作为示例提供给 AI 编码助手,并告诉它遵循此示例的结构和代码规范!
概述
本项目演示了如何构建一个 MCP 服务,使 AI Agent 能够使用语义搜索来存储、检索和搜索记忆。它是创建你自己的 MCP 服务的实用模板,仅需使用 Mem0,并提供了一个实用示例。
此实现遵循 Anthropic 制定的 MCP 服务构建最佳实践,可与任何兼容 MCP 的客户端无缝集成。
功能
该服务提供三种基本的记忆管理工具:
save_memory:将任意信息存储到长期记忆中,并进行语义索引get_all_memories:检索所有已存储的记忆,获取全面的上下文search_memories:使用语义搜索查找相关记忆
前置条件
- Python 3.12+
- Supabase 或任意 PostgreSQL 数据库(用于记忆的向量存储)
- 你所选大模型提供商(OpenAI、OpenRouter 或 Ollama)的 API 密钥
- 如果将 MCP 服务作为容器运行,则需要 Docker(推荐)
安装
使用 uv
-
如果尚未安装 uv,请先安装:
pip install uv -
克隆此仓库:
git clone https://github.com/coleam00/mcp-mem0.git cd mcp-mem0 -
安装依赖项:
uv pip install -e . -
根据
.env.example创建.env文件:cp .env.example .env -
在
.env文件中配置环境变量(参见“配置”部分)
使用 Docker(推荐)
-
构建 Docker 镜像:
docker build -t mcp/mem0 --build-arg PORT=8050 . -
根据
.env.example创建.env文件并配置环境变量
配置
可以在 .env 文件中配置以下环境变量:
| 变量 | 描述 | 示例 |
|---|---|---|
TRANSPORT | 传输协议(sse 或 stdio) | sse |
HOST | 使用 SSE 传输时要绑定的主机 | 0.0.0.0 |
PORT | 使用 SSE 传输时要监听的端口 | 8050 |
LLM_PROVIDER | 大模型提供商(openai、openrouter 或 ollama) | openai |
LLM_BASE_URL | 大模型 API 的基础 URL | https://api.openai.com/v1 |
LLM_API_KEY | 大模型提供商的 API 密钥 | sk-... |
LLM_CHOICE | 要使用的大模型 | gpt-4o-mini |
EMBEDDING_MODEL_CHOICE | 要使用的嵌入模型 | text-embedding-3-small |
DATABASE_URL | PostgreSQL 连接字符串 | postgresql://user:pass@host:port/db |
运行服务
使用 uv
SSE 传输
# Set TRANSPORT=sse in .env then:
uv run src/main.py
MCP 服务实际上会作为 API 端点运行,你可以使用下方所示的配置连接到它。
Stdio 传输
使用 stdio 时,MCP 客户端本身可以启动 MCP 服务,因此此时无需运行任何内容。
使用 Docker
SSE 传输
docker run --env-file .env -p:8050:8050 mcp/mem0
MCP 服务实际上会在容器内作为 API 端点运行,你可以使用下方所示的配置连接到它。
Stdio 传输
使用 stdio 时,MCP 客户端本身可以启动 MCP 服务容器,因此此时无需运行任何内容。
与 MCP 客户端集成
SSE 配置
使用 SSE 传输运行服务后,可以使用以下配置连接到它:
{
"mcpServers": {
"mem0": {
"transport": "sse",
"url": "http://localhost:8050/sse"
}
}
}
Windsurf 用户须知:请在配置中使用
serverUrl,而不是url:{ "mcpServers": { "mem0": { "transport": "sse", "serverUrl": "http://localhost:8050/sse" } } }
n8n 用户须知:请使用 host.docker.internal,而不是 localhost,因为 n8n 需要访问自身容器外部的主机:
因此,MCP 节点中的完整 URL 应为:http://host.docker.internal:8050/sse
如果使用的端口不是默认的 8050,请务必更新端口。
使用 Stdio 的 Python 配置
将此服务添加到 Claude Desktop、Windsurf 或其他 MCP 客户端的配置中:
{
"mcpServers": {
"mem0": {
"command": "your/path/to/mcp-mem0/.venv/Scripts/python.exe",
"args": ["your/path/to/mcp-mem0/src/main.py"],
"env": {
"TRANSPORT": "stdio",
"LLM_PROVIDER": "openai",
"LLM_BASE_URL": "https://api.openai.com/v1",
"LLM_API_KEY": "YOUR-API-KEY",
"LLM_CHOICE": "gpt-4o-mini",
"EMBEDDING_MODEL_CHOICE": "text-embedding-3-small",
"DATABASE_URL": "YOUR-DATABASE-URL"
}
}
}
}
使用 Stdio 的 Docker 配置
{
"mcpServers": {
"mem0": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "TRANSPORT",
"-e", "LLM_PROVIDER",
"-e", "LLM_BASE_URL",
"-e", "LLM_API_KEY",
"-e", "LLM_CHOICE",
"-e", "EMBEDDING_MODEL_CHOICE",
"-e", "DATABASE_URL",
"mcp/mem0"],
"env": {
"TRANSPORT": "stdio",
"LLM_PROVIDER": "openai",
"LLM_BASE_URL": "https://api.openai.com/v1",
"LLM_API_KEY": "YOUR-API-KEY",
"LLM_CHOICE": "gpt-4o-mini",
"EMBEDDING_MODEL_CHOICE": "text-embedding-3-small",
"DATABASE_URL": "YOUR-DATABASE-URL"
}
}
}
}
构建自己的服务
此模板为构建更复杂的 MCP 服务提供了基础。要构建自己的服务:
- 使用
@mcp.tool()装饰器创建方法,添加自己的工具 - 创建自己的生命周期函数,以添加所需的依赖项(客户端、数据库连接等)
- 根据 MCP 服务的需要,修改
utils.py文件以添加辅助函数 - 也可以使用
@mcp.resource()和@mcp.prompt()添加提示词和资源
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。