Oubli MCP 服务器:Claude Code 的 fractal 记忆系统后端
使用说明(Markdown 格式)
-
项目简介
- Oubli 是一个基于 MCP 的服务器实现,作为 Claude Code 的后台记忆系统后端。它管理“资源”(记忆条目)、提供可调用的工具用于对记忆的增删改查,以及支持核心记忆的持久化存储,整体目标是以标准化的 JSON-RPC 形式向 MCP 客户端提供上下文信息和功能。
-
主要功能点
- 资源管理与检索
- 提供 memory_save、memory_search、memory_get、memory_list、memory_stats、memory_update、memory_delete、memory_import 等工具,支持记忆的创建、查询、详情获取、聚合统计、更新、删除以及批量导入。
- 记忆合成与 Drill-Down
- memory_synthesis_needed、memory_prepare_synthesis、memory_synthesize、memory_dedupe 等工具,支持从 Level 0 的原始记忆向 Level 1+ 的合成记忆转换、去重与分组,提供 drill-down 链接回源记忆。
- 核心记忆与持久化
- core_memory_get、core_memory_save 等工具,用于获取与保存核心记忆,核心记忆以 markdown 文件形式持久化在全局数据目录中,确保会话开始时加载。
- 语义检索与嵌入向量
- 可选地集成 sentence-transformers 嵌入模型进行向量化搜索(generate_embedding、generate_query_embedding 等),并通过 LanceDB 的向量列实现混合检索(FTS + 向量检索),提升检索质量。
- MCP 服务器能力与暴露的工具
- 使用 FastMCP 构建的 MCP 服务器,工具通过装饰器暴露为 MCP 的 JSON-RPC 调用,客户端通过 JSON-RPC 访问这些工具(如 memory_save、memory_get、memory_list 等)。
- 本地与全局数据分离
- 全局数据目录 ~/.oubli/ 用于记忆数据的共享;局部项目目录仅用于 MCP 配置、Hooks、命令等,以实现跨项目的记忆持久化与一致性。
- 资源管理与检索
-
安装步骤
- 安装 oubli 包(推荐开发模式)
- 通过 Python 包安装或开发安装,将 oubli 安装到环境中。
- 启动 MCP 服务器
- 运行命令 python -m oubli.mcp_server 启动 MCP 服务器,该服务器会注册一个名为 oubli 的 MCP 服务组并暴露若干工具。
- 配置工作区以对接 MCP 客户端
- 在与你的 Claude Code 工程相关的项目中配置 MCP,以指向上述启动命令与工作目录,确保客户端可以通过 MCP 进行资源、工具和提示的访问。 4)(可选)初次使用前的准备
- 若需要嵌入向量检索,确保安装 sentence-transformers 及相关依赖;若无依赖,系统仍然能以全文检索作为回退。
- 安装 oubli 包(推荐开发模式)
-
服务器配置(MCP 客户端需要的最小启动信息,JSON 格式,说明在此不直接提供代码,只给出明确字段信息) 说明:下面配置用于 MCP 客户端在启动阶段连接并调用 MCU 服务器。字段含义如下:
- name: 服务器名称,取值 oubli,与服务器实现中的名称保持一致,便于在客户端进行标识。
- command: 启动命令,这里应为启动 MCP 服务器的可执行命令。
- args: 启动参数,按顺序提供,确保服务器能够以正确的参数启动。
- cwd: 工作目录,运行服务器的工作路径,通常为你当前的项目根目录。 配置示例(以文本形式提供,不含代码块): { "name": "oubli", "command": "python", "args": ["-m", "oubli.mcp_server"], "cwd": "<你的项目根目录路径>" } 参数注释说明:
- name:MCP 服务器的名称,应与实现中的 mcp.name 字段保持一致,便于在客户端识别和路由请求。
- command:用于启动服务器的外部命令,通常是 Python 解释器。
- args:启动命令的参数,分解为一个字符串数组,确保执行入口为 oubli.mcp_server。
- cwd:服务器的工作目录,通常设置为你的项目根目录,确保相对路径引用(如模块导入、配置文件路径)正确。
-
基本使用方法
- 客户端通过 MCP 接口调用:
- 保存记忆:memory_save({summary, level, full_text, topics, keywords, source, parent_ids})
- 查询记忆:memory_search({query, limit, min_level, prefer_higher_level})
- 获取明细:memory_get({memory_id})
- 列出摘要:memory_list({level, limit})
- 统计信息:memory_stats()
- 更新与删除:memory_update({memory_id, ...updates}), memory_delete({memory_id})
- 导入记忆:memory_import({memories, source})
- 合成与准备:memory_synthesis_needed(), memory_prepare_synthesis({level, similarity_threshold, min_group_size}), memory_synthesize({parent_ids, summary, topics, keywords, delete_parents})
- 核心记忆相关:
- core_memory_get(), core_memory_save(content)
- 使用前的注意事项
- 启动后请确保 Claude Code 重新加载会话以使 MCP 服务缓存生效
- 如需要向量检索,请确保嵌入模型和 LanceDB 配置正确,未启用嵌入时也可使用文本检索
- 通过命令行或脚本测试工具,确认服务器正在运行并对外暴露接口。
- 客户端通过 MCP 接口调用:
-
运行与调试提示
- 启动后若遇连接问题,检查 .mcp.json 注册信息是否正确、工作目录 cwd 是否正确、并确保服务器进程正在运行。
- 若内存数据量较大,测试时可先通过 memory_list、memory_search、memory_get 等逐步验证功能。
-
备注
- 本实现的 MCP 服务器核心在于提供稳定的 JSON-RPC 接口与清晰的工具集合,方便 MCP 客户端在 Claude Code 场景下进行高效的记忆管理、检索与合成工作流。嵌入向量检索为可选特性,请按实际环境决定是否开启。