关于 seedgen
seedgen 是一款本地生成器,面向需要可复现数据的开发者,用于创建测试夹具和数据库种子记录。字段规格与数字种子共同决定输出,因此多次运行结果一致。
主要功能
- 01根据数字种子确定性生成
- 02支持七种字段类型
- 03可设范围、长度、选项和日期
- 04按声明顺序输出 JSON 字段
- 05验证错误指出输入路径
适用场景
- 01创建可重复的测试夹具
- 02生成开发用数据库种子行
- 03在 CI 和不同机器上复现相同记录
MCP 相关
MCP 服务端提供`generate_seed_data`工具,接收种子、记录数量和字段规格,并返回生成的记录。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| seed | integer | 是 | 固定 PRNG 的种子(无符号 32 位整数) |
| count | integer | 是 | 要生成的记录数(1..1000) |
| fields | array | 是 | 字段规范,按输出顺序排列(至少一个) |
详细介绍
seedgen
测试夹具和数据库种子行往往要么是手动输入的(数量少、过时,而且往往无法代表实际情况),要么是随机生成的(每次运行都不同,因此失败的测试无法复现)。seedgen 采用第二种方式,但没有它的缺点:你只需声明记录的形状——字段名称和类型、范围、长度、可选值、日期区间——再提供一个数字种子,它就会生成该种子所对应的记录。下周、在另一台机器上或在 CI 中再次运行:输出都完全相同,因为生成器使用固定的 PRNG(mulberry32),并按固定顺序消耗随机数——逐条记录、逐个字段,顺序与你声明字段的顺序一致。
七种字段类型涵盖了常见的测试夹具需求:
- integer —
min到max之间的整数,包含两个边界(默认值为 0 和 100) - number —
min到max之间的小数(默认值为 0 和 1),四舍五入到小数点后 4 位 - boolean — true 或 false
- string — 由小写字母组成的字符串,包含
length个字符(默认值为 8,最多 64 个) - enum — 你提供的
values之一 - email —
@example.com前包含 8 个字母的本地部分 - date —
from到to之间的实际日历日期,包含两端(默认范围涵盖 2020 年),按 UTC 计算并格式化为YYYY-MM-DD
字段类型不使用的属性会被忽略,而不是被拒绝——在 boolean 字段上多写一个 min 不会改变任何内容。真正格式错误的输入会产生验证错误,并指出出错路径(例如 fields[1].values must be a non-empty array):超出无符号 32 位范围的种子、超出 1..1000 范围的数量、重复字段名称、非整数的整数边界、上下界颠倒、2021-02-29 这类虚构的日历日期。发生任何错误时,都不会生成任何内容——不会返回不完整的记录集。计算是纯本地操作:不访问网络、不需要配置,也不会读取你传入的输入之外的文件。
命令行
npx @reneturcios/seedgen generate --input args.json
npx @reneturcios/seedgen --version
args.json 包含完整的参数对象:
{
"seed": 42,
"count": 3,
"fields": [
{ "name": "id", "type": "integer", "min": 1, "max": 10 },
{ "name": "code", "type": "string", "length": 4 },
{ "name": "active", "type": "boolean" }
]
}
生成的记录集会以 JSON 格式输出——{seed, count, records},每条记录都按声明顺序包含所声明的字段:
{
"seed": 42,
"count": 3,
"records": [
{ "id": 7, "code": "lwre", "active": false },
{ "id": 3, "code": "qwmg", "active": false },
{ "id": 8, "code": "hfnr", "active": false }
]
}
退出代码:成功时为 0,运行时出错时为 1(包括输入文件无法读取或无效,以及输入无效),用法错误时为 2。
MCP 服务
npx -y @reneturcios/seedgen mcp
MCP 客户端配置:
{
"mcpServers": {
"seedgen": {
"command": "npx",
"args": ["-y", "@reneturcios/seedgen", "mcp"]
}
}
}
工具
-
generate_seed_data— 根据字段规格和数字种子生成确定性的种子记录。seed(整数,必填)— 固定 PRNG 使用的无符号 32 位种子count(整数,必填)— 要生成的记录数量(1..1000)fields(数组,必填,至少一个元素)— 格式为{name, type, ...}的字段规格对象;所有规格中的name必须唯一,type必须是 integer、number、boolean、string、enum、email 或 date 之一,其余属性(min、max、length、values、from、to)用于调整相应类型的字段
返回
{seed, count, records}。
Docker
docker run -i ghcr.io/cloudcorprecords/seedgen
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/seedgen generate --input /w/args.json
开发
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
许可证
MIT — 版权所有 (c) 2026 Rene Turcios
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。