关于 SeedBase — Synthetic Test Data
SeedBase 为数据库项目生成了解析架构、可复现的合成测试数据。其 MCP 服务可让 AI 助手导入架构、查看 DDL,并生成符合外键关系的 SQL 数据集。
主要功能
- 01列出并创建项目
- 02导入 SQL、CSV、JSON 或 ORM 架构
- 03按方言获取架构 DDL
- 04生成可设种子的外键一致 SQL 数据
- 05将大型结果写入本地文件
适用场景
- 01为数据库测试准备真实感数据
- 02将现有架构导入 SeedBase
- 03为开发或 CI 生成可复现数据集
MCP 相关
该包内含 MCP 服务,提供项目列表与创建、架构导入、DDL 获取和测试数据生成等五种工具。它可通过 stdio 本地运行,也可连接托管的 Streamable-HTTP 端点。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://seedba.se/mcpclaude mcp add --transport http seedbase-node https://seedba.se/mcp{"mcpServers":{"seedbase-node":{"type":"http","url":"https://seedba.se/mcp"}}}在 Cursor 中打开{"servers":{"seedbase-node":{"type":"http","url":"https://seedba.se/mcp"}}}在 VS Code 中打开{"mcpServers":{"seedbase-node":{"type":"http","url":"https://seedba.se/mcp"}}}{"mcpServers":{"seedbase-node":{"serverUrl":"https://seedba.se/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://seedba.se/mcp需要授权工具
6此工具无需参数。
详细介绍
@seedbase/client
为数据库生成逼真、保留关系且安全保护隐私的测试数据,并将其直接导入本地数据库或 CI 数据库。
Seedbase 位于 seedbase.dev:你可以在此建模(或导入)架构、生成数据集,并使用此软件包将数据集导入 Postgres、MySQL、SQLite 等数据库。它能感知架构、正确处理外键,并可通过种子值复现。
这是 Node.js 客户端,对应于 Python SDK。
安装
npm install @seedbase/client
零运行时依赖——纯 ESM,基于 Node 18+ 的原生 fetch 构建。
快速开始
import { SeedbaseClient } from "@seedbase/client";
// Token from the argument, $SEEDBASE_TOKEN, or ~/.seedbase/config.json
const client = new SeedbaseClient({ token: "dr_sk_..." });
// Trigger a generation and wait for it to finish
const gen = await client.generate(projectId, { seed: 42, wait: true });
// Download the result (Uint8Array)
const bytes = await client.download(gen.id, { format: "sql" });
import { writeFile } from "node:fs/promises";
await writeFile("dump.sql", bytes);
MCP 服务(Claude Code、Claude Desktop 等)
此软件包包含 seedbase-mcp——一个零依赖的 Model Context Protocol
服务,可让 AI 助手为你生成测试数据。描述你的需求(“为我的 Shop 项目填充 MySQL 测试数据”),助手就会通过五个工具端到端地驱动 SeedBase:
| 工具 | 功能 |
|---|---|
list_projects | 列出你的 SeedBase 项目(ID、名称、数据库类型) |
create_project | 创建一个新的空项目 |
import_schema | 从 SQL DDL(原始 pg_dump --schema-only 可用)、CSV/JSON 或 ORM 模型代码导入架构 |
get_ddl | 获取项目架构,按方言生成 CREATE TABLE 语句 |
generate_test_data | 生成新的外键一致数据集,并将其作为 SQL 返回(较大的结果会写入本地文件,不会截断) |
托管服务(零安装)——将任意 Streamable-HTTP MCP 客户端指向
https://seedbase.dev/mcp,并附带 Authorization: Bearer dr_sk_... 标头:
claude mcp add-json seedbase '{"type":"http","url":"https://seedbase.dev/mcp","headers":{"Authorization":"Bearer dr_sk_..."}}'
通过 Claude Code 本地运行(stdio):
claude mcp add-json seedbase '{"type":"stdio","command":"npx","args":["-y","-p","@seedbase/client","seedbase-mcp"],"env":{"SEEDBASE_API_KEY":"dr_sk_..."}}'
Claude Desktop(claude_desktop_config.json):
{
"mcpServers": {
"seedbase": {
"command": "npx",
"args": ["-y", "-p", "@seedbase/client", "seedbase-mcp"],
"env": { "SEEDBASE_API_KEY": "dr_sk_..." }
}
}
}
在 seedbase.dev/register 创建一个免费账户(无需信用卡),然后在 Settings → API keys 下创建 API 密钥。免费套餐足以生成完整且外键一致的数据集。该服务仅支持 stdio,只与 https://seedbase.dev 通信,且不会在本地存储任何内容。
身份验证
令牌按以下顺序解析:
- 传递给构造函数的
token选项。 SEEDBASE_TOKEN环境变量。~/.seedbase/config.json中的token字段(由seedbase login写入)。
带有 dr_sk_ 前缀的 API 密钥会作为 Authorization: Bearer ... 发送,其他令牌则作为 Authorization: Token ... 发送。在
seedbase.dev/settings?tab=api-keys 获取密钥。
API
new SeedbaseClient({
token, // optional, see resolution order above
apiUrl, // default "https://seedbase.dev/api/v1" (https enforced, http only for localhost)
configPath, // override ~/.seedbase/config.json
requestTimeout, // per-request timeout in ms, default 30000
fetch, // inject a custom fetch (e.g. for tests)
});
| 方法 | 描述 |
|---|---|
listProjects() | 所有数据集/项目(自动分页并跟进后续页面)。 |
getProject(projectId) | 获取单个项目。 |
listGenerations(projectId) | 获取项目的生成记录(分页)。 |
getGeneration(generationId) | 获取单条生成记录。 |
generate(projectId, opts) | 触发生成。opts:{ seed, rows, format, rebaseTo, wait, timeout, pollInterval }。设置 wait: true 后,会轮询直到生成状态变为 completed/failed/cancelled。 |
download(generationId, { format }) | 将生成的产物下载为 Uint8Array。format 默认为 "sql"。 |
seededRows(projectId, { seed, rows }) | 生成并按 { tableName: [row, ...] } 的形式返回行,顺序可安全处理外键。 |
exportConfig(projectId) | 以对象形式获取项目的引擎配置。 |
importConfig(projectId, config) | 替换项目的引擎配置。 |
所有方法均为异步方法,并返回 Promise。失败时会抛出 SeedbaseError(HTTP 错误会包含 .statusCode),并附带可读消息,其中包含服务器返回的 detail 或字段错误。
import { SeedbaseError } from "@seedbase/client";
try {
await client.getProject("missing");
} catch (err) {
if (err instanceof SeedbaseError) {
console.error(err.statusCode, err.message);
}
}
Prisma seed
一次调用即可向 Prisma 管理的数据库填充真实且符合外键约束的数据。你的架构必须已存在(由 prisma migrate 管理);SeedBase 只负责填充数据。免费套餐。
// prisma/seed.ts
import { PrismaClient } from "@prisma/client";
import { SeedbaseClient } from "@seedbase/client";
import { seedPrisma } from "@seedbase/client/prisma";
const prisma = new PrismaClient();
const client = new SeedbaseClient({ token: process.env.SEEDBASE_TOKEN });
await seedPrisma(prisma, client, { project: process.env.SEEDBASE_PROJECT, seed: 42 });
然后运行 prisma db seed。可运行的演示(离线运行,无需账户)位于
examples/prisma-seed-demo.mjs。
链接
- 网站:https://seedbase.dev
- 文档:https://seedbase.dev/docs
- API 密钥:https://seedbase.dev/settings?tab=api-keys
采用 MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。