关于 memocall
MemoCall 是供 Claude Code 使用的只读 MCP 服务,可跨项目检索过往对话并整理为精简 Markdown。它提供搜索、会话提纲和按轮次加载,便于定位长记录中的内容,且不会修改会话文件。
主要功能
- 01按项目目录列出会话
- 02按关键词搜索对话
- 03加载精简 Markdown 记录
- 04生成长会话的提示词提纲
- 05查找匹配轮次或加载指定范围
- 06精简模式省略工具输出
适用场景
- 01回忆先前项目中的工作
- 02查找讨论过某项设置的会话
- 03查看长对话中的指定轮次
- 04无需复制记录文件即可获取精简上下文
MCP 相关
MemoCall 通过 MCP 向 Claude Code 提供五种只读工具,读取本地会话记录,并返回可搜索、格式化的对话上下文。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cwd | string | 否 | 可选:仅表示项目路径包含此子字符串的会话。 |
| limit | integer | 否 | 要列出的会话数上限(默认值为 40)。 |
详细介绍
MemoCall
一个 MCP 服务,让 Claude Code 按需回忆你过去对话的上下文——无论来自哪个项目。
Claude Code 可以恢复会话,但要把另一场对话的上下文带入当前会话却很麻烦——要么复制粘贴导出内容,要么手动翻找原始转录文件,而且恢复功能也只能看到当前目录。MemoCall 将这一切变成一句简单的提问:“我之前在做什么?”或“加载我们设置 X 时的会话”,然后它会将转录内容整理成简洁的 Markdown——即使来自完全不同的项目。
它是只读的。Claude Code 已经会将每个会话记录到 ~/.claude/projects/<project>/<id>.jsonl;这个服务只读取这些文件,去除冗余内容、精简工具调用,并返回易读的转录内容。它不会写入文件、挂载钩子,也不会触碰正在进行的会话。
你将获得
安装后,五个工具可在每个会话中使用。Claude 会根据请求选择合适的工具:
| 工具 | 功能 |
|---|---|
list_sessions | 查看所有项目中的近期对话,按目录分组。“我之前在做什么?” |
search_sessions | 按关键词查找过去的对话(匹配标题、首条消息和路径)。 |
load_session | 将一场对话加载为简洁的 Markdown——通过 id 或 query。还可通过 turns 指定轮次范围。 |
session_outline | 生成一场对话的轻量级大纲:列出你的提示词并编号。非常适合超长会话。 |
search_in_session | 仅返回某场对话中与关键词匹配的轮次。 |
你不需要直接调用这些工具——像平常一样交流,Claude 会调用它们:
You: what sessions have i worked on recently?
You: load the one where we set up the license invitation system
You: which session did we debug the keychain SIGKILL thing in?
转录内容的呈现方式
原始转录是冗长的事件日志(单个大文件就达到 11 MB)。memocall 会像 Conductor 一样,将每轮对话精简为核心内容:
**You:** right now i need to set up a system to invite prospects...
↳ 12 tool calls (Bash ×5, Read ×4, Edit ×3)
**Claude:** I've set up the invitation flow. Key decisions: ...
工具调用的输出会被省略(这是节省令牌的关键,也有助于保护隐私——详见下文)。被放弃或编辑过的消息分支会被移除,让你看到对话实际进行的过程。令牌预算会通过从中间截断,确保即使是 11 MB 的会话也远低于 Claude Code 的 MCP 输出上限。
浏览大型会话
单个响应无法容纳 1,000 轮的会话,因此对于大型会话,不要一次性全部输出,而是逐步浏览:
session_outline→ 列出所有提示词并编号,生成一份简短的大纲(任何会话都能容纳)。search_in_session→ 直接跳转到与某个主题相关的轮次,或者使用turns: "300-340"调用load_session,提取指定范围(轮次编号来自大纲)。
这样,你就能始终访问超长对话的中间部分——单独使用 load_session 会从中间截断内容,但借助大纲和范围/搜索工具,Claude 可以按需访问任意部分。
安装
需要 Claude Code CLI(以及 Node 18+)。只需一行命令——npx 会获取并运行已发布的包:
claude mcp add --scope user memocall -- npx -y memocall
--scope user 会让它在所有目录的每个会话中都可用。重启 Claude Code(或开启新会话),然后让它列出你的会话。使用 claude mcp list 验证——你应该会看到 memocall: … ✔ Connected。
或者从源代码运行(用于开发)
git clone https://github.com/baodq06/memocall.git
cd memocall && npm install && npm run build
claude mcp add --scope user memocall -- node "$(pwd)/dist/index.js"
隐私与安全
- 仅在本地运行。 无网络、无身份验证、无遥测。它只会读取
~/.claude/projects/下的文件,不会读取其他内容。 - 简洁模式会省略工具输出,而秘密信息(令牌、密钥、环境变量)通常就在这些输出中——因此,默认输出比原始转录安全得多。
format: "full"会包含简短的工具输入,可能会显示敏感字符串。请谨慎使用。- 转录中仍可能包含秘密信息;处理已加载的上下文时,应像对待原始对话一样谨慎。
局限性
- 回忆尽力而为:Claude Code 会在
cleanupPeriodDays后删除转录记录(默认 30)。 - 分叉会话可能仅包含分叉后的对话轮次。
- 转录格式没有文档说明,且可能随 Claude Code 版本变化;所有格式相关知识都集中在
src/jsonl.ts中,因此如有变化,只需修改一个文件。
开发
npm run build # compile TypeScript -> dist/
npm test # unit suite (node:test) on synthetic fixtures
npm run smoke # optional: checks all YOUR real sessions stay under the output cap
node dist/parser.js <file.jsonl> [--full|--outline] [--turns 10-20] [--search "kw"] [--max N] [--think] # test the parser
node test-client.mjs # drive the server over stdio like Claude Code does
npm run inspect # open the MCP Inspector UI
目录结构:
src/jsonl.ts— 转录格式相关的所有知识(辅助函数、排序、分类)。src/parser.ts— JSONL → 精简 Markdown(核心转换)。src/locator.ts— 会话枚举 + 缓存的元数据索引。src/index.ts— 负责连接这三个工具的 MCP 服务。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。