MCP-Mem0: Long-Term Memory for AI Agents
模板实现 模型上下文协议(MCP) 服务器集成 Mem0 用于为AI代理提供持久内存功能。
将此作为自己构建MCP服务器的参考点,或者将此作为示例提供给AI编码助手,并告诉它遵循此示例进行结构和代码正确性!
概述
该项目演示了如何构建一个MCP服务器,使AI代理能够使用语义搜索来存储、检索和搜索记忆。它可以作为创建自己的MCP服务器的实用模板,只需使用Mem0和一个实际示例。
该实现遵循Anthropic为构建MCP服务器制定的最佳实践,允许与任何兼容MCP的客户端无缝集成。
特性
服务器提供三个基本的内存管理工具:
save_memory:使用语义索引将任何信息存储在长期记忆中get_all_memories:检索所有存储的记忆以获取全面的上下文search_memories:使用语义搜索查找相关记忆
先决条件
- Python 3.12+
- Supabase或任何PostgreSQL数据库(用于内存的矢量存储)
- 所选LLM提供商的API密钥(OpenAI、OpenRouter或Ollama)
- 如果将MCP服务器作为容器运行,则使用Docker(推荐)
安装
使用紫外线
- 如果没有,请安装uv:
pip install uv- 克隆此存储库:
git clone https://github.com/coleam00/mcp-mem0.git
cd mcp-mem0- 安装依赖项:
uv pip install -e .- 创建一个
.env文件基于.env.example:
cp .env.example .env- 在中配置环境变量
.env文件(请参阅配置部分)
使用Docker(推荐)
- 构建Docker镜像:
docker build -t mcp/mem0 --build-arg PORT=8050 .- 创建一个
.env文件基于.env.example并配置您的环境变量
配置
以下环境变量可以在您的 .env 文件:
| 变量 | 描述 | 示例 |
|---|---|---|
TRANSPORT | 传输协议(sse或stdio) | sse |
HOST | 使用SSE传输时要绑定的主机 | 0.0.0.0 |
PORT | 使用SSE传输时要监听的端口 | 8050 |
LLM_PROVIDER | LLM提供者(openai、openrouter或ollama) | openai |
LLM_BASE_URL | LLM API的基本URL | https://api.openai.com/v1 |
LLM_API_KEY | LLM提供程序的API密钥 | sk-... |
LLM_CHOICE | 要使用的LLM模型 | gpt-4o-mini |
EMBEDDING_MODEL_CHOICE | 嵌入要使用的模型 | text-embedding-3-small |
DATABASE_URL | PostgreSQL连接字符串 | postgresql://user:pass@host:port/db |
运行服务器
使用紫外线
SSE 运输
# Set TRANSPORT=sse in .env then:
uv run src/main.pyMCP服务器基本上将作为API端点运行,然后您可以使用下面显示的配置连接到该端点。
标准运输
使用stdio,MCP客户端可以自行启动MCP服务器,因此此时无需运行任何东西。
使用Docker
SSE 运输
docker run --env-file .env -p:8050:8050 mcp/mem0MCP服务器基本上将作为容器中的API端点运行,然后您可以使用下面显示的配置连接到该容器。
标准运输
使用stdio,MCP客户端可以自行启动MCP服务器容器,因此此时无需运行任何东西。
与MCP客户端集成
SSE配置
一旦服务器运行了SSE传输,您就可以使用以下配置连接到它:
{
"mcpServers": {
"mem0": {
"transport": "sse",
"url": "http://localhost:8050/sse"
}
}
}Windsurf用户须知:使用serverUrl而不是url在您的配置中: ``json { "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客户端的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()装饰器 - 创建自己的生命周期函数来添加自己的依赖项(客户端、数据库连接等)
- 修改
utils.pyMCP服务器所需的任何辅助函数的文件 - 请随时添加提示和资源
@mcp.resource()和@mcp.prompt()
