返回市场
内存管理器

内存管理器

作者:sdimitrov49 星标更新:2025-03-16

项目介绍

MCP内存服务器

此服务器使用mem0原则实现AI助手的长期记忆功能,由PostgreSQL和pgvector提供支持,以实现高效的向量相似性搜索。

特点

  • 使用PostgreSQL和pgvector进行向量相似性搜索
  • 自动生成嵌入式内容,使用BERT
  • 支持RESTful API进行记忆操作
  • 具有语义搜索能力
  • 支持不同类型的记忆(学习、经验等)
  • 基于标签的记忆检索
  • 记忆的信心评分
  • 支持服务器发送事件(SSE)实现实时更新
  • 兼容Cursor MCP协议

预备条件

  1. 安装了pgvector扩展的PostgreSQL 14+:
# 在您的PostgreSQL实例中:
CREATE EXTENSION vector;
  1. Node.js 16+

设置

  1. 安装依赖项:
npm install
  1. 配置环境变量: 复制.env.sample.env并调整值:
cp .env.sample .env

示例.env配置:

# 使用用户名/密码
DATABASE_URL="postgresql://username:password@localhost:5432/mcp_memory"
PORT=3333

# 使用同级认证的本地开发
DATABASE_URL="postgresql:///mcp_memory"
PORT=3333
  1. 初始化数据库:
npm run prisma:migrate
  1. 启动服务器:
npm start

对于带有自动重载的开发:

npm run dev

与Cursor一起使用

在Cursor中添加MCP服务器

要将内存服务器添加到Cursor中,您需要修改位于~/.cursor/mcp.json的MCP配置文件。在mcpServers对象中添加以下配置:

{
  "mcpServers": {
    "memory": {
      "command": "node",
      "args": [
        "/path/to/your/memory/src/server.js"
      ]
    }
  }
}

用实际的内存服务器安装路径替换/path/to/your/memory

例如,如果您将仓库克隆到了/Users/username/workspace/memory,则配置如下:

{
  "mcpServers": {
    "memory": {
      "command": "node",
      "args": [
        "/Users/username/workspace/memory/src/server.js"
      ]
    }
  }
}

当需要时,Cursor会自动启动该服务器。您可以通过以下步骤验证其是否正常工作:

  1. 打开Cursor
  2. 当Cursor启动时,内存服务器将自动启动
  3. 您可以通过访问http://localhost:3333/mcp/v1/health来检查服务器状态

可用的MCP端点

SSE连接

  • 端点GET /mcp/v1/sse
  • 查询参数
    • subscribe:订阅的事件列表(可选)
  • 事件
    • connected:初始连接时发送
    • memory.created:创建新记忆时发送
    • memory.updated:更新现有记忆时发送

记忆操作

  1. 创建记忆
POST /mcp/v1/memory
Content-Type: application/json

{
  "type": "learning",
  "content": {
    "topic": "Express.js",
    "details": "Express.js是Node.js的一个Web应用程序框架"
  },
  "source": "文档",
  "tags": ["nodejs", "web-framework"],
  "confidence": 0.95
}
  1. 搜索记忆
GET /mcp/v1/memory/search?query=web+frameworks&type=learning&tags=nodejs
  1. 列出记忆
GET /mcp/v1/memory?type=learning&tags=nodejs,web-framework

健康检查

GET /mcp/v1/health

响应格式

所有API响应遵循标准的MCP格式:

{
  "status": "success",
  "data": {
    // 响应数据
  }
}

或错误情况下的格式:

{
  "status": "error",
  "error": "错误消息"
}

记忆模式

  • id:唯一标识符
  • type:记忆类型(学习、经验等)
  • content:实际记忆内容(JSON)
  • source:记忆来源
  • embedding:内容的向量表示(384维)
  • tags:相关标签数组
  • confidence:信心评分(0-1)
  • createdAt:记忆创建时间
  • updatedAt:记忆最后更新时间