返回市场
mcp-内存0

mcp-内存0

作者:coleam00608 星标更新:2025-04-13

项目介绍

<h1 align="center">MCP-Mem0: 为AI代理提供长期记忆</h1> <p align="center"> <img src="public/Mem0AndMCP.png" alt="Mem0 和 MCP 集成" width="600"> </p>

这是一个实现 模型上下文协议 (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(推荐)

安装

使用 uv

  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.example 创建一个 .env 文件:

    cp .env.example .env
    
  5. .env 文件中配置您的环境变量(参见配置部分)

使用 Docker(推荐)

  1. 构建Docker镜像:

    docker build -t mcp/mem0 --build-arg PORT=8050 .
    
  2. 根据 .env.example 创建一个 .env 文件并配置您的环境变量

配置

您可以在 .env 文件中配置以下环境变量:

变量描述示例
TRANSPORT传输协议(sse 或 stdio)sse
HOST使用SSE传输时绑定的主机0.0.0.0
PORT使用SSE传输时监听的端口8050
LLM_PROVIDERLLM 提供商(openai、openrouter 或 ollama)openai
LLM_BASE_URLLLM API 的基础URLhttps://api.openai.com/v1
LLM_API_KEYLLM 提供商的API密钥sk-...
LLM_CHOICE要使用的LLM模型gpt-4o-mini
EMBEDDING_MODEL_CHOICE要使用的嵌入模型text-embedding-3-small
DATABASE_URLPostgreSQL 连接字符串postgresql://user:pass@host:port/db

运行服务器

使用 uv

SSE 传输

# 在 .env 中设置 TRANSPORT=sse 然后:
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

如果您使用的是默认值以外的端口,请确保更新端口。

Python 与 Stdio 配置

将此服务器添加到您的MCP配置中,适用于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"
      }
    }
  }
}

Docker 与 Stdio 配置

{
  "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()