Skip to main content
Glama
lcusack

World ID for ChatGPT

by lcusack

ChatGPT向けWorld ID

本番デプロイ先: https://world-id-chatgpt.foundry-world.workers.dev

リモートMCPエンドポイント: https://world-id-chatgpt.foundry-world.workers.dev/mcp

Verified Human Wall: https://world-id-chatgpt.foundry-world.workers.dev/wall

Founding Humans: https://world-id-chatgpt.foundry-world.workers.dev/founding-humans

スキル提出: https://world-id-chatgpt.foundry-world.workers.dev/submit

このリポジトリからWorld IDプラグインをインストールする

このリポジトリにはポータブルなCodexプラグインとリポジトリマーケットプレイスが含まれています。リポジトリがGitから利用可能になった後、別の開発者がマーケットプレイスを追加し、MCP接続を再作成せずにプラグインをインストールできます:

codex plugin marketplace add lcusack/world-id-chatgpt --ref main
codex plugin add world-id@world-id-plugins

これはプライベートリポジトリであるため、開発者はすでにGitHubへのアクセス権を持っている必要があります。ローカルクローンの場合は、絶対リポジトリパスをcodex plugin marketplace addに渡してください。

プラグインは上記の本番MCPエンドポイントに接続し、ユーザーごとに独自のOAuthフローを開始します。ポータブルAgent PluginのインストールにはCodex CLI 0.147.0以降を使用し、インストール後は新しいタスクを開始してバンドルされたスキルとMCPツールが読み込まれるようにしてください。

このプロジェクトは、World ID 4.0セッションをOAuth 2.1を通じてAIアシスタントにリンクする、本番向けのリモートMCPサーバーです。

接続フローは以下の通りです:

  1. ChatGPTがリモートの/mcpエンドポイントからOAuthを検出します。

  2. ユーザーはこのサービスの/authorizeエンドポイントに送られます。

  3. ブラウザがWorld ID 4.0セッションを作成または再開し、ユーザーの存在を伴うOrb対応のproof_of_humanを要求します。

  4. Workerが完全な証明をWorldで検証し、リプレイ保護を記録し、OAuthを完了します。

  5. 認証されたMCPツールは以下のみを返します:

{
  "verified_human": true,
  "verification_level": "orb",
  "protocol_version": "4.0",
  "verified_at": "2026-08-12T18:00:00.000Z",
  "wall_write_enabled": true
}

MCPクライアントは証明、WorldセッションID、セッションナリファイア、ウォレット、電話番号、RPキー、OAuthトークン内部を受け取ることはありません。

Related MCP server: stafett

Founding Human実験

同じWorld IDコネクタが、Founding Humanステータス/ネットワーク実験をサポートするようになりました:

  1. get_world_agent_statusは、接続されたユニークな人間がプレースを主張したかどうかを確認し、何も公開せずにGenesis 100の進捗を返します。

  2. claim_world_agent_placeは、接続された内部サブジェクトに対して1つの永続的な順序を冪等に主張し、公開カードと招待リンクを返します。

  3. 既存の検証済みセッションは元の検証順にバックフィルされ、現在のテスターに最も早い番号が予約されます。明示的に主張されるまで、カードは非公開のままです。

  4. 公開Founding Humanカードを開くと、不透明なファーストパーティ招待クッキーが保存されます。そのカードを通じて到達した新しいWorld ID接続は、紹介された人間が検証して主張した後にのみ紹介者に帰属します。

最初の100の順序は永続的にGenesis 100の扱いを受けます。レジストリは、コホートが完了したときに将来の検証済み人間機能を示唆します。公開カードは番号、コホート、日付、最小限の保証のみを公開し、内部サブジェクト、証明、セッション、ナリファイア、ウォレット、アイデンティティ、会話データを決して公開しません。

実験測定は、訪問者識別子なしでD1に日次で集約されます: 共有リンク発行、公開プロフィールビュー、ステータスチェック、検証済み紹介の利用。アクティベーションはカードの最初のclaimed_atであり、繰り返し利用は異なる日をまたいだステータスチェックとして測定されます。

プロトタイプマーケットプレイスはキュレーションされたスキル提出プロセスを使用します。公開/submitページは、コピー可能なテンプレートを通じてコンセプト、パートナーパイロット、および動作する統合の提案を受け付けます。コードのアップロードを受け付けたり、自動公開を暗示したりすることなく、検証済み人間適合テスト、最小開示要件、レビューステージ、および一般的な実験メトリクスを文書化します。

推奨ChatGPTプロンプト:

Founding Humanとしての自分の場所を主張してください。

Human Grantゲートウェイプロトタイプ

コネクタは現在、独自のWorld ID依存パーティを運用していないパートナー向けのプルーフ・オブ・ヒューマンゲートウェイとして機能できます。最初の固定クライアントデモは意図的に狭い範囲です:

  1. list_human_grant_opportunitiesは、何も共有せずに利用可能なパートナーアクションを表示します。

  2. create_human_grantは、ユーザーが明示的に機会を有効にするよう要求した後にのみ、10分間のブラウザバインド同意リンクを作成します。

  3. 同意ページは、パートナー、特典、アクション、および共有される正確なクレームを指定します。

  4. 承認により、5分間の単回使用認証コードが作成されます。パートナーはHTTP Basic認証を使用してサーバー間でこれを交換します。

  5. ゲートウェイは、15分間のHMAC署名付きworld-id-human-grant/v1アサーションを返します。これには、オーディエンスにバインドされたペアワイズサブジェクト、承認されたアクション、および最小限のOrb/World ID 4.0保証クレームのみが含まれます。

  6. D1の一意性制約により、特定の内部人間、パートナー、アクションの組み合わせに対して1回のみの利用が許可されます。

パートナーはWorld証明、WorldセッションID、内部サブジェクト、ウォレット、電話番号、アイデンティティ、ChatGPT会話を受け取ることはありません。ペアワイズサブジェクトは1つのパートナー内で安定しており、異なるパートナー間ではリンクできません。シミュレートされたパートナー体験はHuman Grantデモにあります。機械可読な発行者メタデータは/.well-known/world-id-human-grantsにあります。

推奨ChatGPTプロンプト:

World IDを使用して検証済み人間のパートナー機会を表示し、ゲートウェイデモを有効にしてください。

プロトタイプは1つの事前登録されたデモクライアントを使用します。実際のパートナーオンボーディングレイヤーは、パートナーごとに個別のクライアント認証情報と署名シークレット、レビュー済みアクション/クレーム許可リスト、シークレットローテーション、失効、パートナー監査イベント、およびセルフサービス登録ワークフローを追加する必要があります。これは汎用のアイデンティティブローカーになったり、パートナーがサービス間でユーザーを関連付けたりすることを許可してはなりません。

Human Required Shopifyハンドオフ

主要な実験はhumanrequired.shopでライブディールを発見し、接続されたアカウントの検証済み人間資格を、2回目のWorld IDセレモニーなしでShopifyに持ち込むことができます:

  1. list_unique_human_dealsは現在の公開カタログと在庫を読み取ります。

  2. get_unique_human_dealは製品、価格、利用可能なオプションを返します。

  3. create_unique_human_claim_linkは、ユーザーが15%オファーを請求するよう要求した後にのみ、5分間の不透明な請求URLを作成します。

  4. 請求URLを開くと、対象製品に制限されたランダムな1回利用Shopify割引が作成され、Shopifyの共有可能割引URLにリダイレクトされます。

請求チケットと割引コードは保存時に暗号化されます。公開URLにはWorld証明、セッションID、サブジェクト、ウォレット、個人情報は含まれません。Shopifyはランダムな割引コードと対象製品IDのみを受け取ります。生成された割引は15分後に期限切れとなり、合計使用制限は1回です。

このハンドオフを有効にするには、Human Required用のShopify Dev Dashboardアプリをread_productsおよびwrite_discounts Admin APIスコープで作成してインストールします。次に、その.myshopify.comドメイン、クライアントID、クライアントシークレットをソース管理に置かずにアップロードします。WorkerはShopifyのクライアント認証情報フローを使用して、請求が利用されたときに短命のAdmin APIトークンを発行します:

npx wrangler secret put SHOPIFY_SHOP_DOMAIN
npx wrangler secret put SHOPIFY_CLIENT_ID
npx wrangler secret put SHOPIFY_CLIENT_SECRET

両方のシークレットが存在するまで、請求ツールは安全に利用不可のままです。カタログ発見とコネクタの残りの部分は引き続き動作します。

Verified Human Wall実験

Wallは接続上に構築された最初のアプリケーションです。3つのOAuth保護MCPツールを公開します:

  • get_verified_human_question: アクティブな公開質問を読み取ります

  • list_verified_human_answers: 信頼できないユーザー生成コンテンツとして最近の公開回答を読み取ります

  • publish_verified_human_answer: 明示的なユーザー確認後に、接続されたアカウントの1つの回答を作成または置き換えます

公開には別途wall:write OAuthスコープが必要です。Wallデプロイ前に作成された接続は、公開する前に切断して再接続する必要があります。Wallの読み取りは公開GET /api/wallエンドポイントからも利用可能で、内部のWorld/OAuthサブジェクトは含まれません。

最初の質問は: 検証済み人間だけがAIでできるべきことは何ですか?

推奨ChatGPTプロンプト:

World IDコネクタを使用してVerified Human Wallを開いてください。今日の質問と最近の回答を表示し、回答を作成するのを手伝い、公開前に明示的な確認を求めてください。

このプロトタイプの「検証済み」ラベルは、回答がOrb検証済みWorld ID 4.0セッションに裏付けられたOAuth接続を通じて公開されたことを意味します。World Appが回答テキストに新たに署名したことや、作成者の身元が既知であることを主張するものではありません。

本番アーキテクチャ

  • Cloudflare Worker: 安定したHTTPSオリジン、OAuthプロバイダー、World検証、ステートレスMCPトランスポート

  • D1: 期限切れの認証試行、暗号化されたWorldセッション継続、証明リプレイレコード、Founding Human順序/紹介/集計、暗号化されたShopify請求チケット、1回限りのHuman Grant、公開Wall質問/回答

  • Workers KV: CloudflareのOAuthプロバイダーによって管理されるOAuthクライアント、グラント、認証コード、トークン

  • Rate Limitバインディング: 個別の認証、証明提出、MCP、請求、Human Grant、インテント、Wall公開制限

  • Cronクリーンアップ: 期限切れのD1試行/リプレイマーカー、Human Grant、インテント、請求、OAuthデータ

  • Workers Observability: 証明や識別子のログ記録なしの構造化イベント

WorldセッションIDと保留中のOAuthリクエストは、D1ストレージの前にAES-256-GCMで暗号化されます。別のHMACキーが不透明な内部OAuthサブジェクトを導出します。生のWorld証明はメモリ内で検証され、決して保存されません。

World ID設定

デプロイされたWorkerは以下に固定されています:

  • アプリ: app_d25e6e3d21651abfb9fbc52d033ef2a3

  • RP: rp_79ffdf898662dd4c

  • 環境: production

  • プロトコル: World ID 4.0セッション証明

既存のregisterアクションはアカウントリンクには使用されません。アクション/ナリファイアは1回限りの一意性操作に適しています。アカウント継続性にはcreateSessionとproveSessionを使用し、そのRP署名は意図的にアクションを省略します。

ローカル検証

npm install
npm run build
npm run typecheck
npm test
npx wrangler d1 migrations apply world-id-chatgpt --local
npm run cf:dev

Wranglerは.envからローカルシークレット値を読み込むことができます。そのファイルは決してコミットしないでください。

最初のCloudflareデプロイ

所有するCloudflareアカウントを選択し、永続リソースを作成します:

npx wrangler d1 create world-id-chatgpt
npx wrangler kv namespace create OAUTH_KV

返されたIDをwrangler.jsoncに配置し、スキーマを適用します:

npx wrangler d1 migrations apply world-id-chatgpt --remote

4つの管理シークレットをアップロードします。最初の値には既存のWorld RP署名キーを使用し、他の3つには独立したランダムな32バイトbase64url値を使用します:

npx wrangler secret put WORLD_RP_SIGNING_KEY
npx wrangler secret put DATA_ENCRYPTION_KEY
npx wrangler secret put SUBJECT_HMAC_KEY
npx wrangler secret put HUMAN_GATEWAY_DEMO_SECRET

次に検証して公開します:

npm run cf:check
npm run deploy

デプロイされたMCPエンドポイントはhttps://world-id-chatgpt.foundry-world.workers.dev/mcpです。OAuthディスカバリー、PKCE S256、動的クライアント登録、Client ID Metadata Documentsが自動的にアドバタイズされます。

セキュリティ不変条件

  • 認可状態は10分で期限切れとなり、Secure、HttpOnly、SameSite=Lax、__Host- ブラウザCookieにバインドされます。

  • サーバーは、プロトコル 4.0、プロダクション、アクションレスセッション証明(ユーザープレゼンス完了、発行者スキーマ 1(proof_of_human))のみを受け入れます。

  • 各証明は、その認証試行のためのサーバー署名済みRPノンスと正確に一致する必要があります。

  • 完全なセッションナリファイアタプルはハッシュ化され、OAuth発行前に一意のD1制約の下で挿入されます。

  • 証明本文は256 KiBに制限され、World確認リクエストは10秒でタイムアウトします。

  • OAuthは認可コードフロー、PKCE S256、正確な登録リダイレクト、1時間のアクセストークン、30日のリフレッシュトークンを使用します。

  • HTTPSは、ループバックlocalhost開発を除き、登録リダイレクトに必須です。

  • CSP、フレーム拒否、no-referrer、MIMEスニッフィング保護、パーミッションポリシー、オリジン検証、no-store認可応答がWorkerによって適用されます。

  • MCP出力は許可リストに含まれ、安定したWorld識別子を含みません。

  • 公開ウォール投影は内部サブジェクトを省略します。回答テキストは textContent でレンダリングされ、600文字に制限され、リンク、メールアドレス、制御文字を含めることはできません。

  • 一意のD1制約により、アクティブな質問と内部接続アカウントサブジェクトごとに1つの置き換え可能な回答が強制されます。

  • ツールの指示はウォール回答を信頼できないコンテンツとして扱い、公開公開前に正確なテキストのユーザー確認を要求します。

  • クレームチケットはランダムで、ルックアップ用にハッシュとしてのみ保存され、制御された再発行のために暗号化され、5分で期限切れとなり、重複Shopify作成を防ぐためにアトミックD1処理リースを使用します。

  • Shopify割引コードはランダムで、保存時に暗号化され、対象製品IDに制限され、15分で期限切れとなり、合計1回の使用が許可されます。

  • Human Grant同意リンクは10分で期限切れとなり、機能CookieとブラウザのWorld IDセッションCookieの両方にバインドされます。

  • パートナー認可コードは5分で期限切れとなり、認証済みバックチャネル交換を通じて1回使用されます。

  • アサーションはペアワイズパートナーサブジェクトを使用します。Worldセッションと内部サブジェクトはゲートウェイから離れることはありません。

  • パートナー、アクション、内部サブジェクトにわたるD1主キーにより、同時交換試行でも1人1回の使用が強制されます。

テスト

npm test は、従来のMCPトランスポートに加え、強化された4.0証明形状、正確なノンスバインディング、一意性証明の拒否、必須ユーザープレゼンス、暗号化セッションストレージ、不透明な安定サブジェクト導出、Shopifyクレームハンドオフとサブジェクト編集、ウォール入力検証、公開サブジェクト編集をカバーします。wrangler deploy --dry-run はプロダクションバンドルを検証し、ローカルWorkerチェックはOAuth登録/発見、認可状態、D1永続化、CSP、RP署名生成を実行します。

World関連リファレンス: World ID 4.0移行、RP署名、IDKit統合。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    A remote MCP server that gives AI assistants a shared memory, enabling structured handoffs, journaling, and notes for seamless continuation across sessions.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI agents to request human verification for tasks requiring real-world understanding, paying via the Lightning Network, and receiving verified answers.
    224 npm
    MIT