apocrypha
Apocrypha
Apocrypha 是 Jensen 的单用户、仅追加的远程 MCP 记忆,用于存储助手判断不应放入其常规内置记忆中的有用个人上下文。Claude 和 ChatGPT 共享同一个标准 Streamable HTTP 端点 /mcp。它为 Claude 等客户端支持基于标准的 OAuth 2.1,同时为可以直接设置授权头的客户端保留独立的静态 bearer 令牌。
范围:仅限例外记忆
Apocrypha 遵循 OptMem 的通用记忆和压缩语义,但有一个专门化:它不是第二个通用记忆存储。一个助手只应在下述情况下写到这里:个人上下文值得记住,但助手判断该上下文不应保存到自己的个人记忆库中——例如住房、收入、资金储备、社会经济状况,或相关工作流程上下文。有资格进入普通内置记忆的事实属于其所在的系统,不应同时复制到 Apocrypha。这种隔离避免了记忆跨系统时的重复或冲突。
LOG.txt 是权威记录。它使用 OptMem 的 320 字节定长记录(每条记录以换行符结尾存一条记忆),而 TREE/<size> 使用其 288 字节定长二进制合并记录。更正体现为之后的日志条目;原始记忆永不编辑或删除。Google Drive 只是一个手机可读的镜像。
Related MCP server: JauMemory MCP Server
工具
apocrypha_wake: 强制性的常驻上下文读取,按客户端响应限制分页;只要有压缩任务未完成就拒绝请求。apocrypha_note: 只记录其他情况下不被允许记入的持久上下文,折叠空白字符,追加一条带日期的记忆,镜像到 Drive,并返回下一个新可执行的压缩任务。apocrypha_sleep: 取得或处理下一个合并树压缩任务。apocrypha_recall: 对完整原始日志进行不区分大小写的正则表达式搜索。apocrypha_forget: 截断某个错误摘要及其上方的所有摘要,但不会触碰日志。
Wake 在日志仍然适配其 96 行渲染预算时会刻意返回每一条原始记录。一旦日志超出该预算,它就用已存储的树摘要铺满当前历史,越向过去越概括,越靠近现在越精细。一次 note 只返回一个最新可执行的压缩;每次 sleep 响应返回这个级联中的下一项。在 wake 之前把这个级联全部排空是有意为之,因为 wake 永远不会从部分构建的树渲染内容。
压缩遵循 OptMem 的类别中立规则:保留具有持续影响的内容,丢弃不具备的内容,不虚构任何东西。原始日志免除摘要的任何省略仍然保持权威性。
本地验证
npm install
npm test这里包括一次 2,000 条记忆的 OptMem 压力运行、定长记录和树的恒长不变量、分页、向现在方向逐步细致、遗忘/重建字节的一致性、重启持久性、MCP 模式以及 Drive batchUpdate 请求。
开发与部署工作流
C:\Users\Jensen\code\apochrypha 是开发检出的工作副本。GitHub 的公共 main 分支是发布源,Alpha 部署的是已发布分支,而不是尚未发布的本地文件。
在本地工作副本中修改并运行
npm test。提交变更并将
main推送到 GitHub。从 PowerShell 运行
./scripts/deploy-alpha.ps1。
部署脚本会拒绝对一个脏工作树、非 main 分支或与 origin/main 不一致的本地提交进行部署。在 Alpha 上,它执行仅允许冲突并执行中继号的 executor,安装锁定的生产依赖,重启服务,并验证本地健康端点。运行时状态保持独立:凭据放在 /etc/apocrypha.env,仅追加日志、摘要树和 OAuth 状态放在 /var/lib/apocrypha;它们都不属于 Git 管理。
Google 授权(一次性,在笔记本上)
在 Google Cloud 中,启用 Google Docs API,并创建一个 Desktop OAuth 客户端。
配置 OAuth consent screen,并将其发布为 Production。如果保留在 Testing 下,刷新令牌会在七天后过期。
如果客户端配置要求提供 authorized redirect URI,则添加
http://127.0.0.1:53682/oauth2callback。运行:
GOOGLE_CLIENT_ID='...' GOOGLE_CLIENT_SECRET='...' npm run oauth:google
该助手请求 access_type=offline、prompt=consent,并且只用 https://www.googleapis.com/auth/documents 范围。将打印出的刷新令牌放入 /etc/apocrypha.env;不要提交它。
镜像的目标是 GOOGLE_DOC_ID,而不是文档标题。重命名 Google 文档不会中断同步,也不应该被替换为基于标题的查找。
在 Alpha 上部署
将该文件复制作到 /srv/apocrypha,然后以 root 身份运行:
cd /srv/apocrypha
npm ci --omit=dev
useradd --system --home /var/lib/apocrypha --shell /usr/sbin/nologin apocrypha || true
chown -R apocrypha:apocrypha /var/lib/apocrypha
install -o root -g root -m 600 deploy/apocrypha.env.example /etc/apocrypha.env
install -o root -g root -m 644 deploy/apocrypha.service /etc/systemd/system/apocrypha.service
systemctl daemon-reload
systemctl enable --now apocrypha在启动服务之前,编辑 /etc/apocrypha.env,填入真实、独立的 MCP_BEARER_TOKEN 和 OAUTH_ACCESS_KEY。进程始终只绑定到 127.0.0.1;nginx 是唯一的公开监听者。
连接 Claude
在 Claude 的自定义连接器对话框中,输入 https://mcp.jensenabler.com/mcp,并将可选的 OAuth Client ID 和 Client Secret 保留空白。Claude 会发现 Apocrypha 的 OAuth 元数据并动态注册自身。当 Apocrypha 授权页面打开时,粘贴私有的 OAUTH_ACCESS_KEY,并批准访问。不要在这里使用 Google 的 OAuth 客户端凭据。
该批准密钥仅在授权页使用。Claude 会收到一个带作用域、过期的访问令牌,以及一个轮换的刷新令牌;它永远不会收到批准密钥或静态 bearer 令牌。
连接 bearer 令牌客户端
对于支持自定义请求头的 MCP 客户端,请使用 https://mcp.jensenabler.com/mcp 上的 Streamable HTTP,并携带头部 Authorization: Bearer <MCP_BEARER_TOKEN>。静态令牌与 Claude 的 OAuth 凭据相互独立。
验收调用
curl https://mcp.jensenabler.com/healthz
curl -i -X POST https://mcp.jensenabler.com/mcp若要通过协议层进行检查,可使用 MCP Inspector 配合 Streamable HTTP,URL 为 https://mcp.jensenabler.com/mcp,并选择其 OAuth 流程或自定义请求头 Authorization: Bearer <MCP_BEARER_TOKEN>。
This server cannot be deployed
Maintenance
Related MCP Connectors
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Long-term memory for AI assistants. Isolated per-user storage, recall across conversations.
Persistent memory for AI assistants: store, search, and connect knowledge across conversations.
Gives your AI assistant persistent memory and intelligence about your work patterns.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to save and recall information from files or free-form notes using natural language, acting as a long-term memory system.94 PyPIMIT

JauMemory MCP Serverofficial
AlicenseAqualityCmaintenanceProvides persistent memory capabilities for AI assistants, enabling storage, recall, and analysis of information across conversations with intelligent memory management.2533 npmMIT- AlicenseAqualityDmaintenanceGives AI assistants a persistent memory across conversations, allowing them to remember user preferences, notes, and facts between chats.66 npmMIT
- AlicenseAqualityDmaintenanceEnables AI assistants to store, search, and manage memories, chat history, and uploaded files via the MemoryPlugin API.1325 npm1MIT