Skip to main content
Glama

Apocrypha

Apocrypha es la memoria MCP remota de un solo usuario y solo de adición de Jensen, para contexto personal útil que un asistente juzgue que no debe colocar en su memoria integrada normal. Claude y ChatGPT comparten el mismo endpoint estándar Streamable HTTP en /mcp. Admite OAuth 2.1 basado en estándares para clientes como Claude, mientras conserva un token portador estático separado para clientes que pueden establecer un encabezado de autorización directamente.

Alcance: solo memoria excepcional

Apocrypha sigue la semántica general de memoria y compresión de OptMem con una especialización: no es un segundo almacén de memoria de propósito general. Un asistente debe escribir aquí solo cuando el contexto personal vale la pena recordarlo, pero el asistente juzga que no debe guardar ese contexto en su propio banco de memoria personal—por ejemplo, vivienda, ingresos, colchón financiero, circunstancias socioeconómicas o contexto relacionado con el flujo de trabajo. Los hechos elegibles para la memoria integrada ordinaria pertenecen allí y no deben copiarse también en Apocrypha. Esta separación evita memorias redundantes o conflictivas entre sistemas.

LOG.txt es la autoridad. Utiliza registros de ancho fijo de 320 bytes de OptMem (una memoria terminada en nueva línea por registro), y TREE/<size> utiliza sus registros de fusión binaria de ancho fijo de 288 bytes. Las correcciones son entradas de registro posteriores; las memorias sin procesar nunca se editan ni se eliminan. Google Drive es solo un espejo legible desde el teléfono.

Related MCP server: JauMemory MCP Server

Herramientas

  • apocrypha_wake: lectura obligatoria de contexto permanente, paginada por debajo de los límites de respuesta del cliente; se niega mientras haya alguna compresión pendiente.

  • apocrypha_note: registra solo contexto duradero que de otro modo no está permitido, colapsa espacios en blanco, añade una memoria con fecha, refleja Drive y devuelve la siguiente compresión recién posible.

  • apocrypha_sleep: obtiene o resuelve la siguiente compresión del árbol de fusión.

  • apocrypha_recall: búsqueda regex insensible a mayúsculas y minúsculas del registro sin procesar completo.

  • apocrypha_forget: trunca un resumen incorrecto y todos los resúmenes por encima de él, sin tocar el registro.

Wake devuelve intencionalmente cada registro sin procesar mientras el registro quepa dentro de su presupuesto de renderizado de 96 líneas. Una vez que el registro supera ese presupuesto, cubre el historial completo con resúmenes de árbol almacenados hacia el pasado y detalles progresivamente más finos hacia el presente. Una nota devuelve solo la primera compresión recién posible; cada respuesta de sleep devuelve la siguiente tarea en la cascada. Vaciar esa cascada antes de wake es deliberado, porque wake nunca renderiza desde un árbol parcialmente construido.

La compresión sigue la regla neutral de categoría de OptMem: conservar lo que tiene efecto duradero, descartar lo que no, y no inventar nada. El registro sin procesar sigue siendo autoritativo independientemente de lo que omita un resumen.

Verificación local

npm install
npm test

Las pruebas incluyen una ejecución de estrés de OptMem con 2,000 memorias, invariantes de registros fijos y árbol, paginación, detalle creciente hacia el presente, identidad de bytes de olvidar/reconstruir, persistencia de reinicio, esquemas MCP y la solicitud batchUpdate de Drive.

Flujo de trabajo de desarrollo e implementación

C:\Users\Jensen\code\apochrypha es el checkout de desarrollo. La rama pública main de GitHub es la fuente de lanzamiento, y Alpha implementa esa rama publicada en lugar de archivos locales no publicados.

  1. Realiza cambios en el checkout local y ejecuta npm test.

  2. Confirma los cambios y empuja main a GitHub.

  3. Desde PowerShell, ejecuta ./scripts/deploy-alpha.ps1.

El script de implementación rechaza un árbol sucio, una rama que no sea main, o un commit local que difiera de origin/main. En Alpha realiza una actualización solo de avance rápido, instala dependencias de producción bloqueadas, reinicia el servicio y verifica el endpoint de salud local. El estado de ejecución permanece separado: las credenciales viven en /etc/apocrypha.env, mientras que el registro de solo adición, el árbol de resúmenes y el estado de OAuth viven en /var/lib/apocrypha; ninguno es parte de Git.

Autorización de Google (una vez, en el portátil)

  1. En Google Cloud, habilita la API de Google Docs y crea un cliente OAuth de escritorio.

  2. Configura la pantalla de consentimiento de OAuth y publícala en Producción. Dejarla en Pruebas hace que el token de actualización expire después de siete días.

  3. Añade http://127.0.0.1:53682/oauth2callback si la configuración del cliente solicita una URI de redirección autorizada.

  4. Ejecuta:

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

El asistente solicita access_type=offline, prompt=consent, y solo https://www.googleapis.com/auth/documents. Coloca el token de actualización impreso en /etc/apocrypha.env; no lo confirmes.

El espejo apunta a GOOGLE_DOC_ID, no al título del documento. Renombrar el documento de Google no rompe la sincronización y no debe reemplazarse con una búsqueda basada en el título.

Implementar en Alpha

Copia este proyecto a /srv/apocrypha, luego ejecuta como 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

Edita /etc/apocrypha.env con valores reales e independientes de MCP_BEARER_TOKEN y OAUTH_ACCESS_KEY antes de iniciar el servicio. El proceso siempre se vincula a 127.0.0.1; nginx es el único oyente público.

Conectar Claude

En el diálogo de conector personalizado de Claude, ingresa https://mcp.jensenabler.com/mcp y deja en blanco los campos opcionales de ID de cliente OAuth y Secreto de cliente. Claude descubre los metadatos OAuth de Apocrypha y se registra dinámicamente. Cuando se abra la página de autorización de Apocrypha, pega la clave privada OAUTH_ACCESS_KEY y aprueba el acceso. No uses las credenciales del cliente OAuth de Google aquí.

La clave de aprobación solo se usa en la página de autorización. Claude recibe un token de acceso con alcance y caducidad, y un token de actualización rotatorio; nunca recibe la clave de aprobación ni el token portador estático.

Conectar un cliente con token portador

Para un cliente MCP que admita encabezados personalizados, usa Streamable HTTP en https://mcp.jensenabler.com/mcp con Authorization: Bearer <MCP_BEARER_TOKEN>. El token estático es independiente de las credenciales OAuth de Claude.

Llamadas de aceptación

curl https://mcp.jensenabler.com/healthz
curl -i -X POST https://mcp.jensenabler.com/mcp

Para una verificación a nivel de protocolo, usa el Inspector MCP con Streamable HTTP, URL https://mcp.jensenabler.com/mcp, y ya sea su flujo OAuth o el encabezado de solicitud 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