Memento MCP 服务端

使用说明 Markdown 格式文档

  1. 项目概述
  • 该仓库实现了一个以 MCP(Model Context Protocol)为核心的后端服务器,面向 LLM 客户端提供上下文相关的资源、工具、以及提示(Prompts)的统一管理、执行和渲染能力。服务器通过 JSON-RPC 与客户端通信,能够托管并管理资源、注册与执行工具、以及渲染/提供 Prompt 模板。
  1. 主要功能点
  • MCP 核心能力
    • 资源(Resources):提供系统状态、主题、配置等实时数据的读取能力。
    • 工具(Tools):注册、调用与管理外部功能/服务,支持执行追踪与结果回传。
    • 提示模板(Prompts):对 LLM 的任务指令和工作流进行预定义与渲染,提升交互质量。
  • 三层检索与记忆系统
    • L1 Redis 索引(关键词、主题、类型的快速检索)
    • L2 PostgreSQL(关键词匹配/主题分组等元数据)
    • L3 pgvector 向量检索(语义检索,基于向量相似度)
    • Reciprocal Rank Fusion (RRF) 合并方案
  • Fragment-Based Memory( 파편记忆 )
    • 支持将知识切分成原子碎片(fact/decision/error/preference/procedure/relation),并以 TTL、热/暖/冷/永久等层级管理。
    • Embedding 与 链接自动化:异步嵌入生成、图谱关系的自动构建(GraphLinker、EmbeddingWorker 等组件)。
  • 会话与身份管理
    • Streamable HTTP 与 Legacy SSE 两种传输模式
    • OAuth 2.0 PKCE + 授权服务器元数据
    • API Key 基于记忆的隔离
  • 自动化与运维
    • MemoryEvaluator、MemoryConsolidator、AutoReflect、GraphLinker 等后台工作流
    • 分阶段的错误检测、冲突解决、_supersedence、linking 等逻辑
  • 安全与观测
    • 日志、审计、Prometheus 指标、指标暴露等
    • RBAC/RLS 基于 API Key 的记忆分离
  • 环境可选
    • Redis、PostgreSQL、OpenAI/Gemini 等外部服务的集成能力可按需开启
  1. 安装与部署(简要)
  • 运行环境:Node.js 20 及以上
  • 依赖数据库/缓存
    • PostgreSQL(需 pgvector 扩展)
    • Redis(可选,作为 L1 索引、会话追踪与队列)
    • 外部嵌入/向量服务(OpenAI Embedding、Gemini、本地/自定义实现等)
  • 启动
    • 直接执行 node server.js 即可在默认端口57332启动,若要自定义端口可设置 PORT 环境变量
    • 如需开启 OAuth、Redis、Embeddings、NLI 等功能,请按 README/INSTALL 指引配置相应环境变量
  • 验证
    • 通过 POST /mcp 进行 JSON-RPC 请求,或通过 GET /health /metrics 进行健康与监控查询
  1. 服务器配置(MCP 客户端使用配置示例,JSON 形式,含 server name、command、args 等)
  • 说明:MCP 客户端需要一个配置对象来描述如何启动并连接到 MCP 服务器。本示例给出一个准确的配置样式,方便客户端在不同环境下快速接入。 { "serverName": "memento-mcp", "command": "node", "args": [ "server.js" ], "description": "Memento MCP 服务端,用于向 MCP 客户端提供资源、工具、Prompts 的统一管理与上下文服务。", "env": { "PORT": "57332", "MEMENTO_ACCESS_KEY": "", // 如需启用 Bearer 认证,请设置该值 "SESSION_TTL_MINUTES": "60", "DATABASE_URL": "", // PostgreSQL 连接字符串,若未配置请按实际环境提供 "REDIS_ENABLED": "true" // 是否启用 Redis(用于 L1 索引、会话、缓存等) } } 说明:
  • serverName:服务器标识名称,便于在多服务场景中区分
  • command/args:启动 MCP 服务端的命令及参数
  • env:用于控制服务端行为的环境变量(如端口、认证、数据库连接、Redis 开关等)
  • 上述配置仅为示意,实际环境请按部署职责和安全策略进行调整。MCP 客户端不需要特定的代码实现细节,只需要知道如何启动并连接到服务器即可
  1. 基本使用方法
  • 启动服务器
    1. 安装依赖并设置数据库与缓存(PostgreSQL + Redis 可选)
    2. 设置必要的环境变量(如端口、数据库连接、认证密钥等)
    3. 运行 Node.js 服务端:node server.js
  • 与客户端的交互(简述)
    • 使用 JSON-RPC 通过 MCPStreamable HTTP(POST /mcp)或 Legacy SSE(/sse 与 /message)进行请求与回传
    • 常用请求包括 initialize、tools/list、tools/call、prompts/list、resources/list 等
    • 服务器会返回响应及相应的 JSON-RPC 结构,或通过 SSE 推送流式响应
  • 运行健康和观测
    • 访问 /health 获取健康状态
    • 访问 /metrics 以 Prometheus 格式读取监控指标
    • 通过 /authorize /token 路径完成 OAuth 2.0 授权与令牌获取等流程(如需要)
  • 参考与扩展
    • Embedding、NLI、Gemini CLI、AutoReflect、GraphLinker 等后台组件可按需开启或禁用,以适应不同的资源与预算
  1. 运行示例与调试要点
  • 参考 README 与 INSTALL 说明中的依赖、数据库结构、以及 migrations/脚本进行初始化
  • 若遇到网络/认证问题,请检查 MEMENTO_ACCESS_KEY、OPENAI_API_KEY、GEMINI_API_KEY 等环境变量是否正确设置
  • 如需开启 Redis 轮训、L1 索引或会话追踪,请确保 REDIS_ENABLED、REDIS_MASTER_NAME、REDIS_SENTINEL_ENABLED 等设置正确
  1. 备注
  • 本仓库实现了较完整的 MCP 服务端功能模块,覆盖资源、工具、Prompts、三层检索、记忆碎片管理、多模态嵌入、以及会话身份认证和夜间运维等场景,具备作为 MCP 服务器的基本能力与完整度。

服务器信息