Memory Palace MCP 服务器

使用说明内容(Markdown格式)

  1. 项目简介
  • Memory Palace 是一个基于 MCP 的后端服务器实现,核心职责是为对话式 AI 客户端提供持久的上下文和能力扩展:托管和管理资源(Memory/Alias)、注册并执行工具、定义与渲染 Prompt 模板/摘要等。服务器通过 JSON-RPC 风格的 MCP 接口与客户端通信,支持多种传输协议,具备会话管理、能力声明以及健康监控能力。
  1. 主要功能点
  • MCP 工具集(共 9 种工具):读取内存、创建内存、更新内存、删除内存、添加别名、读取/调用检索、及治理相关工具等,外部客户端可按需调用。
  • 系统与资源模型:以 URI 形式对内存、路径及别名进行命名与分组,支持跨域别名和版本快照,方便回滚与对比。
  • 提供多传输通道:stdio 传输(直接通过标准输入/输出通信,常用于 IDE/本地集成)、SSE 传输(通过 /sse 提供 Server-Sent Events 方式的传输),并且有 HTTP 边界的网关组件(SSE 的鉴权中间件)。
  • 会话与快照机制:全局写入管线、会话优先检索缓存、快照/日志与回滚能力,确保跨会话的一致性与审计能力。
  • Observability 与 运维:内置运行时状态、作业队列、日志和健康检查,提供仪表盘式监控与 API 回退路径(在某些情况下提供降级/兜底信息)。
  • 与数据库后端耦合:基于 SQLite 的异步访问,包含内存、路径、Gist、索引等多表数据结构,支持快照和回滚场景。
  1. 安装与运行方式
  • 本仓库包含 MCP 服务器实现以及辅助 API/前端组件。核心 MCP 入口通过 backend/mcp_server.py 提供;若需要 REST API 服务,请使用 backend/main.py 通过 FastAPI 提供 HTTP REST 路由;以及通过 backend/run_sse.py 提供 SSE 传输的服务器。
  • 本地快速启动方式(两种传输):
    • stdio 方式(适合 IDE/本地调试客户端): 进入 backend 目录后执行:python mcp_server.py 说明:服务器通过标准输入输出与 MCP 客户端约定的 JSON-RPC 请求进行通信。
    • SSE 传输方式(Web 風格客户端/网页端适用): 通过 SSE 传输与客户端通信,需要先启动 MCP 服务端(SSE),命令通常为:HOST=127.0.0.1 PORT=8010 python run_sse.py
  • 运行依赖与环境
    • Python 3.10 及以上版本
    • 后端数据库使用 SQLite(以 sqlite+aiosqlite URL 形式配置)
    • 如需使用 REST API 端点,请按文档在 backend 目录中启动 FastAPI 应用(uvicorn main:app --reload --host 0.0.0.0 --port 8000)
  1. 服务器配置(MCP 客户端连接配置 JSON 示例,说明性文本,不包含生产代码)
  • server_name:Memory Palace MCP 服务器
  • transports:定义支持的传输通道
    • stdio 传输
      • type: stdio
      • description: 直接通过标准输入输出与 MCP 客户端通信,适合本地开发和 IDE 集成
      • command: python
      • args: ["mcp_server.py"]
      • working_directory: backend
    • SSE 传输
      • type: sse
      • description: 通过 SSE 传输,适合浏览器/云端环境
      • command: python
      • args: ["run_sse.py"]
      • working_directory: backend
      • environment: { "HOST": "127.0.0.1", "PORT": "8010" }
  • 注释说明
    • MCP 客户端通过上述任意一个传输与 MCP 服务器建立连接,使用 MCP 提供的 9 种工具接口进行资源管理、检索和治理动作。
    • 若使用 HTTP/SSE,请确保正确配置 API Key 机制(如 MCP_API_KEY、MCP_API_KEY_ALLOW_INSECURE_LOCAL 等),以便对前端/云端客户端进行鉴权与保护。
    • 配置中的 server_name 与 transports 只作为客户端引导信息,实际运行时需按仓库提供的启动脚本执行。
  1. 基本使用方法
  • 启动后如何连接 MCP 服务器:
    • 通过 stdio 启动的服务器,LLM 客户端在运行时直接连接到服务器子进程的标准输入输出。
    • 通过 SSE 启动的服务器,LLM 客户端通过网络请求与服务器的 /sse 路径进行通信,需提供 API 密钥进行鉴权(如配置了 MCP_API_KEY)。
  • 典型请求路径(高层次描述,供理解使用):
    • 读取内存(read_memory):获取指定 URI 的记忆片段及其元信息;支持对内存片段进行分页、切片和祖先节点展开。
    • 创建/更新/删除内存(create_memory、update_memory、delete_memory):对核心记忆或子路径进行增删改,支持快照记录、回滚和语义/关键词层面的写保护。
    • 添加别名(add_alias):把一个内存映射到额外的 URI,提升可检索性。
    • 检索内存(search_memory):基于关键词、语义与混合检索,支持多层筛选和容错回退。
    • 系统视图与观测(system 指令、index_status、audit 等工具输出)用于诊断与运维。
  • 连接示例(简要描述,不提供具体代码块)
    • 使用 stdio 的客户端通常会在本地 IDE 或脚本中直接以 MCP 的规范调用这些工具。
    • 使用 SSE 的前端/云端客户端需要通过 HTTP 请求到 /sse 和 /messages(如文档所述的端点)并携带鉴权信息。
  • 服务器与客户端的对接要点
    • MCP 客户端应在启动时提供 server_name、传输类型、连接参数等信息,服务器按 MCP 协议解析请求并返回 JSON-RPC 响应。
    • 保障安全性:HTTP/SSE 模式需要 API Key,stdio 模式为本地集成时通常绕过鉴权(仅限本地使用场景)。
  1. 其他说明
  • Memory Palace 还提供了前端仪表盘、部署脚本与文档,便于快速验证 MCP 流程、调试写入/回滚、以及性能基线的测试。
  • 服务器在代码中已经实现了 MCP 的核心能力,并通过大量测试覆盖了多种使用场景,验证了工具接口、会话与快照、以及健康监控等核心能力。
  1. 注意事项
  • MCP 客户端与服务器之间的具体交互细节以实现时的 MCP 库版本为准,实际使用请依据仓库中的文档与示例进行实现与对接。
  • 如需在生产环境部署,请结合部署文档、SSE/HTTPS 配置、安全密钥管理和网络访问控制,确保数据与通信的安全性。

服务器信息