MetaEngine について
MetaEngineは、JSONレシピ、型グラフ、APIスキーマから関連するソースファイルを生成するMCPサーバーです。モデルや型付きクライアントを作る開発者向けで、型参照による関連付けと11言語に対応しています。
主な機能
- 01簡潔なJSONレシピからファイルを生成
- 02一括生成内で関連型を解決
- 03OpenAPI、GraphQL、Protobuf、SQLから生成
- 0411のプログラミング言語でモデルを生成
- 05対応フレームワーク向けの型付きクライアントを生成
- 06出力をプレビューまたはローカルに書き込み
活用シーン
- 01型グラフから関連モデルファイルを作成
- 02APIスキーマから型付きクライアントを生成
- 03レシピでテンプレートとローカルJSON入力を再利用
MCP 対応
stdioのMCPサーバーは、レシピや型グラフからの生成、スキーマに基づくクライアント生成、ローカル仕様ファイルの読み込みを提供します。展開した生成データをホスト型のMetaEngine APIに送り、ソースファイルを受け取ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| enums | array | いいえ | 列挙型の定義 |
| dryRun | boolean | いいえ | プレビューモードです。ファイルをディスクに書き込まず、生成されたコードを返します。true の場合、確認用にファイルの内容がレスポンスに含まれます。 |
| classes | array | いいえ | クラス定義(通常クラスとジェネリッククラステンプレート) |
| language | enum | はい | 変換先のプログラミング言語typescript | python | go | csharp | java | kotlin | groovy | scala | swift | php | rust |
| arrayTypes | array | いいえ | 配列型定義。IArrayType 参照を作成します(ファイルは生成されません)。再利用可能な配列定義に使用します。 |
| initialize | boolean | いいえ | プロパティをデフォルト値で初期化するかどうか |
| interfaces | array | いいえ | インターフェース定義(通常のインターフェースとジェネリックインターフェーステンプレート) |
| outputPath | string | いいえ | ファイルを書き込む出力ディレクトリのパスです。デフォルトは現在のディレクトリです。 |
| customFiles | array | いいえ | カスタムファイル(ユーティリティファイル、型エイリアス、バレルエクスポート)です。クラスラッパーなしでファイルを生成します。型エイリアスやユーティリティ関数に最適です。 |
| packageName | string | いいえ | 生成コードのパッケージ/モジュール/名前空間名です。デフォルト値は言語によって異なります。Go='github.com/metaengine/demo'、Java/Kotlin/Groovy='com.metaengine.generated'。C# では、省略または空にすると名前空間宣言が生成されません(GlobalUsings に適しています)。 |
| skipExisting | boolean | いいえ | 既存ファイルへの書き込みをスキップします(スタブパターンに便利です)。true の場合、新しいファイルのみ作成します。 |
| dictionaryTypes | array | いいえ | ディクショナリ型定義 — IDictionaryType 参照を作成します(ファイルは生成されません)。キーと値のプリミティブ型/カスタム型の全 4 通りの組み合わせに対応します。 |
| typeScriptOptions | object | いいえ | TypeScript 専用のレンダリングオプションです。省略すると、従来の拡張子なし相対インポートが維持されます。 |
| typeScriptOptions.relativeImportExtension | enum | いいえ | Node16/NodeNext の ESM ソースでは 'js' を使用してください。生成された .ts ファイルは、実行時の .js 指定子で相対モジュールをインポートします。'none' は拡張子なしのインポートを維持します。none | js |
| concreteGenericClasses | array | いいえ | 具象ジェネリック実装(Repository<User>)— インライン型参照を作成し、ファイルは生成しません |
| concreteGenericInterfaces | array | いいえ | 具象ジェネリックインターフェース実装(IRepository<User>)— インライン型参照を作成し、ファイルは生成しません |
| skipEnumMembersValidation | boolean | いいえ | 生成エンジンでの列挙型メンバー検証をスキップします。 |
詳細
MetaEngine MCP サーバー
MCP クライアントから、型グラフ、簡潔な JSON レシピ、または API スキーマを基に関連するソースファイルを生成します。
MetaEngine は、構造化されたクラス、インターフェース、列挙型、コレクション、ジェネリクスと、customCode で指定するターゲット言語のコードを組み合わせます。明示的な参照によってそのコードを同じ型グラフに接続するため、ジェネレーターはバッチ内の名前とインポートを解決できます。モデル、サービス、アダプターなど、記述した構造の生成に使用できます。この形式では、アプリケーションアーキテクチャを規定しません。
インストール
Node.js 18 以降が必要です。MCP クライアントの設定にサーバーを追加します。
{
"mcpServers": {
"metaengine": {
"command": "npx",
"args": ["-y", "@metaengine/[email protected]"]
}
}
}
Claude Code の場合:
claude mcp add metaengine -- npx -y @metaengine/[email protected]
ホスト型サービスの利用に API キーやアカウントは不要です。MCP クライアントには Claude Code、Claude Desktop、Cursor、Cline など、stdio に対応するものがあります。
レシピから始める
次の引数を指定して generate_from_recipe を呼び出します。
{
"recipe": {
"recipeVersion": 1,
"language": "typescript",
"typeScriptOptions": { "relativeImportExtension": "js" },
"classes": [
{ "name": "Customer", "id": "customer", "properties": { "id": "string", "name": "string" } },
{ "name": "Order", "properties": { "customer": { "ref": "customer" }, "total": "number", "note?": "string" } }
]
},
"outputPath": "src/models"
}
ローカルの MCP サーバーがレシピを既存の生成ペイロードに展開し、そのペイロードを MetaEngine API に送信して、返されたファイルを書き込みます。構造を繰り返し使用する場合は、名前付きテンプレートとパラメーター行を追加します。既存の customCode、templateRefs、インポート、デコレーター、継承、ジェネリック定義も引き続き使用できます。
バージョン管理されたレシピは、{"recipeFilePath":"specs/models.recipe.json"} で呼び出せます。ファイルから読み込めば、ツール呼び出しで内容を再送信する必要がありません。ただし、ファイルの作成やメンテナンスは必要です。
ツール
| ツール | 目的 |
|---|---|
generate_from_recipe | 簡潔な JSON フィールド、名前付きテンプレート、ローカルの JSON 入力行を既存の型グラフに展開し、ファイルを生成します。 |
generate_code | 明示的な参照を含む任意のターゲット言語コードなど、完全なネイティブ JSON 型グラフから生成します。 |
load_spec_from_file | ローカルの JSON ファイルからネイティブの generate_code ペイロードを読み込みます。 |
generate_openapi | インラインまたは URL で指定された OpenAPI ドキュメントから、型付きクライアントを生成します。 |
generate_graphql | 任意の名前付きフラグメントを含む GraphQL SDL から、型付きクライアントを生成します。 |
generate_protobuf | Protocol Buffers の定義から、型付きクライアントを生成します。 |
generate_sql | SQL DDL からモデル型を生成します。 |
metaengine_initialize | アシスタント向けに生成ルールと言語に関する説明を読み込みます。 |
型とモデルの生成は、TypeScript、Python、Go、C#、Java、Kotlin、Groovy、Scala、Swift、PHP、Rust に対応しています。クライアント生成では、Angular、React、TypeScript Fetch、Go net/http、Java Spring、Python httpx、C# HttpClient、Kotlin Ktor、Rust Reqwest、Swift URLSession を対象にできます。
generate_code、load_spec_from_file、generate_from_recipe は、生成とファイル書き込みの動作を共有します。
outputPathはローカルの出力ディレクトリを指定します。デフォルトは MCP サーバーの作業ディレクトリです。skipExistingのデフォルトはtrueです。生成済みファイルを上書きするにはfalseに設定します。dryRun: trueは、書き込みを行わずに生成ファイルの内容を返します。生成時には引き続きホスト型 API が呼び出されます。- 関連する型の参照は、1 つのバッチ内で解決されます。その呼び出しに完全なグラフを含めてください。
- ホスト型サービスでは、1 回の生成リクエストにつきカウント対象の型を 250 個まで指定できます。正確なカウント方法についてはレシピガイドを参照してください。
Node16/NodeNext の TypeScript ESM では、typeScriptOptions: {"relativeImportExtension":"js"} を使用してください。その他の TypeScript 出力では、デフォルトで拡張子のない相対インポートが使用されます。
レシピが役立つ場面
フィールドマップを使うと、繰り返されるプロパティのメタデータを省けます。テンプレートでは、繰り返し使う構造を一度だけ記述し、明示的なパラメーター値を割り当てます。ローカルの JSON 入力を使えば、すでに管理しているファイルからそれらの値を指定できます。アダプターはレシピ内の JavaScript を実行しません。
削減効果は、繰り返しの量、選択したモデルとトークナイザー、周囲のエージェントのワークフローによって異なります。独自のビジネスロジックは引き続き記述する必要があります。記録済みの開発用フィクスチャでは、59 個のインターフェースを含むレシピと展開後のペイロードを比較しています。測定するのは JSON のバイト数であり、モデルのトークン数や利用上限の保証ではありません。
コンパクトな形式では、一般的な宣言に対して読みやすいパスを維持し、高度なコードには既存のネイティブフィールドを使用します。ネイティブ型の式と customCode は、対象言語に固有のままです。依存関係やコンパイラー設定も含め、生成されたコードをプロジェクト内でレビューし、コンパイルしてください。
プライバシーと実行
ローカルの MCP サーバーは stdio 経由で動作し、レシピの展開、宣言されたローカルファイルの読み取り、生成ファイルの書き込みを行います。ホストされている MetaEngine API は、展開された生成ペイロードを一時的に処理し、ソースファイルを返します。
サーバーが既存のプロジェクトソースファイルを自動的にスキャンまたはアップロードすることはありません。生成リクエストに明示的に含めたソースや customCode の内容は、そのリクエストの一部としてホストされている MetaEngine API に送信されます。レシピ入力から読み取った値は、レシピがそれらを展開後のペイロードで使用する場合にのみ含まれます。
送信された生成コンテンツと生成ファイルの内容は保存もログ記録もされませんが、匿名化された運用メタデータは保持されます。処理と保持の詳細については、プライバシーポリシーと利用規約をご覧ください。
記録済みエージェントのワークフロー
1 回の MCP 呼び出しで多数のファイルを生成できるため、必要なツール操作を減らせます。モデルの応答は別途測定されます。記録済みの TypeScript 実行では、Opus は多くの場合、応答ごとに 1 回の Write を発行しましたが、Sonnet は通常、複数の Write をまとめていました。修正済みのベンチマーク結果では、それぞれの回数を分けて示し、出力トークンの合計数と合格率も掲載しています。
言語、モデル、仕様の形状をまたいで再現可能な測定を行うには、benchmark/をご覧ください。プロンプト、評価ツール、15 個の標準結果フォルダーを含む、自己完結型のハーネスです。掲載されている数値は、ある著者が各条件 N=5 で実行した際の例です。ご自身の環境で再現し、どの結果が当てはまるかをご確認ください。
リンク
ライセンス
MIT
このリポジトリについて
このリポジトリには、MetaEngine MCP Server の公開ドキュメント、サンプル、ベンチマーク、課題追跡が含まれています。コンパイル済みの npm パッケージは @metaengine/mcp-server から入手できます。サーバーの実装は非公開リポジトリで保守されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。