mcpField
F
fairdraw

fairdraw

本地服务
github.com/CloudCorpRecords游戏娱乐01 周前更新

关于 fairdraw

fairdraw 是面向抽奖组织者的 MCP 服务与命令行工具,抽奖结果可由任何人独立验证。它使用公开的 drand 随机数为去重后的参与者排序,并支持即时抽奖和定时揭晓。

主要功能

  1. 01使用 drand 随机数选出获奖者
  2. 02对参与者名单去重并排序
  3. 03将抽奖安排到未来轮次
  4. 04按 ID 验证定时抽奖

适用场景

  1. 01举办可即时验证的抽奖
  2. 02将抽奖结果提交至未来揭晓
  3. 03随机数发布后重新计算获奖者

MCP 相关

它向 MCP 客户端提供工具,可即时选出获奖者、安排基于未来 drand 轮次的抽奖,并验证定时抽奖结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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) 为每位参与者计算分数(十六进制摘要)。
  3. 按分数从低到高排列参与者,最低分获胜,并按排名顺序产生获胜者。

这三个工具:

  • 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

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。