2d Games Assets Generator について
2d-assets-mcpは、ゲーム開発者がビジュアルやゲームプレイを試作するための、設定可能なPNGプレースホルダー画像を生成します。個別素材とスプライトシートに対応し、視覚機能のないAIモデルが参照できるJSONメタデータを埋め込みます。
主な機能
- 01設定可能なPNGプレースホルダーを生成
- 02個別素材またはスプライトシートを作成
- 03グラデーション、パターン、透明度、文字を適用
- 04一部を塗りつぶした体力バーや進捗バーを作成
- 05JSON素材メタデータの埋め込みと読み取り
活用シーン
- 01最終アート制作前にゲームUIを試作
- 02スプライトシートでアニメーションのタイミングを検証
- 03キャラクターやアイテムの仮素材を作成
- 04視覚機能のないAIに素材の説明を参照させる
MCP 対応
PNG素材や一括素材を生成し、埋め込みメタデータを読み取るツールをMCPクライアントに提供します。生成ファイルは指定されたディレクトリに書き込まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| filename | string | はい | ファイル名。例:'player_idle.png' |
| directory | string | はい | 対象プロジェクトフォルダーの絶対パス |
| text | string | はい | アセットに表示するテキスト |
| assetDescription | string | いいえ | 画像メタデータとして保存される、このアセットの人間が読める説明。視覚機能のないモデルが後でアセットを理解するのに役立ちます。例:'Player idle placeholder, blue rectangle 128x128' |
| color | string | はい | 背景色の 16 進数コード。例:'#FF5733' |
| width | number | いいえ | 幅(ピクセル)。指定がない場合のデフォルトは 128 です。 |
| height | number | いいえ | 高さ(ピクセル)。指定がない場合のデフォルトは 128 です。 |
| shape | enum | いいえ | アセットの幾何学的な形状。指定がない場合のデフォルトは長方形です。rectangle | rounded-rectangle | circle |
| opacity | number | いいえ | 背景形状の不透明度。0.0(透明)から 1.0(不透明)まで指定します。指定がない場合のデフォルトは 1.0 です。 |
| fillPercent | number | いいえ | アセットの塗りつぶし率。体力バーや進捗バーに便利です(0~100)。デフォルトは 100 です。 |
| trackColor | string | いいえ | fillPercent < 100 の場合に、アセットの未塗りつぶし部分に使う背景色。16 進数コード。例:'#333333' |
| textPosition | enum | いいえ | テキストの垂直方向の配置。指定がない場合のデフォルトは中央です。center | top | bottom |
| fontSize | number | いいえ | ピクセル単位で明示的に指定するフォントサイズ(省略可能)。省略すると、収まるように自動調整されます。 |
| strokeColor | string | いいえ | アセットの枠線のカラーコード(16進数)。指定がない場合、デフォルトは #000000 です。 |
| strokeWidth | number | いいえ | アセットの枠線の幅(ピクセル単位)。枠線なしにするには 0 を設定します。指定がない場合、デフォルトは 4 です。 |
| textRotation | number | いいえ | テキストの回転角度(度)。指定がない場合、デフォルトは 0 です。 |
| fillMode | enum | いいえ | 背景の塗りつぶしモード。指定がない場合、デフォルトは solid です。solid | linear-gradient | radial-gradient |
| secondaryColor | string | いいえ | グラデーションに使用するセカンダリカラー。省略すると、color から派生した色が使用されます。 |
| gradientAngle | number | いいえ | 線形グラデーションの角度(度)。放射状グラデーションでは無視されます。指定がない場合、デフォルトは 45 です。 |
| pattern | enum | いいえ | 任意のパターンオーバーレイ。指定がない場合、デフォルトは none です。none | stripes | dots | grid |
| patternColor | string | いいえ | パターンの色。省略すると、派生したコントラストカラーが使用されます。 |
| patternOpacity | number | いいえ | パターンオーバーレイの不透明度(0.0~1.0)。指定がない場合、デフォルトは 0.18 です。 |
| patternScale | number | いいえ | パターンタイルのサイズ(ピクセル単位)。指定がない場合、デフォルトは 16 です。 |
| textColor | string | いいえ | テキストの任意のカラーコード(16進数)。省略すると、背景に基づいてコントラストカラー(黒または白)が自動的に計算されます。 |
詳細
2d-assets-mcp
ゲームのアートをデザインする前に、ゲームの手触りをデザインしましょう。
ワイヤーフレームがスケッチを始める前にデザイナーがユーザーフローを視覚化するのに役立つように、2d-assets-mcp は、ゲーム開発者が最終的なアートワークに何時間も費やす前に、タイミング、フレームレート(FPS)、コリジョン境界、UI レイアウトを視覚化するのに役立ちます。
この MCP(Model Context Protocol) サーバーを使うと、あらゆる AI アシスタント(Antigravity、Claude Code、Codex、Devin など、MCP 互換であればどれでも)が、PNG 形式の高度な 2D モックアップ/プレースホルダーアセットをプロジェクトフォルダーに直接生成できます。時間を節約してプロトタイプをすばやく作成し、2d-assets-mcp でゲームの手触りを調整してから、準備ができたらモックアップをオリジナルのアートワークに置き換えましょう。
この MCP はゲームエンジンに依存せず、PNG のインポートに対応するあらゆるゲームエンジンで問題なく動作します。たとえば、次のようなエンジンに対応しています。
- Godot
- Unity
- Unreal Engine
- GameMaker
- Construct
- RPG Maker
- その他多数!
グラデーション、パターン、透明度、テキストの回転、自動スケーリングに完全対応し、チャットだけで、画像エディターを開くことなく、仮の体力バー、スプライトシート、思いつく限りの UI 要素を作成して時間を節約できます。 この MCP は、最終的なアートアセットを待たずに、スケール、ジャンプの軌道、アニメーションのタイミングをプロトタイプで試しながら、まずゲームの手触りをテストして改善できるようにすることを目指しています。しかも、手間はかかりません。プレースホルダーのボタンを 20% 大きくしたい場合は、AI クライアントに再生成を頼むだけです。
ヒント
2d-assets-mcp は AI に適したメタデータを備えています。→ 生成される各 PNG には、サイズ、色、形状、グラデーションのプロパティ、パターンの詳細、テキストのプロパティ、線のプロパティ、説明を含むリッチな JSON メタデータが EXIF データに直接埋め込まれるため、視覚機能のない AI モデルでもアセットの内容を理解できます。
生成アセットの例
この MCP サーバーで生成されたアセットの例を紹介します。


キャラクタースプライトとアニメーション
ヒーローの待機アニメーション(8 フレーム、512x64)

エフェクト付きの 8 フレーム待機アニメーションスプライトシート
UI 要素
攻撃ボタン(128×48)

赤いグラデーション、角丸、「ATTACK」ラベル付きのボタン
体力バー(200×24)

緑色の塗りつぶしが 75% で、濃いグレーのトラックが付いた体力バー
ゲームアイテム
金貨(32×32)

放射状グラデーション、ドットパターンのオーバーレイ、「COIN」ラベル付きの円形コイン
草と水

木

アニメーションスプライトシート
炎のアニメーション(4 フレーム、192x48)

4 フレームのスプライトシート
セキュリティ上の考慮事項
アセットの内容
- 生成されるアセットは純粋なプレースホルダー画像であり、悪意のあるコードは含まれません。
- 埋め込まれたメタデータは通常の JSON であり、実行可能ではありません。
この MCP サーバーは時間を節約するためにお使いのマシンへ直接ファイルを書き込むため、次のセキュリティのベストプラクティスをご確認ください。
ファイルシステムへのアクセス
- サーバーは、AI アシスタントが指定した任意のパスにファイルを書き込めます。
- 推奨事項: AI クライアントを設定し、アクセスをゲームのプロジェクトディレクトリのみに厳しく制限してください。
- 警告: AI にプロジェクトディレクトリ外のアセットを生成させる場合は、十分に注意してください。
パストラバーサル
- このサーバーはパスを検証しますが、MCP サーバーを扱う際は、パストラバーサルの試みに常に注意し、操作を確定する前に生成されたファイルパスを確認してください。
全般的なベストプラクティス
- あいまいさを防ぐため、設定では絶対パスを使用してください。
- AI のアクセスをゲームのプロジェクトディレクトリのみに制限してください。
- バージョン管理にコミットする前に、生成されたアセットを確認してください。
- Node.js の依存関係を最新の状態に保ってください。
主な機能
- アセットを即座に生成:ツールを 1 回呼び出すだけで、視覚設定をすべて指定した PNG を 1 つ生成します。
- スプライトシートと一括モード:複数のフレームを生成するか、1 回のリクエストでそれらを 1 つのアニメーションストリップスプライトシートに合成します。
- 豊かなビジュアル:単色塗りつぶし、線形/放射状グラデーション、ストライプ/ドット/グリッドパターンのオーバーレイ、角丸、円、不透明度、ストロークの制御に対応しています。
- 動的な UI 要素:
fillPercentとtrackColorを使って、一部が塗りつぶされたプログレスバーやヘルスバーを作成できます。 - 自動スケーリングするラベル:テキストはアセットに収まるよう自動的にスケーリングされます。必要に応じて、明示的な
fontSizeで上書きすることもできます。 - 視覚機能を持たない AI にも対応:埋め込み JSON メタデータは、画像のピクセルを読み込まずに
read_image_metadataで読み取れるため、視覚機能を持たない AI のワークフローに最適です。 - スマートな命名:出力ファイルには、モデルがアセットの寸法を視覚的に確認できない場合でも寸法がわかるよう、寸法を含む名前が自動的に付けられます(例:
player_idle_128x128.png)。
ツールリファレンス
この MCP サーバーは、2D アセットのメタデータを生成・読み取る 3 つのツールを AI に提供します。
1. generate_mock_asset
単一の PNG アセットを生成し、ディスクに書き込みます。グラデーション、パターン、透明度、テキストの回転、埋め込みメタデータに対応しています。
パラメーター(クリックして展開)
必須パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
filename | string | 出力ファイル名(例:player_idle.png) |
directory | string | 出力先フォルダーの絶対パス(存在しない場合は作成されます) |
text | string | アセット上に描画するラベル |
color | string | 背景の 16 進カラーコード(例:#FF5733) |
オプションのパラメーター: 形状とサイズ
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
width | number | 128 | 幅(ピクセル単位) |
height | number | 128 | 高さ(ピクセル単位) |
shape | rectangle | rounded-rectangle | circle | rectangle | 幾何学的な形状 |
opacity | number 0–1 | 1.0 | 背景の不透明度 |
strokeColor | string | #000000 | 境界線の 16 進カラーコード |
strokeWidth | number | 4 | 境界線の幅(px 単位)。0 にすると境界線がなくなります |
オプションのパラメーター: 塗りつぶしとグラデーション
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
fillMode | solid | linear-gradient | radial-gradient | solid | 背景の塗りつぶしタイプ |
secondaryColor | string | 自動導出 | 2つ目のグラデーションストップ。省略した場合はcolorから自動的に色合いを調整します |
gradientAngle | number | 45 | 線形グラデーションの角度(度)。放射状グラデーションでは無視されます |
オプションのパラメーター: 進捗/ヘルスバー
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
fillPercent | number 0–100 | 100 | アセットの塗りつぶし割合(左から右) |
trackColor | string | — | 塗りつぶされていない部分の色。省略すると透明になります |
オプションのパラメーター: パターンオーバーレイ
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
pattern | none | stripes | dots | grid | none | パターンオーバーレイのタイプ |
patternColor | string | 自動導出 | パターンの色。省略するとコントラストに応じて自動設定されます |
patternOpacity | number 0–1 | 0.18 | パターンオーバーレイの不透明度 |
patternScale | number ≥2 | 16 | パターンタイルのサイズ(ピクセル) |
オプションのパラメーター: テキスト
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
textPosition | center | top | bottom | center | テキストの垂直方向の配置 |
fontSize | number | 自動調整 | 明示的に指定するフォントサイズ(px)。省略すると自動調整されます |
textRotation | number | 0 | テキストの回転角度(度) |
textColor | string | 自動コントラスト | テキストの16進カラーコード。省略すると自動計算されます |
オプションのパラメーター: メタデータ
| パラメーター | 型 | デフォルト値 | 説明 |
|---|---|---|---|
assetDescription | string | — | ビジョン非対応のAI向けコンテキストとして、PNG EXIFに埋め込まれる人間が読める説明 |
メモ
出力ファイル名の形式
サーバーは書き込み前に、ファイル名へ自動的に寸法を追加します。
player_idle.png → player_idle_128x128.png
2. generate_mock_asset_batch
1 回のリクエストで複数のアセットを生成します。個別の PNG または 1 つにまとめたスプライトシートに対応しています。
パラメーター(クリックして展開)
必須パラメーター
| Parameter | Type | Description |
|---|---|---|
assets | AssetConfig[] | アセット設定の配列(generate_mock_asset と同じフィールド) |
オプションのパラメーター
| Parameter | Type | Default | Description |
|---|---|---|---|
spritesheetMode | individual \ spritesheet | spritesheet | individual は個別の PNG を書き出し、spritesheet は 1 つの PNG にまとめます |
sheetFilename | string | spritesheet.png | まとめたスプライトシートの出力ファイル名 |
sheetDirectory | string | first asset's directory | スプライトシートの出力ディレクトリ |
sheetMargin | number | 8 | スプライトシートの外側の余白(ピクセル単位) |
sheetSpacing | number | 8 | アニメーションフレーム間の間隔(ピクセル単位) |
メモ
スプライトシートのレイアウト
すべてのアセットを横一列(従来のアニメーションストリップ形式)に配置します。各フレームセルのサイズは、バッチ内で最も大きいアセットに合わせます。小さいアセットはセル内の中央に配置されます。出力ファイル名には、シート全体のサイズが含まれます。
player_run.png → player_run_648x136.png
3. read_image_metadata
このサーバーで生成された任意の PNG の EXIF ImageDescription フィールドに埋め込まれた JSON メタデータを読み取ります。画像をデコードせずにアセットの内容を理解できるため、視覚機能を持たない AI モデルに役立ちます。
パラメーター(クリックして展開)
必須パラメーター
| Parameter | Type | Description |
|---|---|---|
filepath | string | PNG ファイルの絶対パス |
メタデータの埋め込み方法
メタデータは、sharp ライブラリの withMetadata API を使用して、PNG の EXIF IFD0.ImageDescription フィールドに JSON 文字列として保存されます。
読み取りには、標準的な TIFF のバイト列走査を意図的に回避します。バイナリの TIFF 構造を解析する代わりに、既知の "generator":"2d-assets-mcp" キーを UTF-8 文字列として生の EXIF バッファー内から検索し、周囲の JSON オブジェクトを抽出します。これにより、さまざまな PNG ライターで発生する TIFF のパディング、バイト順の違い、通常と異なる IFD レイアウトの影響を受けずに読み取れます。
レスポンス例(クリックして展開)
{
"generator": "2d-assets-mcp",
"type": "asset",
"name": "player_idle",
"width": 128,
"height": 128,
"color": "#4A90E2",
"shape": "rounded-rectangle",
"fillMode": "linear-gradient",
"fillPercent": 100,
"trackColor": null,
"pattern": "none",
"secondaryColor": "#2E5A8A",
"gradientAngle": 45,
"textRotation": 0,
"textPosition": "center",
"strokeColor": "#000000",
"strokeWidth": 4,
"description": "Player idle placeholder, blue rounded rectangle 128x128",
"createdAt": "2025-01-15T10:30:00.000Z"
}
スプライトシートのメタデータフィールド(スプライトシートファイルで返される追加フィールド)
{
"generator": "2d-assets-mcp",
"type": "spritesheet",
"totalWidth": 648,
"totalHeight": 136,
"columns": 4,
"rows": 1,
"frameCount": 4,
"frameWidth": 128,
"frameHeight": 128,
"margin": 8,
"spacing": 8,
"frames": [
{
"index": 0,
"x": 8,
"y": 8,
"width": 128,
"height": 128,
"name": "frame_0",
"color": "#4A90E2",
"shape": "rounded-rectangle"
}
],
"createdAt": "2025-01-15T10:30:00.000Z"
}
AI 向けのプロンプト例
AI コーディングアシスタントに接続したら、ワークフローを効率化するために次のプロンプトを試してみてください。
単一アセット
「プレイヤーキャラクター用に、
C:\Users\me\project\assets\sprites\(Windows)、/home/me/project/assets/sprites/(Linux)、または/Users/me/project/assets/sprites/(macOS)に 128×128 の青い角丸長方形のプレースホルダーを作成してください。『Player』とラベルを付け、放射状グラデーションを設定してください。」
ヘルスバー
「200×24 ピクセルで、塗りつぶし率 65%、細い線、赤い塗りつぶし色、暗いグレーのトラックのヘルスバー PNG を、プロジェクトの UI フォルダーに生成してください。ファイル名は
health_bar.pngにしてください。」
スプライトシート
「プレイヤー用に、4 フレームの走行サイクルのスプライトシートを作成してください。各フレームは 64×64 で、青の濃淡を変え、『Frame 1』から『Frame 4』までラベルを付けてください。プロジェクトの sprites フォルダーに保存してください。」
メタデータを読み取る
「プロジェクトの sprites フォルダーにある
player_idle_128x128.pngのメタデータを読み取ってください。」
インストール
オプション 1:npx で直接使用する(インストール不要)
あらゆる AI コーディングアシスタントに接続する最も速い方法です。
{
"mcpServers": {
"2d-assets": {
"command": "npx",
"args": ["-y", "2d-assets-mcp"]
}
}
}
オプション 2:パッケージマネージャー(pnpm、npm、yarn)を使って手動でインストールする
1. リポジトリをクローンする
git clone https://github.com/crony-io/2d-assets-mcp.git
cd 2d-assets-mcp
2. 依存関係をインストールする
pnpm install # recommended
# or: npm install
# or: yarn install
3. プロジェクトをビルドする
pnpm run build
# or: npm run build
# or: yarn run build
4. MCP クライアントを設定する
{
"mcpServers": {
"2d-assets-mcp": {
"command": "node",
"args": ["/absolute/path/to/2d-assets-mcp/dist/index.js"]
}
}
}
オプション 3:pnpm または npm でグローバルにインストールする
このプロジェクトは、どの Node.js パッケージマネージャーでも動作します。お好みのものを選んでください。
npm
npm install -g 2d-assets-mcp
pnpm
pnpm add -g 2d-assets-mcp
次に、インストールしたバイナリを指定します。
{
"mcpServers": {
"2d-assets": {
"command": "2d-assets-mcp"
}
}
}
Claude Code / Claude Desktop
Claude Code/Claude Desktop の MCP 設定に追加します。
{
"mcpServers": {
"2d-assets-mcp": {
"command": "node",
"args": ["/absolute/path/to/2d-assets-mcp/dist/index.js"]
}
}
}
Devin
Devin の MCP 設定(mcp_config.json)に追加します。
{
"mcpServers": {
"2d-assets-mcp": {
"command": "node",
"args": ["/absolute/path/to/2d-assets-mcp/dist/index.js"],
"disabled": false
}
}
}
Cursor
プロジェクト内に .cursor/mcp.json を作成します。
{
"mcpServers": {
"2d-assets-mcp": {
"command": "node",
"args": ["/absolute/path/to/2d-assets-mcp/dist/index.js"]
}
}
}
開発
前提条件
- Node.js 18 以降
- pnpm 8 以降 または npm 9 以降(どのパッケージマネージャーでも使用できます)
セットアップ
git clone https://github.com/crony-io/2d-assets-mcp.git
cd 2d-assets-mcp
# Choose your package manager:
pnpm install # recommended
# or
npm install
# or
yarn install
スクリプト
| コマンド | 説明 |
|---|---|
npm run build / pnpm run build | TypeScript を dist/ にコンパイルします |
npm run dev / pnpm run dev | tsx でソースから直接実行します(ビルド不要) |
npm run start / pnpm run start | コンパイル済みのサーバーを dist/ から実行します |
npm run typecheck / pnpm run typecheck | ファイルを出力せずに型チェックを実行します |
npm run check / pnpm run check | フォーマット、lint、型チェックを含むすべてのチェックを実行します |
新しいツールの追加
src/tools/yourTool.tsを作成し、registerYourTool(server: McpServer)関数をエクスポートしますsrc/server.tsでインポートして呼び出します- 新しい Zod スキーマを
src/schemas.tsに、型をsrc/types.tsに追加します
ライセンス
MIT — 全文は LICENSE を参照してください。
コントリビューション
Issue とプルリクエストをいつでも歓迎します。PR を作成する前に、次の点を確認してください。
pnpm run checkまたはnpm run checkを実行します(エラーがないこと)。- 新しいツールはそれぞれ
src/tools/内の独立したファイルに追加します。 - 新しい型は
src/types.tsから、スキーマはsrc/schemas.tsからエクスポートします。 - 新規または変更したパラメーターについて、この README の ツールリファレンス セクションを更新します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。