mcpField
F
fairdraw

fairdraw

ローカル
github.com/CloudCorpRecordsゲーム・エンタメ01 週間前に更新

fairdraw について

fairdrawは、結果を誰でも独立して検証できる抽選を運営するためのMCPサーバー兼CLIです。公開されたdrand乱数で重複を除いた参加者を順位付けし、即時抽選と予約抽選に対応します。

主な機能

  1. 01drand乱数による当選者選出
  2. 02参加者リストの重複除去と整列
  3. 03将来のラウンドに抽選を予約
  4. 04IDによる予約抽選の検証

活用シーン

  1. 01即時に検証できる抽選の実施
  2. 02将来の公開に向けた抽選の確定
  3. 03乱数公開後の当選者再計算

MCP 対応

即時の当選者選出、将来のdrandラウンドを使った抽選予約、予約結果の検証を行うツールをMCPクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-fairdraw": {
"command": "npx",
"args": [
"-y",
"@reneturcios/fairdraw"
]
}
}
}
起動コマンドnpx -y @reneturcios/fairdraw

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/fairdraw0.1.0
ocighcr.io/cloudcorprecords/fairdraw:0.1.0

ツール

3

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
winnersintegerいいえ選出する当選者の数。デフォルトは 1 です。1 以上、参加者数以下である必要があります。
entrantsarrayはい参加者の名前。重複を削除し、順位付けの前にリストをソートします。

詳細

fairdraw

誰も結果をうのみにする必要のない抽選です。fairdraw は、公開されている drand の乱数ビーコンから当選者を選びます。当選者の名前は、公開された drand ラウンドの乱数と応募者リストのみから決まるため、抽選後は誰でも手作業で順位を再計算し、発表された当選者がビーコンによって実際に選ばれた人であることを確認できます。

結果の決定方法:

  1. 応募者リストから重複を削除し、並べ替えます。
  2. 各応募者のスコアを sha256(randomness + "|" + entrant)(16 進ダイジェスト)で計算します。
  3. スコアの低い順に応募者を順位付けします。スコアが最も低い人から、順位順に当選します。

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。