关于 fairdraw
fairdraw 是面向抽奖组织者的 MCP 服务与命令行工具,抽奖结果可由任何人独立验证。它使用公开的 drand 随机数为去重后的参与者排序,并支持即时抽奖和定时揭晓。
主要功能
- 01使用 drand 随机数选出获奖者
- 02对参与者名单去重并排序
- 03将抽奖安排到未来轮次
- 04按 ID 验证定时抽奖
适用场景
- 01举办可即时验证的抽奖
- 02将抽奖结果提交至未来揭晓
- 03随机数发布后重新计算获奖者
MCP 相关
它向 MCP 客户端提供工具,可即时选出获奖者、安排基于未来 drand 轮次的抽奖,并验证定时抽奖结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| winners | integer | 否 | 要选出的获胜者数量。默认为 1;必须介于 1 和参与者数量之间。 |
| entrants | array | 是 | 参与者姓名。删除重复项,并在排序前对列表排序。 |
详细介绍
fairdraw
一个无需任何人让你相信抽奖结果的抽奖工具。fairdraw 从公开的 drand 随机信标中选出 获胜者:获胜者名单完全由 drand 轮次公布的随机数和参与者名单决定,因此抽奖结束后, 任何人都可以手动重新计算排名,并核实公布的获胜者是否由信标实际产生。
结果的决定方式:
- 对参与者名单去重并排序。
- 使用
sha256(randomness + "|" + entrant)为每位参与者计算分数(十六进制摘要)。 - 按分数从低到高排列参与者,最低分获胜,并按排名顺序产生获胜者。
这三个工具:
pick_winner_now— 立即使用最新的 drand 轮次进行抽奖,并马上获取获胜者(或多位获胜者); 结果中包含轮次编号和随机数的开头,方便重新核验抽奖结果。create_scheduled_draw— 将抽奖封存,等待未来揭晓。 抽奖创建时,会根据链的时间安排提交 drand 轮次: 这是随机数可用时间不早于now + delay_sec的首个轮次。回复中会附带抽奖 ID。verify_draw— 按 ID 查找已安排的抽奖。当其轮次尚未公布时, 你会收到一条注明已提交轮次的待处理说明;轮次公布后, 工具会使用该轮次的随机数重新计算获胜者,并将结果标记为已验证。
已安排的抽奖保存在服务进程的内存中: 它们的生命周期与进程相同,且抽奖 ID 仅对创建它的进程有效。
CLI
每个工具都是一个子命令,接受一个 JSON 参数字符串:
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
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。