Mem0 MCP服务器

一个基于Node.js的Mem0 MCP(模型上下文协议)服务器实现,提供HTTP-only操作,用于简化的部署和集成。

  • by Sonjuane
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sonjuane/mem0-mcp-server

使用说明

Mem0 MCP服务器-Node.js(仅限HTTP)

Mem0 MCP(模型上下文协议)服务器的Node.js实现 仅HTTP操作 以简化部署和集成。

这是基于此回购 coleam00/mcp-mem0.git

特性

  • 仅HTTP操作:仅通过HTTP API运行的简化服务器
  • 工作空间集成:自动将内存存储在活动项目目录中
  • RESTful API:易于与web应用程序、VSCode扩展和MCP客户端集成
  • 本地文件存储:将记忆存储在 .Mem0-Files 工作区根目录中的目录
  • MCP工具:提供 save_memory, get_all_memories,以及 search_memories 工具
  • 认证:基于令牌的身份验证,用于安全的API访问
  • 速率限制:防止API滥用的内置保护
  • 可配置存储:插件架构支持多个存储后端
  • ESM模块:使用ES模块的现代Node.js实现
  • Docker支持:容器化部署选项

快速开始

  1. 安装依赖项:

    npm install
    
  2. 配置环境:

    cp .env.example .env
    # Edit .env with your configuration
    
  3. 运行服务器:

    # Start the HTTP server (default port 8484)
    npm start
    
    # Start with specific workspace (recommended)
    npm run start:workspace /path/to/your/project
    
    # Start in development mode with auto-restart
    npm run dev
    
  4. 验证它是否正常工作:

    # Check server status
    curl http://localhost:8484/
    
    # Or open in browser: http://localhost:8484
    
  5. 使用HTTP API:

    # Save a memory
    curl -X POST http://localhost:8484/api/memory/save \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer 550EA5B7-4C7B-4B17-9BF7-5A6B6D232FA2" \
      -d '{"text": "Your memory here", "userId": "vscode-user"}'
    
    # Search memories
    curl "http://localhost:8484/api/memory/search?query=memory&userId=vscode-user" \
      -H "Authorization: Bearer 550EA5B7-4C7B-4B17-9BF7-5A6B6D232FA2"
    

配置

服务器是通过环境变量配置的。复制 .env.example 向 .env 并配置:

基本配置

  • HOST:要绑定的主机(默认值: 0.0.0.0)
  • PORT:要侦听的端口(默认值: 8484)
  • STORAGE_PROVIDER:存储后端(local 或 postgresql)-目前仅 local 已实施
  • LOCAL_STORAGE_DIR:本地存储目录(默认: .Mem0-Files)
  • PROJECT_DIR:存储内存的工作区目录(自动检测或显式设置)

HTTP服务器配置(始终启用)

  • HTTP_SERVER_ENABLED:启用HTTP API服务器(true 或 false,默认值: false)
  • HTTP_SERVER_PORT:HTTP服务器端口(默认值: 3000)
  • HTTP_SERVER_HOST:HTTP服务器主机(默认值: 0.0.0.0)
  • API_TOKEN:HTTP API的身份验证令牌(启用HTTP服务器时需要)
  • CORS_ORIGINS:允许的CORS源(默认值: http://localhost:*,https://localhost:*)
  • RATE_LIMIT_WINDOW_MS:速率限制窗口(毫秒)(默认值: 900000 -15分钟)
  • RATE_LIMIT_MAX_REQUESTS:每个窗口的最大请求数(默认值: 100)

LLM配置(用于未来的Mem0集成)

  • LLM_PROVIDER:法学硕士提供者(openai, openrouter,或 ollama)
  • LLM_API_KEY:LLM提供商的API密钥
  • LLM_CHOICE:要使用的模型(例如。, gpt-4o-mini)
  • EMBEDDING_MODEL_CHOICE:嵌入模型(例如。, text-embedding-3-small)

MCP客户端配置

带有Roo代码扩展名的VS代码

要将此MCP服务器与VS Code和Roo Code扩展一起使用:

设置步骤:

  1. 安装Roo Code扩展 来自市场的VS Code
  2. 生成配置 通过运行: npm run config (这将显示确切的路径)
  3. 打开VS代码设置 (Cmd/Ctrl+,)
  4. 搜索“roo” 查找Roo代码设置
  5. 查找“MCP服务器”配置 在Roo Code设置中
  6. 复制并粘贴生成的配置 从步骤2

配置示例:

选项1:标准传输(直接过程通信) 将此配置添加到Roo Code MCP服务器设置中:

{
  "mem0-nodejs": {
    "command": "node",
    "args": ["/absolute/path/to/mem0_mcp_server_nodejs/src/main.js"],
    "env": {
      "TRANSPORT": "stdio",
      "STORAGE_PROVIDER": "local",
      "LOCAL_STORAGE_DIR": ".Mem0-Files",
      "DEFAULT_USER_ID": "vscode-user",
      "DEBUG": "false"
    }
  }
}

选项2:SSE传输(基于HTTP的通信) 首先,使用SSE传输启动服务器:

TRANSPORT=sse HTTP_SERVER_ENABLED=true npm start

然后将此配置添加到Roo Code MCP服务器设置中:

{
  "mcpServers": {
    "mem0-sse": {
      "transport": "sse",
      "url": "http://localhost:8484/sse",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN_HERE"
      },
      "description": "Mem0 MCP Server via SSE transport"
    }
  }
}

VS代码中的用法:

配置后,您可以使用Roo Code中的内存工具:

  • 保存记忆:使用 save_memory 用于存储有关项目、编码模式或决策的信息的工具
  • 找回记忆:使用 get_all_memories 查看所有存储的信息
  • 搜索记忆:使用 search_memories 查找具体信息

示例用法:

@mem0-nodejs save_memory "This project uses ESM modules and stores data in .Mem0-Files directory"
@mem0-nodejs search_memories "ESM modules"
@mem0-nodejs get_all_memories

重要提示:

  • 替换 /absolute/path/to/mem0_mcp_server_nodejs/ 与项目的实际绝对路径
  • 服务器将创建一个 .Mem0-Files 项目根目录中的目录
  • 每个VS Code工作区都可以有自己的内存存储
  • 记忆被隔离 DEFAULT_USER_ID 设置
  • 您可以使用以下命令找到确切的路径 pwd 项目目录中的命令

带有HTTP API的VS代码(推荐)

为了使用VS Code和Roo Code进行最简单的设置,请使用HTTP API,它消除了对绝对文件路径的需要:

📖 完整的VS代码设置指南

快速设置:

  1. 启动HTTP服务器:

    API_TOKEN=your-secure-token HTTP_SERVER_ENABLED=true npm start
    
  2. 配置Roo代码 在VS代码设置中:

    {
      "mem0-http": {
        "transport": "sse",
        "url": "http://localhost:3000",
        "headers": {
          "Authorization": "Bearer your-secure-token"
        }
      }
    }
    
  3. 在VS代码中使用:

    @mem0-http save_memory "This project uses React with TypeScript"
    @mem0-http search_memories "React"
    

📚 文档:

克劳德桌面(stdio)

将此添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "mem0-nodejs": {
      "command": "node",
      "args": ["path/to/mem0_mcp_server_nodejs/src/main.js"],
      "env": {
        "TRANSPORT": "stdio",
        "STORAGE_PROVIDER": "local",
        "LOCAL_STORAGE_DIR": ".Mem0-Files"
      }
    }
  }
}

可用工具

save_memory

将信息存储在长期记忆中。

参数:

  • text (必填):要存储的内容
  • userId (可选):用户标识符(默认为配置的用户)

获取所有记忆

检索用户存储的所有内存。

参数:

  • userId (可选):用户标识符
  • limit (可选):要返回的最大内存数(默认值:50)

搜索_存储

使用基于文本的搜索来搜索记忆。

参数:

  • query (必填):搜索查询
  • userId (可选):用户标识符
  • limit (可选):返回的最大结果数(默认值:3)

本地存储结构

本地存储提供程序创建以下结构:

.Mem0-Files/
├── users/
│   └── [userId]/
│       ├── [memoryId1].json
│       ├── [memoryId2].json
│       └── ...
└── index/
    └── [userId].json

每个内存文件包含:

{
  "id": "uuid",
  "userId": "user",
  "memory": "memory content",
  "metadata": {
    "originalText": "original input",
    "createdAt": "2024-01-01T00:00:00.000Z",
    "updatedAt": "2024-01-01T00:00:00.000Z"
  }
}

发展

以开发模式运行

npm run dev

测试

npm test

代码检查

npm run lint

码头工人

构建图像

npm run docker:build

运行容器

npm run docker:run

项目状态

这是一个早期实施,状态如下:

✅ 实现

  • [x] 基本MCP服务器设置
  • [x] 本地文件存储提供商
  • [x] 核心MCP工具(保存、获取、搜索)
  • [x] 项目结构和配置
  • [x] 基于文本的基本搜索
  • [x] 使用Express.js的HTTP API服务器
  • [x] 基于令牌的身份验证
  • [x] 速率限制和安全
  • [x] 双传输支持(stdio+HTTP)
  • [x] 全面的API文件
  • [x] 通过HTTP集成VS代码

🚧 进行中

  • []增强Mem0集成
  • []嵌入语义搜索
  • []PostgreSQL存储提供程序
  • []SSE传输支持(HTTP服务器就绪,SSE端点待定)

📋 计划的

  • []用于内存处理的完全LLM集成
  • []高级搜索算法
  • []内存分析和管理
  • []基于Web的内存浏览器

开发说明

有关开发文档、实施细节和项目规划文件,请参阅 Dev-Notes/ 文件夹。

贡献

该项目正在积极开发中。欢迎投稿!

许可证

MIT许可证