使用说明

项目简介

ZenMemory MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为 AI 应用提供去中心化的记忆管理能力。它利用 '@modelcontextprotocol/typescript-sdk' 实现了完整的 MCP 服务器功能,并结合 Solana 区块链技术实现了链上记忆上下文存储。同时,通过 Express.js 提供了 HTTP API,方便客户端进行交互。

主要功能点

  • MCP 服务器: 基于 '@modelcontextprotocol/typescript-sdk' 完整实现了 MCP 协议的核心功能,包括资源和工具的注册与管理。
  • Solana 链上记忆: 利用 '@solana/agent-kit' 将记忆上下文存储在 Solana 区块链上,实现数据的去中心化和持久化。
  • HTTP API: 提供简洁的 HTTP API ('/memory', '/memory/:id', '/user/:userId/memories'),方便客户端进行记忆的创建、查询和管理。
  • 灵活存储: 支持内存存储,并可扩展到数据库或 IPFS 等持久化存储方案。
  • 内容验证工具: 内置 'validateMemory' 工具,用于验证记忆内容的有效性。
  • 用户记忆资源: 提供 'memories://user/{userId}' 资源,用于获取用户记忆列表(当前示例仅返回空数组,需自行实现数据库集成)。

安装步骤

  1. 克隆仓库
    git clone https://github.com/ZenMemoryAI/zenmemory-mcp-sol.git
    cd zenmemory-mcp-sol
  2. 安装依赖
    npm install

服务器配置

此 MCP 服务器通过 Node.js 运行,并使用 HTTP 协议提供服务。对于 MCP 客户端而言,虽然此服务器未直接暴露 JSON-RPC 端点,但其内部使用了 MCP SDK 进行了工具和资源的定义。若要将此服务器作为 MCP 后端集成到 MCP 客户端(例如 LLM 客户端),您需要配置客户端以 HTTP 方式与此服务器交互。

以下是一个理论上 MCP 客户端可能的配置信息 (JSON 格式,请注意,实际使用时,MCP 客户端可能需要适配此服务器提供的 HTTP API,而非直接的 MCP 协议交互):

{
  "serverName": "ZenMemoryMCP",
  "command": "node",
  "args": ["src/index.js"],
  "transport": "http",
  "httpEndpoint": "http://localhost:4000"
}

参数注释:

  • 'serverName': 服务器名称,这里设置为 "ZenMemoryMCP"。
  • 'command': 启动服务器的命令,由于是 Node.js 应用,所以使用 "node"。
  • 'args': 启动命令的参数,指向服务器入口文件 'src/index.js'。
  • 'transport': 理论上的传输协议,虽然实际是 HTTP API,但如果 MCP 客户端支持 HTTP 作为传输层,可以设置为 "http"。
  • 'httpEndpoint': HTTP API 的根 URL,默认为 'http://localhost:4000'。

请注意: 上述配置仅为 理论上的 MCP 客户端配置示例。由于此仓库实际提供的是基于 HTTP API 的服务,标准的 MCP 客户端可能无法直接通过 command/args 的方式与之交互。您可能需要开发一个适配层,或者直接在客户端通过 HTTP 请求调用此服务器的 API。

基本使用方法

  1. 启动服务器 在项目根目录下,设置必要的环境变量(例如 'SOLANA_RPC', 'AGENT_KEYPAIR_SECRET', 'ENABLE_SOLANA', 'ENABLE_MCP', 'PORT'),然后运行:

    npm start

    服务器默认运行在 4000 端口。

  2. 使用 HTTP API

    • 创建记忆 (POST /memory) 发送 POST 请求到 '/memory' 接口,请求体为 JSON 格式,包含 'userId' 和 'content' (必填),以及可选的 'emotion' 和 'tags'。

      {
        "userId": "user123",
        "content": "今天学习了 MCP 协议。",
        "emotion": "开心",
        "tags": ["学习", "MCP"]
      }

      服务器将返回状态码 201 和包含记忆信息的 JSON 响应。

    • 获取记忆 (GET /memory/:id) 发送 GET 请求到 '/memory/{memoryId}' 接口,例如 '/memory/your-memory-id',获取指定 ID 的记忆信息。

    • 获取用户记忆列表 (GET /user/:userId/memories) 发送 GET 请求到 '/user/{userId}/memories' 接口,例如 '/user/user123/memories',获取指定用户的所有记忆列表(包括链下和链上记忆,如果启用了 Solana)。

信息

分类

数据库与文件