fairdraw について
fairdrawは、結果を誰でも独立して検証できる抽選を運営するためのMCPサーバー兼CLIです。公開されたdrand乱数で重複を除いた参加者を順位付けし、即時抽選と予約抽選に対応します。
主な機能
- 01drand乱数による当選者選出
- 02参加者リストの重複除去と整列
- 03将来のラウンドに抽選を予約
- 04IDによる予約抽選の検証
活用シーン
- 01即時に検証できる抽選の実施
- 02将来の公開に向けた抽選の確定
- 03乱数公開後の当選者再計算
MCP 対応
即時の当選者選出、将来のdrandラウンドを使った抽選予約、予約結果の検証を行うツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| winners | integer | いいえ | 選出する当選者の数。デフォルトは 1 です。1 以上、参加者数以下である必要があります。 |
| entrants | array | はい | 参加者の名前。重複を削除し、順位付けの前にリストをソートします。 |
詳細
fairdraw
誰も結果をうのみにする必要のない抽選です。fairdraw は、公開されている drand の乱数ビーコンから当選者を選びます。当選者の名前は、公開された drand ラウンドの乱数と応募者リストのみから決まるため、抽選後は誰でも手作業で順位を再計算し、発表された当選者がビーコンによって実際に選ばれた人であることを確認できます。
結果の決定方法:
- 応募者リストから重複を削除し、並べ替えます。
- 各応募者のスコアを
sha256(randomness + "|" + entrant)(16 進ダイジェスト)で計算します。 - スコアの低い順に応募者を順位付けします。スコアが最も低い人から、順位順に当選します。
3 つのツール:
pick_winner_now— 最新の drand ラウンドを使ってすぐに抽選し、当選者(または複数の当選者)を直ちに取得します。結果にはラウンド番号と乱数の冒頭部分が含まれるため、抽選結果を再確認できます。create_scheduled_draw— 将来の公開に向けて抽選を確定します。抽選を作成した瞬間に、チェーンのタイミングに基づいて drand ラウンドが確定します。対象となるのは、乱数がnow + delay_sec以降に利用可能になる最初のラウンドです。応答には抽選 ID が含まれます。verify_draw— ID でスケジュール済み抽選を検索します。ラウンドがまだ公開されていない間は、確定済みのラウンドを示す保留メッセージが返されます。ラウンドが公開されると、そのラウンドの乱数から再計算した当選者が、検証済みとして返されます。
スケジュール済み抽選はサーバープロセスのメモリに保存されます。プロセスが実行中の間だけ存在し、抽選 ID は作成したプロセス内でのみ有効です。
CLI
各ツールは、JSON 引数文字列を 1 つ受け取るサブコマンドです。
npx @reneturcios/fairdraw pick_winner_now '{"entrants":["alice","bob","carol"],"winners":2}'
npx @reneturcios/fairdraw create_scheduled_draw '{"title":"Spring raffle","entrants":["alice","bob"],"delay_sec":3600}'
npx @reneturcios/fairdraw verify_draw '{"id":"<draw id>"}'
npx @reneturcios/fairdraw --version
出力はツールの結果テキストです。終了コード:成功時は 0、実行時エラー(検証エラーや drand の失敗を含む)時は 1、使用方法のエラー時は 2 です。
MCP サーバー
npx -y @reneturcios/fairdraw mcp
MCP クライアントの設定:
{
"mcpServers": {
"fairdraw": {
"command": "npx",
"args": ["-y", "@reneturcios/fairdraw", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/fairdraw
docker run --rm ghcr.io/cloudcorprecords/fairdraw pick_winner_now '{"entrants":["alice","bob"]}'
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (fake fetch + fake clock, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。