Memento MCP 服务端
使用说明 Markdown 格式文档
- 项目概述
- 该仓库实现了一个以 MCP(Model Context Protocol)为核心的后端服务器,面向 LLM 客户端提供上下文相关的资源、工具、以及提示(Prompts)的统一管理、执行和渲染能力。服务器通过 JSON-RPC 与客户端通信,能够托管并管理资源、注册与执行工具、以及渲染/提供 Prompt 模板。
- 主要功能点
- 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 等外部服务的集成能力可按需开启
- 安装与部署(简要)
- 运行环境: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 进行健康与监控查询
- 服务器配置(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 客户端不需要特定的代码实现细节,只需要知道如何启动并连接到服务器即可
- 基本使用方法
- 启动服务器
- 安装依赖并设置数据库与缓存(PostgreSQL + Redis 可选)
- 设置必要的环境变量(如端口、数据库连接、认证密钥等)
- 运行 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 等后台组件可按需开启或禁用,以适应不同的资源与预算
- 运行示例与调试要点
- 参考 README 与 INSTALL 说明中的依赖、数据库结构、以及 migrations/脚本进行初始化
- 若遇到网络/认证问题,请检查 MEMENTO_ACCESS_KEY、OPENAI_API_KEY、GEMINI_API_KEY 等环境变量是否正确设置
- 如需开启 Redis 轮训、L1 索引或会话追踪,请确保 REDIS_ENABLED、REDIS_MASTER_NAME、REDIS_SENTINEL_ENABLED 等设置正确
- 备注
- 本仓库实现了较完整的 MCP 服务端功能模块,覆盖资源、工具、Prompts、三层检索、记忆碎片管理、多模态嵌入、以及会话身份认证和夜间运维等场景,具备作为 MCP 服务器的基本能力与完整度。