Backgen Mcp について
Backgen Mcp は、ORM、プリセット、プラグイン、コード生成機能を選んで Express.js のバックエンドを生成するコマンドラインツールです。内蔵 MCP サーバーにより、AI ツールからプロジェクトやリソース、プラグインを操作できます。
主な機能
- 01Express と TypeScript のバックエンド生成
- 02Prisma、Drizzle、Mongoose の選択
- 03ドメインプリセットとプラグインの適用
- 04CRUD リソースとルートの生成
- 05シードデータとテストファクトリーの作成
- 06生成済みプロジェクトの診断と更新
活用シーン
- 01ORM を使った SaaS バックエンドの構築
- 02認証または決済プラグインの追加
- 03リソース用 CRUD モジュールの生成
- 04BackGen プロジェクトの診断や更新
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 | いいえ | 1 つのコマンドで複数の構成済みリソースを生成するドメインプリセットです。JWT 認証を自動インストールします。各プリセットの内容を確認するには、先に list_presets を呼び出してください。例:マルチテナント組織向けの 'saas-core'、患者/医師/予約向けの 'healthcare'。saas-core | saas | healthcare | ecommerce | crm | lms |
| defaults | boolean | いいえ | デフォルトのオプションを使用します(非対話モード)。AI での使用や自動化に推奨されます。ユーザーに選択肢を 1 つずつ対話形式で尋ねる場合に限り、false に設定してください。 |
| skipInstall | boolean | いいえ | npm install をスキップします。CI パイプライン、簡易的なスキャフォールディングのデモ、または後で依存関係を手動インストールする場合に true を指定します。true の場合は、'npm run dev' の前に 'npm install' を実行するようユーザーに伝えてください。 |
詳細
BackGen
🤖 AI 対応
BackGen には、AI アシスタント(Claude、Cursor、GitHub Copilot、VS Code)がユーザーに代わってプロジェクトをスキャフォールドできる、組み込みの MCP(Model Context Protocol)サーバーが付属しています。
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 は、Prisma、Drizzle、または Mongoose を基盤とする完全な Express.js バックエンドプロジェクトを生成する CLI ツールです。認証、マルチテナントインフラ、本番環境向けの強化、Docker、テストがすべて、すぐに使える状態で含まれています。
npx @ibrahimkhaled19/backgen init my-api --orm drizzle
cd my-api
npm run dev
60 秒以内に http://localhost:3000/docs で Swagger ドキュメントを確認できます。ORM を選んだら、あとはそのまま使えます。
機能
- Express + TypeScript — strict モード、ESLint 9(flat config)、Vitest
- マルチ ORM — Prisma、Drizzle、または Mongoose。
init時に選択でき、後からマニフェスト経由で切り替えられます - SaaS 対応 —
saas-coreプリセットには、Organizations、Memberships、Invitations、RBAC、テナントスコープのクエリが含まれます - デフォルトで強化済み — helmet、strict CORS、リクエスト ID、リクエストタイムアウト、xss + mongo-sanitize、グレースフルシャットダウン、
/health+/ready、エラーエンベロープ - プラグインシステム —
backgen add経由で JWT、Clerk、Stripe、S3、ratelimit に対応 - リソースジェネレーター — リレーション、バリデーション、Swagger を含む CRUD モジュール
- ドメインプリセット — saas-core、healthcare、SaaS、ecommerce、CRM、LMS — 1 つのコマンドでドメイン一式を利用できます
- シード&ファクトリージェネレーター — 開発用データとテストファクトリー
- 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 strict モードの 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 | auth | リフレッシュトークン付きの JWT 認証 |
clerk | auth | 認証サービスとしての Clerk(jwt と競合します) |
stripe | payment | Stripe のチェックアウト、Webhook、顧客 |
s3 | storage | AWS S3 へのアップロード、ダウンロード、署名付き URL |
ratelimit | production | Redis 対応ストアを使用した IP ごとのレート制限 |
ci-github | devops | GitHub Actions CI パイプライン(lint、typecheck、test、build、オプションのデプロイ) |
dependabot | devops | Dependabot による依存関係の自動更新 |
codeql | devops | プッシュ時およびスケジュールに基づく CodeQL セキュリティ分析 |
docker-registry | devops | Docker イメージのビルドと GHCR への公開 |
release | devops | npm publish と GitHub リリースを使用したセマンティックリリース |
競合の検出: jwt と clerk は同時にインストールできません。
ドメインプリセット
1 つのコマンドでドメイン全体を生成します。各プリセットは、リレーション付きの複数のリソースを作成し、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 に自動登録されます。
ダッシュボード、レポート、Webhook、カスタムアクションなど、CRUD パターンに当てはまらないカスタムエンドポイントが必要な場合に使用してください。標準的な 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 との主な違い:
- データベースモデル、リポジトリ、テストファイルは生成されません
- フィールドの指定は不要です
- カスタムエンドポイント向けの純粋なコントローラー/サービスパターンです
- 完全な Swagger ドキュメント付きで
/api/<name>にマウントされます
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 を stdio 経由で MCP サーバーとして起動します。AI アシスタント(Claude、Cursor、VS Code)がプログラムからプロジェクトをスキャフォールディングする際に使用します。
backgen mcp
これは、npx @ibrahimkhaled19/backgen backgen-mcp バイナリ経由で公開されるものと同じサーバーです。AI 対応セクションに記載されている 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 スキーマ / 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 シークレットをローテーションします。JWT_SECRET と JWT_REFRESH_SECRET 用に、暗号学的に安全な 256 ビットのランダムな 16 進数値を生成し、現在の .env を .env.backup にバックアップしてから、新しい値を書き込みます。
サーバーを次回再起動すると既存のトークンはすべて直ちに無効化されるため、ユーザーは再ログインする必要があります。
backgen rotate-secrets
実行内容:
crypto.randomBytesを使用して、256 ビットのランダムな 16 進数シークレットを 2 つ生成する- 古い
.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 の include
- シードとファクトリーのジェネレーター(3 種すべての ORM)
- Drizzle:スキーマ生成、クライアント設定、コード生成
- Mongoose:モデル生成、スキーマ定義、接続
- プラグインの削除:ファイル、依存関係、マニフェストのクリーンアップ
- 同期:ファイルの復元
- Doctor:ヘルスチェック、所有権の整合性
- アップグレード:マイグレーションエンジン、保留中の検出、バックアップの作成
- ロールバック:バックアップの一覧表示、ファイルの復元、マニフェストの復旧
- エラー処理:不明なプラグイン、空でないディレクトリ
技術スタック
| レイヤー | 技術 |
|---|---|
| CLI | Commander.js |
| プロンプト | Inquirer.js |
| テンプレート | Handlebars |
| スピナー | Ora |
| 色 | Chalk |
| テスト | Vitest |
| リント | ESLint 9(フラット設定) |
| 言語 | TypeScript(strict) |
生成されるプロジェクト
| レイヤー | 技術 |
|---|---|
| フレームワーク | Express.js |
| 言語 | TypeScript(strict) |
| データベース | 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、e コマース、CRM、LMS に 1 つのコマンドで対応します
- ◈ アップグレードエンジン — 生成されたプロジェクト向けのバージョン管理されたマイグレーション + バックアップ + ロールバック
- ◈ 初日からマルチ ORM に対応 — 1 つのデータレイヤーに縛られません
ロードマップ
| バージョン | 注力分野 | ステータス |
|---|---|---|
| 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。