Skip to main content
Glama

Apocrypha

Apocrypha は、Jensen のシングルユーザー専用・追記専用のリモート MCP メモリであり、アシスタントが通常の組み込みメモリに保存すべきではないと判断した有用な個人コンテキストを保存するためのものです。Claude と ChatGPT は、/mcp にある同じ標準 Streamable HTTP エンドポイントを共有します。Claude などのクライアント向けに標準ベースの OAuth 2.1 をサポートしつつ、認証ヘッダーを直接設定できるクライアント向けに別の静的ベアラートークンも保持します。

スコープ: 例外的なメモリのみ

Apocrypha は OptMem の一般的なメモリおよび圧縮セマンティクスに従いますが、1 つの特殊化があります。それは、2 つ目の汎用メモリストアではないということです。アシスタントは、個人コンテキストが記憶に値するが、そのコンテキストを自身の個人メモリバンクに保存すべきではないと判断した場合にのみ、ここに書き込むべきです。たとえば、住居、収入、財務的余裕、社会経済的状況、または関連するワークパイプラインのコンテキストなどです。通常の組み込みメモリに保存できる事実はそこに属し、Apocrypha にコピーすべきではありません。この分離により、システム間での冗長または競合するメモリを回避します。

LOG.txt が正本です。OptMem の 320 バイト固定幅レコード(レコードごとに改行で終了する 1 メモリ)を使用し、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 のカテゴリ中立のルールに従います。永続的な効果を持つものを保持し、持たないものを破棄し、何も invent しません。サマリーが何を省略しても、生ログが正本のままです。

ローカル検証

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 回だけ)

  1. Google Cloud で Google Docs API を有効にし、デスクトップ OAuth クライアントを作成します。

  2. OAuth 同意画面を構成し、本番環境に公開します。テストのままにすると、リフレッシュトークンは 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_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 はスコープ付きの期限付きアクセストークンとローテーションするリフレッシュトークンを受け取ります。承認キーや静的ベアラートークンを受け取ることはありません。

ベアラートークンクライアントを接続

カスタムヘッダーをサポートする 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

プロトコルレベルのチェックには、Streamable HTTP で MCP Inspector を使用し、URL https://mcp.jensenabler.com/mcp を指定し、OAuth フローまたはリクエストヘッダー Authorization: Bearer <MCP_BEARER_TOKEN> のいずれかを使用します。

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers