AI代理长期记忆服务

一个集成了Mem0的MCP服务器模板,为AI代理提供持久化记忆功能,支持记忆的存储、检索和语义搜索。

  • by coleam00
  • Python
  • 本地部署
  • 687 星标
  • 更新于
在 GitHub 查看 coleam00/mcp-mem0

使用说明

MCP-Mem0: Long-Term Memory for AI Agents

模板实现 模型上下文协议(MCP) 服务器集成 Mem0 用于为AI代理提供持久内存功能。

将此作为自己构建MCP服务器的参考点,或者将此作为示例提供给AI编码助手,并告诉它遵循此示例进行结构和代码正确性!

概述

该项目演示了如何构建一个MCP服务器,使AI代理能够使用语义搜索来存储、检索和搜索记忆。它可以作为创建自己的MCP服务器的实用模板,只需使用Mem0和一个实际示例。

该实现遵循Anthropic为构建MCP服务器制定的最佳实践,允许与任何兼容MCP的客户端无缝集成。

特性

服务器提供三个基本的内存管理工具:

  1. save_memory:使用语义索引将任何信息存储在长期记忆中
  2. get_all_memories:检索所有存储的记忆以获取全面的上下文
  3. search_memories:使用语义搜索查找相关记忆

先决条件

  • Python 3.12+
  • Supabase或任何PostgreSQL数据库(用于内存的矢量存储)
  • 所选LLM提供商的API密钥(OpenAI、OpenRouter或Ollama)
  • 如果将MCP服务器作为容器运行,则使用Docker(推荐)

安装

使用紫外线

  1. 如果没有,请安装uv:

    pip install uv
    
  2. 克隆此存储库:

    git clone https://github.com/coleam00/mcp-mem0.git
    cd mcp-mem0
    
  3. 安装依赖项:

    uv pip install -e .
    
  4. 创建一个 .env 文件基于 .env.example:

    cp .env.example .env
    
  5. 在中配置环境变量 .env 文件(请参阅配置部分)

使用Docker(推荐)

  1. 构建Docker镜像:

    docker build -t mcp/mem0 --build-arg PORT=8050 .
    
  2. 创建一个 .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.py

MCP服务器基本上将作为API端点运行,然后您可以使用下面显示的配置连接到该端点。

标准运输

使用stdio,MCP客户端可以自行启动MCP服务器,因此此时无需运行任何东西。

使用Docker

SSE 运输

docker run --env-file .env -p:8050:8050 mcp/mem0

MCP服务器基本上将作为容器中的API端点运行,然后您可以使用下面显示的配置连接到该容器。

标准运输

使用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客户端的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服务器提供了基础。建立自己的:

  1. 通过使用创建方法来添加自己的工具 @mcp.tool() 装饰器
  2. 创建自己的生命周期函数来添加自己的依赖项(客户端、数据库连接等)
  3. 修改 utils.py MCP服务器所需的任何辅助函数的文件
  4. 请随时添加提示和资源 @mcp.resource() 和 @mcp.prompt()