entropy について
entropyは、エージェントにOS由来の暗号学的乱数と、検証可能なコミット・リビール記録を提供するMCPサーバーです。サンプリング、統計テスト、ステートレスなバンディット選択に対応し、第三者が抽選を検証できます。
主な機能
- 01CSPRNGによる乱数生成
- 02サンプリング、シャッフル、選択
- 03コミット・リビール検証
- 04統計テスト一式
- 05ステートレスなバンディット選択
- 06シードによる再現可能な結果
活用シーン
- 01選択肢から公平に選ぶ場面
- 02エージェントの抽選結果の検証
- 03系列の統計的パターンの検査
- 04シード付き抽選の再現
MCP 対応
MCPサーバーはrandom、commitment、test、exploreの4つのツールを提供します。クライアントは抽選、コミット・リビール記録の作成と検証、統計テスト、バンディット選択を実行できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://entropy-mcp.terradev.cloud/mcpclaude mcp add --transport http terradev-cloud-entropy https://entropy-mcp.terradev.cloud/mcp{"mcpServers":{"terradev-cloud-entropy":{"type":"http","url":"https://entropy-mcp.terradev.cloud/mcp"}}}Cursor で開く{"servers":{"terradev-cloud-entropy":{"type":"http","url":"https://entropy-mcp.terradev.cloud/mcp"}}}VS Code で開く{"mcpServers":{"terradev-cloud-entropy":{"type":"http","url":"https://entropy-mcp.terradev.cloud/mcp"}}}{"mcpServers":{"terradev-cloud-entropy":{"serverUrl":"https://entropy-mcp.terradev.cloud/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
4| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| seed | string | いいえ | 再現可能な抽選に使用する任意の seed |
| params | object | いいえ | operation 固有の引数 |
| operation | enum | はい | bytes | int | shuffle | choose | sample | constrained |
詳細
entropy-mcp
Entropy は、エージェントが自力では生成できないランダム性と、それを操作していないことの証明を提供します。
エビデンス
言語モデルは、統計的に健全なランダム性を生成できません。これは推測ではなく、測定されています。
- arXiv:2601.05414 — 11 個の最先端モデルと 15 種類の分布を検証:バッチモードでの合格率の中央値は 7%。ステートレスモードでは 11 モデル中 10 モデルが、いずれの分布にも合格しませんでした。
- arXiv:2604.06543 — 知識と実行のギャップ:モデルは正しいサンプリング方法を説明できても、実際には実行に失敗します。モデル自身にシードを生成させても、同じバイアスが再現されます。
- arXiv:2606.06622 — UnpredictaBench:ランダムであるべき場面で、モデルには測定可能な予測可能性があります。
ステートレス環境の重要性
エージェントが動作するのは、まさにモデルが最も苦手とする環境です。過去の抽選結果を記憶せず、個々の呼び出しが独立したステートレスな環境です。エージェントが自らの重みに基づいて答える「乱数を選んで」という要求は、すべて偏りがあり予測可能なソースからの抽選です。Entropy は抽選をモデルの外に移し、OS の CSPRNG で行います。また、コミット・リビールチェーンにより、実際に行われた抽選と報告された抽選が同一であることを証明します。
インストール
pip install entropy-mcp # stdio core + stamp-mcp dependency
pip install entropy-mcp[http] # adds the aiohttp HTTP transport
クイックスタート
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"commitment","arguments":{
"operation":"draw",
"draw_spec":{"operation":"shuffle","params":{"items":["alice","bob","carol","dave"]}},
"description":"who goes first"}}}
1 回の呼び出しで、シャッフル済みのリストに加え、コミットメントレコード、リビールレコード、検証ブロックが返されます。これらはすべて、第三者が commitment operation:"verify" で確認できる完全なチェーンです。
コマンドリファレンス
ツールは 4 つです。operation でプリミティブを選択し、params に引数を指定します。seed を指定すると、抽選を再現できます。
| ツール | 操作 |
|---|---|
random | bytes(CSPRNG、hex/base64)・int(棄却サンプリングによる偏りのない [min,max] の整数)・shuffle(Fisher-Yates + 順列)・choose(重み付けの有無、復元抽出の有無を選択)・sample(一様、正規、対数正規、指数、三角、ベータ)・constrained(属性ごとの独立サンプリング + カイ二乗適合性証明) |
commitment | commit(シードをハッシュし、抽選仕様と結び付けて証明)・reveal(シードを検証し、再実行して結果を証明)・draw(1 回の呼び出しでコミット + 実行 + リビール)・verify(ローカル状態不要の、純粋な第三者検証)・list(ローカルのコミットメントログ) |
test | 統計テスト一式:頻度、カイ二乗、連続性、最長連続、系列、シャノン、KS、間隔 |
explore | バンディット選択:epsilon_greedy、thompson、ucb1(ステートレス) |
入力とシードが同一であれば、シードを指定したコマンドはどのプロセス、マシン、Python バージョンでもバイト単位で同一の結果になります。非決定的なのは OS の生エントロピーを使う経路のみで、そのことは明示されます。
コミット・リビールの仕組み
- commit は 32 バイトのシードを生成(または受け取り)、
sha256(seed)のみを保存し、正規化したハッシュを使って抽選仕様と結び付け、Stamp の NTP でタイムスタンプを付与します。必要に応じて drand ラウンドにもアンカーし、レコード全体を証明します。シードはユーザーに渡され、サーバー側には保存されません。 - reveal はシードを受け取り、それがコミット済みの
seed_hashにハッシュされることを検証してから、抽選を決定論的に再実行し、その結果を証明します。 - verify_chain は、サーバーの状態に依存せず、以下を確認します。
| 確認項目 | 証明内容 |
|---|---|
seed_produces_commitment_hash | リビールされたシードが、コミットされたシードであること |
commitment_attestation_valid | コミットメントレコードが完全で、証明済みであること |
reveal_attestation_valid | リビールレコードが完全で、証明済みであること |
commitment_precedes_reveal | コミットがリビールより前に行われたこと |
outcome_reproducible | 報告された結果が、シードから実際に生成される結果であること |
params_hash_matches | コミット後に抽選仕様が改ざんされていないこと |
beacon_anchor_valid | アンカーされた場合、コミットメントが drand ラウンドの公開より前であること |
これは何ではないか
- 統計パッケージではありません — サマリーブロックとテストバッテリーは便利な機能であり、分析スイートではありません。
- シミュレーションエンジンではありません — モンテカルロ法、感度分析、フィッティングには対応していません。
- ランダムネスビーコンではありません — drand によるアンカリングは任意の強化策であり、乱数源ではありません。
- NIST 認定ではありません — テストバッテリーは、SP 800-22 を参考に、その趣旨に沿って作られています。
設定
| 環境変数 | デフォルト | 用途 |
|---|---|---|
ENTROPY_COMMITMENT_LOG | ~/.entropy/commitments.jsonl | コミットメントログのパス(0600、最大10,000件) |
ENTROPY_STAMP_URL | https://stamp-mcp.terradev.cloud | リモート Stamp エンドポイント(ローカルの stamp_mcp のインポートを優先) |
ENTROPY_BEACON_URL | https://api.drand.sh | drand API のベース URL |
ENTROPY_HOST / ENTROPY_PORT | 127.0.0.1 / 8001 | HTTP トランスポートのバインド先 |
脅威モデル
THREAT_MODEL.md を参照してください。率直に言えば、Entropy は抽選が操作されていないことを証明できますが、抽選結果が破棄されていないことは証明できません。
ライセンス
Apache 2.0。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。