Skip to main content
Glama

Apocrypha

Apocrypha — это однопользовательская, append-only удалённая MCP-память Дженсена для полезного личного контекста, который ассистент считает, что не следует помещать в свою обычную встроенную память. Claude и ChatGPT используют общий стандартный конечный пункт Streamable HTTP по адресу /mcp. Он поддерживает основанный на стандартах OAuth 2.1 для таких клиентов, как Claude, сохраняя при этом отдельный статический 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 строк. Как только журнал превышает этот бюджет, он выкладывает полную историю сохранёнными сводками дерева в прошлое и постепенно более детальными к настоящему. Заметка возвращает только первое новое возможное сжатие; каждый ответ sleep возвращает следующую задачу в каскаде. Опустошение этого каскада перед wake является намеренным, потому что wake никогда не рендерит из частично построенного дерева.

Сжатие следует нейтральному к категориям правилу OptMem: сохранять то, что имеет длительный эффект, отбрасывать то, что не имеет, и ничего не выдумывать. Исходный журнал остаётся авторитетным независимо от того, что опускает сводка.

Локальная проверка

npm install
npm test

Тесты включают стресс-прогон OptMem на 2000 записей, инварианты фиксированных записей и дерева, разбиение на страницы, увеличение детализации к настоящему, байтовую идентичность забывания/пересборки, сохранение после перезапуска, схемы MCP и запрос Drive batchUpdate.

Процесс разработки и развертывания

C:\Users\Jensen\code\apochrypha — это рабочая копия для разработки. Публичная ветка main на GitHub является источником релиза, и Alpha разворачивает эту опубликованную ветку, а не неопубликованные локальные файлы.

  1. Внесите изменения в локальной рабочей копии и запустите npm test.

  2. Зафиксируйте изменения и отправьте main в GitHub.

  3. Из PowerShell запустите ./scripts/deploy-alpha.ps1.

Скрипт развертывания отказывается от грязного дерева, ветки не-main или локального коммита, отличающегося от origin/main. На Alpha он выполняет обновление только с перемоткой вперёд, устанавливает заблокированные производственные зависимости, перезапускает службу и проверяет локальную конечную точку здоровья. Состояние выполнения остаётся отдельным: учётные данные находятся в /etc/apocrypha.env, а журнал append-only, дерево сводок и состояние OAuth — в /var/lib/apocrypha; ни одно из них не является частью Git.

Авторизация Google (однократно, на ноутбуке)

  1. В Google Cloud включите Google Docs API и создайте настольный OAuth-клиент.

  2. Настройте экран согласия OAuth и опубликуйте его в Production. Если оставить его в Testing, refresh-токен истекает через семь дней.

  3. Добавьте http://127.0.0.1:53682/oauth2callback, если конфигурация клиента запрашивает авторизованный URI перенаправления.

  4. Запустите:

    GOOGLE_CLIENT_ID='...' GOOGLE_CLIENT_SECRET='...' npm run oauth:google

Помощник запрашивает access_type=offline, prompt=consent и только https://www.googleapis.com/auth/documents. Поместите напечатанный refresh-токен в /etc/apocrypha.env; не коммитьте его.

Зеркало нацелено на GOOGLE_DOC_ID, а не на название документа. Переименование Google Doc не нарушает синхронизацию и не должно заменяться поиском по названию.

Развертывание на 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 обнаруживает метаданные OAuth Apocrypha и динамически регистрируется. Когда откроется страница авторизации Apocrypha, вставьте приватный OAUTH_ACCESS_KEY и одобрите доступ. Не используйте здесь учётные данные Google OAuth-клиента.

Ключ одобрения используется только на странице авторизации. Claude получает ограниченный по объёму истекающий токен доступа и вращающийся refresh-токен; он никогда не получает ключ одобрения или статический bearer-токен.

Подключение клиента с bearer-токеном

Для MCP-клиента, поддерживающего пользовательские заголовки, используйте Streamable HTTP по адресу https://mcp.jensenabler.com/mcp с заголовком Authorization: Bearer <MCP_BEARER_TOKEN>. Статический токен не зависит от учётных данных OAuth Claude.

Приемочные вызовы

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>.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Universal memory for AI agents and tools. Save, organize and search context anywhere.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JensenAbler/apocrypha'

If you have feedback or need assistance with the MCP directory API, please join our Discord server