mcpField
S
seedgen

seedgen

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 seedgen

seedgen 是一款本地生成器,面向需要可复现数据的开发者,用于创建测试夹具和数据库种子记录。字段规格与数字种子共同决定输出,因此多次运行结果一致。

主要功能

  1. 01根据数字种子确定性生成
  2. 02支持七种字段类型
  3. 03可设范围、长度、选项和日期
  4. 04按声明顺序输出 JSON 字段
  5. 05验证错误指出输入路径

适用场景

  1. 01创建可重复的测试夹具
  2. 02生成开发用数据库种子行
  3. 03在 CI 和不同机器上复现相同记录

MCP 相关

MCP 服务端提供`generate_seed_data`工具,接收种子、记录数量和字段规格,并返回生成的记录。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-seedgen": {
"command": "npx",
"args": [
"-y",
"@reneturcios/seedgen"
]
}
}
}
启动命令npx -y @reneturcios/seedgen

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/seedgen0.1.0
ocighcr.io/cloudcorprecords/seedgen:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
seedinteger是固定 PRNG 的种子(无符号 32 位整数)
countinteger是要生成的记录数(1..1000)
fieldsarray是字段规范,按输出顺序排列(至少一个)

详细介绍

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

评论

支持 Markdown

第一次接触 MCP?

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

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