Skip to main content
Glama

Apocrypha

Apocrypha는 Jensen의 단일 사용자, 추가 전용(append-only) 원격 MCP 메모리로, 어시스턴트가 일반 내장 메모리에 저장해서는 안 된다고 판단하는 유용한 개인 맥락을 보관한다. Claude와 ChatGPT는 /mcp에서 동일한 표준 Streamable HTTP 엔드포인트를 공유한다. Claude와 같은 클라이언트를 위한 표준 기반 OAuth 2.1을 지원하면서, 인증 헤더를 직접 설정할 수 있는 클라이언트를 위한 별도의 정적 베어러 토큰도 유지한다.

범위: 예외적 메모리만

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 스트레스 실행, 고정 레코드 및 트리 불변식, 페이지 처리, 현재로 갈수록 증가하는 세부 정보, forget/rebuild 바이트 동일성, 재시작 영속성, MCP 스키마, Drive batchUpdate 요청이 포함된다.

개발 및 배포 워크플로

C:\Users\Jensen\code\apochrypha는 개발 체크아웃이다. GitHub의 공개 main 브랜치는 릴리스 소스이며, Alpha는 게시된 브랜치를 배포하고 게시되지 않은 로컬 파일은 배포하지 않는다.

  1. 로컬 체크아웃에서 변경하고 npm test를 실행한다.

  2. 변경 사항을 커밋하고 main을 GitHub에 푸시한다.

  3. PowerShell에서 ./scripts/deploy-alpha.ps1을 실행한다.

배포 스크립트는 더티 트리, main이 아닌 브랜치, 또는 origin/main과 다른 로컬 커밋을 거부한다. Alpha에서는 fast-forward 전용 업데이트를 수행하고, 잠긴 프로덕션 종속성을 설치하고, 서비스를 재시작하고, 로컬 상태 엔드포인트를 확인한다. 런타임 상태는 별도로 유지된다: 자격 증명은 /etc/apocrypha.env에 있고, 추가 전용 로그, 요약 트리, OAuth 상태는 /var/lib/apocrypha에 있으며, 어느 것도 Git의 일부가 아니다.

Google 인증(노트북에서 일회성)

  1. Google Cloud에서 Google Docs API를 활성화하고 Desktop OAuth 클라이언트를 만든다.

  2. OAuth 동의 화면을 구성하고 Production으로 게시한다. Testing으로 두면 새로 고침 토큰이 7일 후 만료된다.

  3. 클라이언트 구성에서 승인된 리디렉션 URI를 요청하면 http://127.0.0.1:53682/oauth2callback을 추가한다.

  4. 실행:

    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_TOKENOAUTH_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는 범위가 지정되고 만료되는 액세스 토큰과 회전하는 새로 고침 토큰을 받는다. 승인 키나 정적 베어러 토큰은 절대 받지 않는다.

베어러 토큰 클라이언트 연결

사용자 지정 헤더를 지원하는 MCP 클라이언트의 경우, https://mcp.jensenabler.com/mcp에서 Authorization: Bearer <MCP_BEARER_TOKEN> 헤더와 함께 Streamable HTTP를 사용한다. 정적 토큰은 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> 중 하나를 사용한다.

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