关于 Backgen Mcp
Backgen Mcp 是用于生成 Express.js 后端项目的命令行工具,支持选择 ORM、预设、插件和代码生成器。其 MCP 服务让 AI 工具通过注册的工具搭建项目,并管理资源与插件。
主要功能
- 01生成 Express 和 TypeScript 后端
- 02选择 Prisma、Drizzle 或 Mongoose
- 03应用领域预设和插件
- 04生成 CRUD 资源与路由
- 05创建种子数据和测试工厂
- 06检查和升级生成的项目
适用场景
- 01搭建带 ORM 的 SaaS 后端
- 02添加身份验证或支付插件
- 03为资源生成 CRUD 模块
- 04检查或升级 BackGen 项目
MCP 相关
内置 MCP 服务通过 stdio 运行,并注册 10 个工具,用于项目搭建、插件管理、资源生成、诊断和项目信息查询。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dir | string | 否 | 将创建项目文件夹的父目录的绝对路径或相对路径。默认为当前工作目录。示例:'/home/user/projects' 或 'C:\Users\me\projects'。 |
| orm | enum | 否 | 数据库 ORM。prisma(PostgreSQL/MySQL/SQLite,推荐用于关系型数据库)、drizzle(轻量级 SQL,提供更接近 SQL 的控制)、mongoose(MongoDB,面向文档)。未指定时默认为 prisma。prisma | drizzle | mongoose |
| name | string | 是 | 项目名称——用作目录名和 npm 包名称。必须以字母或数字开头。允许使用连字符和下划线。示例:'my-api'、'saas-backend'、'healthcare-api'。 |
| preset | enum | 否 | 领域预设,可通过一条命令生成多个预先配置的资源。自动安装 JWT 身份验证。先调用 list_presets,查看各预设包含的内容。示例:'saas-core' 用于多租户组织,'healthcare' 用于患者/医生/预约。saas-core | saas | healthcare | ecommerce | crm | lms |
| defaults | boolean | 否 | 使用默认选项(非交互模式)。建议用于 AI 和自动化。只有在希望以交互方式逐项询问用户选择时,才设为 false。 |
| skipInstall | boolean | 否 | 跳过 npm install。适用于 CI 流水线、快速脚手架演示,或希望稍后手动安装依赖项的情况。设为 true 时,请提醒用户在运行 'npm run dev' 前先运行 'npm install'。 |
详细介绍
BackGen
🤖 为 AI 做好准备
BackGen 内置了 MCP(Model Context Protocol)服务,AI 助手 (Claude、Cursor、GitHub Copilot、VS Code)可以用它代你搭建项目。
通过 CLI 运行:
backgen mcp
或配置 AI 工具的 MCP 客户端:
{
"mcpServers": {
"backgen": {
"command": "npx",
"args": ["-y", "@ibrahimkhaled19/backgen", "mcp"]
}
}
}
可用的 MCP 工具:
| 工具 | 描述 |
|---|---|
init_project | 使用所选 ORM、预设和插件,搭建全新的生产就绪后端项目 |
add_plugin | 安装插件(jwt、clerk、stripe、s3、ratelimit、ci-github、dependabot、codeql、docker-registry、release) |
remove_plugin | 移除之前安装的插件 |
generate_resource | 生成包含字段、关系、验证和 Swagger 的 CRUD 资源 |
generate_seed | 为资源生成数据库种子文件 |
generate_factory | 为资源生成测试工厂 |
doctor | 检查现有 BackGen 项目是否存在配置问题 |
list_plugins | 列出所有可用插件及其描述 |
list_presets | 列出所有可用的领域预设 |
project_info | 显示清单中的项目元数据 |
然后只需提出需求:“搭建一个使用 Prisma、JWT 身份验证和 Stripe 支付的 SaaS 后端”
BackGen 是一款 CLI 工具,可基于 Prisma、Drizzle 或 Mongoose 生成完整的 Express.js 后端项目,内置身份验证、多租户基础架构、生产环境加固、Docker 和测试,开箱即用。
npx @ibrahimkhaled19/backgen init my-api --orm drizzle
cd my-api
npm run dev
不到 60 秒即可在 http://localhost:3000/docs 查看 Swagger 文档。选择 ORM,其余一切保持不变。
功能特性
- Express + TypeScript — 严格模式、ESLint 9(扁平配置)、Vitest
- 多 ORM 支持 — Prisma、Drizzle 或 Mongoose。可在
init时选择,之后通过清单切换 - 适用于 SaaS —
saas-core预设内置组织、成员关系、邀请、RBAC 和租户范围查询 - 默认加固 — helmet、严格 CORS、请求 ID、请求超时、xss + mongo-sanitize、优雅关闭、
/health+/ready、错误封装 - 插件系统 — 通过
backgen add添加 JWT、Clerk、Stripe、S3、ratelimit - 资源生成器 — 支持关系、验证和 Swagger 的 CRUD 模块
- 领域预设 — saas-core、医疗保健、SaaS、电商、CRM、LMS — 一条命令搭建完整领域
- 种子与工厂生成器 — 开发数据和测试工厂
- Docker — 多阶段 Dockerfile + docker-compose
- Swagger/OpenAPI — 自动生成 API 文档
- 清单 —
.backgenrc.json跟踪 ORM、插件、版本和所有权,支持升级/回滚
快速开始
# Install globally
npm install -g @ibrahimkhaled19/backgen
# Create a project (pick your ORM)
backgen init my-api --orm prisma
backgen init my-api --orm drizzle
backgen init my-api --orm mongoose
# Create a full multi-tenant domain
backgen init my-saas --preset saas-core --defaults
# Add authentication
backgen add jwt
backgen add clerk
# Add production hardening
backgen add ratelimit
# Generate a resource
backgen generate resource Product name:string price:number stock:number
# Start developing
cd my-api
npm run dev
命令
backgen init [name]
生成一个新的后端项目。
backgen init my-api # interactive ORM picker
backgen init my-api --orm prisma # explicit ORM
backgen init my-api --orm drizzle --defaults # Drizzle, non-interactive
backgen init my-api --orm mongoose --skip-install
backgen init my-api --preset saas-core --defaults # full multi-tenant domain
backgen init my-api --preset healthcare # healthcare domain
输出:
- 启用 TypeScript 严格模式的 Express 应用
- 特定于 ORM 的数据层(Prisma / Drizzle / Mongoose)
- 环境变量验证(Zod)
- Swagger/OpenAPI 文档
- Docker + docker-compose
- 默认强化安全性:helmet、CORS、请求 ID、超时、xss + mongo-sanitize、平滑关闭、健康检查
- ESLint 9 + Vitest
.backgenrc.json清单(记录project.orm+ 插件)
默认不包含身份验证——使用 backgen add 选择身份验证提供商。
backgen add [plugin]
安装插件。未提供参数时会显示交互式多选菜单。
backgen add # interactive multi-select
backgen add jwt # JWT authentication
backgen add clerk # Clerk auth-as-a-service
backgen add stripe # Stripe payments
backgen add s3 # AWS S3 storage
backgen add ratelimit # Per-IP / per-user rate limiting
backgen add devops # Install all devops plugins at once
可用插件:
| 插件 | 类别 | 描述 |
|---|---|---|
jwt | 身份验证 | 使用刷新令牌的 JWT 身份验证 |
clerk | 身份验证 | Clerk 身份验证即服务(与 jwt 冲突) |
stripe | 支付 | Stripe 结账、webhook、客户 |
s3 | 存储 | AWS S3 上传、下载、预签名 URL |
ratelimit | 生产环境 | 基于 Redis 就绪型存储的 IP 限流 |
ci-github | devops | GitHub Actions CI 流水线(lint、类型检查、测试、构建,可选部署) |
dependabot | devops | 通过 Dependabot 自动更新依赖项 |
codeql | devops | 在推送时及按计划进行 CodeQL 安全分析 |
docker-registry | devops | 构建 Docker 镜像并发布到 GHCR |
release | devops | 使用 npm 发布和 GitHub releases 的语义化发布 |
冲突检测: jwt 和 clerk 不能同时安装。
领域预设
使用一条命令生成完整的领域。每个预设都会创建多个带关联的资源,自动安装 JWT 身份验证,并将所有内容连接起来。
backgen init my-api --preset healthcare
backgen init my-api --preset saas --defaults
healthcare
Patient、Doctor、Appointment、Prescription、MedicalRecord——患者与医生之间的预约、关联到患者的处方,以及每位患者的医疗记录。
saas
Organization、Team、Membership、Subscription、Invoice——包含团队和成员关系的组织,以及包含发票的订阅。
ecommerce
Category、Product、Cart、Order、OrderItem、Payment——分类中的商品、包含商品的购物车,以及包含订单项和付款的订单。
crm
Contact、Company、Deal、Activity——包含联系人的公司、通过销售流程跟踪的交易,以及活动日志。
lms
Course、Lesson、Enrollment、Progress、Certificate——包含课程的课件、学生选课、进度跟踪和证书。
backgen remove [plugin]
移除插件。未提供参数时会显示交互式多选菜单。支持使用 devops 简写移除所有 devops 插件。
backgen remove # interactive multi-select
backgen remove stripe # remove specific plugin
backgen remove devops # remove all devops plugins
backgen generate resource <name> [fields...]
生成一个 CRUD 资源模块。
# Interactive
backgen generate resource Product
# Non-interactive
backgen generate resource Product name:string price:number stock:number
# With relations
backgen generate resource Appointment date:datetime status:string \
--relations "doctor:Doctor,patient:Patient"
# With --fields flag
backgen generate resource Product --fields "name:string,price:number"
生成的文件:
src/modules/product/
product.controller.ts # CRUD endpoints
product.service.ts # business logic
product.repository.ts # database operations
product.validation.ts # Zod schemas
product.types.ts # TypeScript interfaces
product.routes.ts # route definitions + Swagger
product.test.ts # test placeholder
字段类型: string、number、boolean、date、datetime
关联: doctor:Doctor(belongsTo)、patients:Patient(hasMany)
backgen generate seed <resource>
为开发生成种子数据。
backgen generate seed Product --count 10
输出:prisma/seeds/product.ts(Prisma)、db/seeds/product.ts(Drizzle)或 seeds/product.ts(Mongoose)
backgen generate factory <resource>
生成测试工厂。
backgen generate factory Product
输出:src/factories/product.factory.ts
用法:
import { createProduct } from "./factories/product.factory.js";
const product = await createProduct({ name: "Widget" });
backgen generate route [name]
生成自定义路由模块,包含完整的控制器、服务、验证、类型和路由文件,并附带 Swagger 注解。路由会通过 REGISTER_ROUTES 标记自动注册到 app.ts 中。
当你需要不符合 CRUD 模式的自定义端点(例如仪表盘、报告、webhook、自定义操作)时使用此命令。对于标准 CRUD,请改用 generate resource。
backgen generate route # interactive prompt
backgen generate route reports # generate a /api/reports module
backgen generate route webhooks # generate a /api/webhooks module
生成的文件:
src/modules/reports/
reports.controller.ts # request handlers
reports.service.ts # business logic
reports.validation.ts # Zod schemas
reports.types.ts # TypeScript interfaces
reports.routes.ts # route definitions + Swagger
与 generate resource 的主要区别:
- 不包含数据库模型、repository 或测试文件
- 无需指定字段
- 面向自定义端点的纯控制器/服务模式
- 挂载在
/api/<name>,并附带完整的 Swagger 文档
backgen generate migration [name]
生成数据库迁移(识别 ORM)。
backgen generate migration add-product-table # runs prisma migrate dev / drizzle-kit generate / no-op for Mongoose
backgen sync
将 .backgenrc.json 与项目进行协调。重新生成缺失的插件文件。
backgen sync
backgen mcp
通过标准输入/输出将 BackGen 启动为 MCP 服务。供 AI 助手(Claude、Cursor、VS Code)以编程方式搭建项目。
backgen mcp
这是通过 npx @ibrahimkhaled19/backgen backgen-mcp 二进制文件公开的同一服务。它会注册 AI-Ready 部分中列出的全部 10 个 MCP 工具。
backgen health
显示系统健康信息。
backgen health
显示:
- Node.js 版本
- 平台和架构
- BackGen 版本
backgen doctor
通过所有权完整性诊断检查项目健康状况。
backgen doctor # health check + ownership audit
backgen doctor --fix # auto-fix missing manifest entries
检查项:
- Node.js 版本(>= 18)
- npm 是否可用
- .env 文件
- DATABASE_URL
- Prisma schema / Drizzle 配置 / Mongoose 连接
- 依赖项
- 包管理器版本
- 文件完整性 — 清单跟踪的所有文件是否存在于磁盘上
- 所有权完整性 — 框架文件与用户文件的分类
backgen upgrade
将生成的项目升级到最新模板版本。先创建备份,然后依次应用待处理的迁移。
backgen upgrade # show pending migrations, prompt before applying
backgen upgrade --yes # skip confirmation, apply all pending
执行内容:
- 从
.backgenrc.json读取当前的generatedVersion - 加载待处理的核心迁移和插件迁移
- 在
.backgen/backups/pre-<version>/中创建备份 - 按顺序应用迁移(按 semver 排序)
- 更新清单中的所有权注册表和
generatedVersion
backgen rollback
从最近的备份将项目还原到升级前的状态。
backgen rollback # show latest backup, prompt before restoring
backgen rollback --yes # skip confirmation
执行内容:
- 列出
.backgen/backups/中可用的备份 - 还原最近的备份(所有跟踪的文件和清单)
- 项目恢复到升级前的精确状态
backgen rotate-secrets
轮换项目 .env 文件中的 JWT 密钥。生成经过密码学安全处理的 256 位随机十六进制值,用于 JWT_SECRET 和 JWT_REFRESH_SECRET;将当前 .env 备份到 .env.backup,并写入新值。
下次重启服务时,所有现有令牌都会立即失效——用户必须重新登录。
backgen rotate-secrets
执行内容:
- 通过
crypto.randomBytes生成两个 256 位随机十六进制密钥 - 将旧
.env保存到.env.backup - 在新的
.env中将先前的值保留为注释 - 输出更改摘要
插件系统
每个插件都实现 BackGenPlugin 接口:
interface BackGenPlugin {
name: string;
category: string;
description: string;
version: string;
dependencies?: string[];
devDependencies?: string[];
requires?: string[];
conflicts?: string[];
env?: Record<string, string>;
templates: string[];
migrations?: PluginMigration[]; // versioned plugin migration scripts
install(ctx: InstallContext): Promise<void>;
uninstall?(ctx: InstallContext): Promise<void>;
}
插件可以:
- 安装 npm 依赖
- 注入环境变量
- 在 app.ts 中注册路由
- 替换现有中间件
- 添加数据库模型(Prisma / Drizzle / Mongoose)
- 携带用于自身升级的版本化迁移
项目清单
.backgenrc.json 跟踪插件、版本、生成版本和文件所有权:
{
"version": "1.0.0",
"generatedVersion": "1.9.0",
"project": {
"name": "my-api",
"framework": "express",
"database": "postgresql",
"orm": "prisma",
"preset": "saas-core"
},
"plugins": {
"jwt": {
"version": "1.0.0",
"installedAt": "2026-06-01",
"source": "core"
}
},
"files": {
"src/app.ts": { "owner": "shared", "version": "1.9.0" },
"src/server.ts": { "owner": "framework", "version": "1.9.0" },
"src/config/env.ts": { "owner": "framework-editable", "version": "1.9.0" },
"prisma/schema.prisma": { "owner": "user" },
"src/modules/user/user.service.ts": { "owner": "user" },
"docker-compose.yml": { "owner": "shared", "version": "1.9.0" }
}
}
所有权级别:
| 级别 | 描述 | 升级行为 |
|---|---|---|
framework | BackGen 完全拥有 | 可安全覆盖 |
framework-editable | 已生成,但用户可以自定义 | 通过迁移智能合并 |
shared | 已生成骨架,用户可扩展(例如 docker-compose) | 通过迁移感知更新 |
user | 完全由用户拥有 | 永不触碰 |
生成的项目结构
my-api/
├── prisma/ # Prisma ORM only
│ ├── schema.prisma
│ └── seeds/
├── src/db/ # Drizzle ORM only
│ ├── schema/
│ │ └── index.ts
│ └── seeds/
├── src/models/ # Mongoose ORM only
│ └── seeds/
├── src/
│ ├── app.ts # Express app setup
│ ├── server.ts # Server entry point
│ ├── config/
│ │ ├── env.ts # Zod env validation
│ │ ├── database.ts # Prisma client / Drizzle db / Mongoose connection
│ │ └── swagger.ts # Swagger config
│ ├── middleware/
│ │ ├── auth.ts # JWT/Clerk auth
│ │ ├── validate.ts # Zod validation
│ │ ├── error.ts # Global error handler
│ │ └── logger.ts # Request logging
│ ├── modules/
│ │ ├── auth/ # Auth module (if jwt installed)
│ │ ├── stripe/ # Stripe module (if installed)
│ │ └── <resource>/ # Generated resources
│ ├── services/
│ │ └── logger.service.ts # Winston logger
│ ├── utils/
│ │ ├── api-error.ts # Error class
│ │ ├── async-handler.ts # Async wrapper
│ │ └── response.ts # Response formatters
│ └── factories/ # Test factories
├── .env.example
├── .backgenrc.json # Manifest
├── Dockerfile
├── docker-compose.yml
├── package.json
└── tsconfig.json
开发
# Clone
git clone https://github.com/your-username/backgen.git
cd backgen
# Install
npm install
# Build
npm run build
# Test
npm run test
# Lint
npm run lint
测试套件
涵盖 277+ 项测试:
- CLI 帮助和版本
- 初始化:项目结构、配置、清单(全部 3 种 ORM)
- 使用领域预设初始化:预设专属资源和关系
- 使用 saas-core 预设初始化:多租户组织、成员关系、RBAC
- 添加插件:文件、路由、环境变量、清单(V4.6 插件套件)
- 生成资源:模块文件、ORM 模型、路由、验证
- 生成关联:外键、ORM 包含项
- Seed 和工厂生成器(全部 3 种 ORM)
- Drizzle:模式生成、客户端设置、代码生成
- Mongoose:模型生成、模式定义、连接
- 移除插件:清理文件、依赖项和清单
- 同步:恢复文件
- Doctor:健康检查、所有权完整性
- 升级:迁移引擎、待处理检测、备份创建
- 回滚:备份列表、文件恢复、清单恢复
- 错误处理:未知插件、非空目录
技术栈
| 层 | 技术 |
|---|---|
| CLI | Commander.js |
| 提示词 | Inquirer.js |
| 模板 | Handlebars |
| 加载指示器 | Ora |
| 颜色 | Chalk |
| 测试 | Vitest |
| 代码检查 | ESLint 9(扁平配置) |
| 语言 | TypeScript(严格模式) |
生成的项目
| 层 | 技术 |
|---|---|
| 框架 | Express.js |
| 语言 | TypeScript(严格模式) |
| 数据库 | PostgreSQL |
| ORM | Prisma / Drizzle / Mongoose |
| 验证 | Zod |
| 身份验证 | JWT 或 Clerk |
| 支付 | Stripe |
| 存储 | AWS S3 |
| 文档 | Swagger/OpenAPI |
| 日志记录 | Winston + Morgan |
| 测试 | Vitest |
| 部署 | Docker |
BackGen 与替代方案对比
| 工具 | ORM 选择 | 身份验证 | 插件系统 | 预设 | 升级引擎 | 文档站点 |
|---|---|---|---|---|---|---|
| BackGen | Prisma、Drizzle、Mongoose | JWT、Clerk | ◈ 7+ 个插件 | 5 个领域 | ◈ 备份 + 回滚 | — |
| NestJS CLI | 否(固定为 NestJS) | 内置 | ◈ 模块 | — | — | ◈ |
| Express Generator | 否(固定为纯 JS) | — | — | — | — | — |
| T3 Stack | Prisma | NextAuth | — | — | — | ◈ |
| AdonisJS | Lucid ORM | 内置 | ◈ Ace | — | — | ◈ |
| LoopBack | 内置 | 内置 | ◈ | — | — | ◈ |
主要差异:
- ◈ 可切换 ORM — 通过清单切换 Prisma ↔ Drizzle ↔ Mongoose,无需重写
- ◈ 领域预设 — 一条命令即可使用医疗保健、SaaS、电商、CRM、LMS 预设
- ◈ 升级引擎 — 为生成的项目提供版本化迁移 + 备份 + 回滚
- ◈ 从第一天起支持多种 ORM — 不会被锁定在单一数据层
路线图
| 版本 | 重点 | 状态 |
|---|---|---|
| V1 | 基础 | 已完成 |
| V2 | 插件系统 | 已完成 |
| V3 | 资源生成器 | 已完成 |
| V4 | 领域预设 | 已完成 |
| V4.5 | SaaS 基础功能 | 已完成 |
| V4.6 | 生产环境强化 | 已完成 |
| V4.6.1 | 默认启用基础强化 | 已完成 |
| V5 | 多种 ORM(Prisma、Drizzle、Mongoose) | 已完成 |
| V6 | DevOps 与基础设施 | 已完成 |
| V6.1 | 所有权跟踪与 Doctor --fix | 已完成 |
| V6.2 | 升级引擎与迁移运行器 | 已完成 |
| V6.3 | 备份与回滚 | 已完成 |
| V6.4 | 插件迁移 | 已完成 |
| V7 | 升级优化与差异比对 | 进行中 |
| V8 | 模式优先开发 | 计划中 |
| V9 | 企业功能 | 计划中 |
| V10 | 插件编写 SDK | 计划中 |
| V11 | 市场 | 计划中 |
| V12 | AI 上下文层 | 计划中 |
详情请参阅 docs/ROADMAP.md。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。