mcpField
B
Backgen Mcp

Backgen Mcp

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

关于 Backgen Mcp

Backgen Mcp 是用于生成 Express.js 后端项目的命令行工具,支持选择 ORM、预设、插件和代码生成器。其 MCP 服务让 AI 工具通过注册的工具搭建项目,并管理资源与插件。

主要功能

  1. 01生成 Express 和 TypeScript 后端
  2. 02选择 Prisma、Drizzle 或 Mongoose
  3. 03应用领域预设和插件
  4. 04生成 CRUD 资源与路由
  5. 05创建种子数据和测试工厂
  6. 06检查和升级生成的项目

适用场景

  1. 01搭建带 ORM 的 SaaS 后端
  2. 02添加身份验证或支付插件
  3. 03为资源生成 CRUD 模块
  4. 04检查或升级 BackGen 项目

MCP 相关

内置 MCP 服务通过 stdio 运行,并注册 10 个工具,用于项目搭建、插件管理、资源生成、诊断和项目信息查询。

配置

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

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

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

安装包
npm@ibrahimkhaled19/backgen1.14.0

工具

10

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

参数类型必填说明
dirstring否将创建项目文件夹的父目录的绝对路径或相对路径。默认为当前工作目录。示例:'/home/user/projects' 或 'C:\Users\me\projects'。
ormenum否数据库 ORM。prisma(PostgreSQL/MySQL/SQLite,推荐用于关系型数据库)、drizzle(轻量级 SQL,提供更接近 SQL 的控制)、mongoose(MongoDB,面向文档)。未指定时默认为 prisma。prisma | drizzle | mongoose
namestring是项目名称——用作目录名和 npm 包名称。必须以字母或数字开头。允许使用连字符和下划线。示例:'my-api'、'saas-backend'、'healthcare-api'。
presetenum否领域预设,可通过一条命令生成多个预先配置的资源。自动安装 JWT 身份验证。先调用 list_presets,查看各预设包含的内容。示例:'saas-core' 用于多租户组织,'healthcare' 用于患者/医生/预约。saas-core | saas | healthcare | ecommerce | crm | lms
defaultsboolean否使用默认选项(非交互模式)。建议用于 AI 和自动化。只有在希望以交互方式逐项询问用户选择时,才设为 false。
skipInstallboolean否跳过 npm install。适用于 CI 流水线、快速脚手架演示,或希望稍后手动安装依赖项的情况。设为 true 时,请提醒用户在运行 'npm run dev' 前先运行 'npm install'。

详细介绍

BackGen

CI npm 版本 许可证:MIT

npm 下载量 GitHub 星标

🤖 为 AI 做好准备

BackGen MCP 服务 BackGen MCP 服务

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 正在生成 Express.js 后端,使用 Prisma、Drizzle 和 Mongoose,包含 Swagger 文档、Docker、身份验证和多租户 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-githubdevopsGitHub Actions CI 流水线(lint、类型检查、测试、构建,可选部署)
dependabotdevops通过 Dependabot 自动更新依赖项
codeqldevops在推送时及按计划进行 CodeQL 安全分析
docker-registrydevops构建 Docker 镜像并发布到 GHCR
releasedevops使用 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" }
  }
}

所有权级别:

级别描述升级行为
frameworkBackGen 完全拥有可安全覆盖
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:健康检查、所有权完整性
  • 升级:迁移引擎、待处理检测、备份创建
  • 回滚:备份列表、文件恢复、清单恢复
  • 错误处理:未知插件、非空目录

技术栈

层技术
CLICommander.js
提示词Inquirer.js
模板Handlebars
加载指示器Ora
颜色Chalk
测试Vitest
代码检查ESLint 9(扁平配置)
语言TypeScript(严格模式)
生成的项目
层技术
框架Express.js
语言TypeScript(严格模式)
数据库PostgreSQL
ORMPrisma / Drizzle / Mongoose
验证Zod
身份验证JWT 或 Clerk
支付Stripe
存储AWS S3
文档Swagger/OpenAPI
日志记录Winston + Morgan
测试Vitest
部署Docker

BackGen 与替代方案对比

工具ORM 选择身份验证插件系统预设升级引擎文档站点
BackGenPrisma、Drizzle、MongooseJWT、Clerk◈ 7+ 个插件5 个领域◈ 备份 + 回滚—
NestJS CLI否(固定为 NestJS)内置◈ 模块——◈
Express Generator否(固定为纯 JS)—————
T3 StackPrismaNextAuth———◈
AdonisJSLucid ORM内置◈ Ace——◈
LoopBack内置内置◈——◈

主要差异:

  • ◈ 可切换 ORM — 通过清单切换 Prisma ↔ Drizzle ↔ Mongoose,无需重写
  • ◈ 领域预设 — 一条命令即可使用医疗保健、SaaS、电商、CRM、LMS 预设
  • ◈ 升级引擎 — 为生成的项目提供版本化迁移 + 备份 + 回滚
  • ◈ 从第一天起支持多种 ORM — 不会被锁定在单一数据层

路线图

版本重点状态
V1基础已完成
V2插件系统已完成
V3资源生成器已完成
V4领域预设已完成
V4.5SaaS 基础功能已完成
V4.6生产环境强化已完成
V4.6.1默认启用基础强化已完成
V5多种 ORM(Prisma、Drizzle、Mongoose)已完成
V6DevOps 与基础设施已完成
V6.1所有权跟踪与 Doctor --fix已完成
V6.2升级引擎与迁移运行器已完成
V6.3备份与回滚已完成
V6.4插件迁移已完成
V7升级优化与差异比对进行中
V8模式优先开发计划中
V9企业功能计划中
V10插件编写 SDK计划中
V11市场计划中
V12AI 上下文层计划中

详情请参阅 docs/ROADMAP.md。


许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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