mcpField
P
prompt-to-asset

prompt-to-asset

ローカル
github.com/MohamedAbdallah-14メディア・デザイン2414 週間前に更新

prompt-to-asset について

prompt-to-asset は、アプリアイコン、favicon、OG 画像、ロゴなどを生成する MCP サーバー兼コマンドラインツールです。30 以上の画像モデルに対して無料のプロバイダーを優先してルーティングします。画像モデルの API キーを用意せずに素材を作りたい開発者を対象としています。

主な機能

  1. 01複数の画像モデルに対する無料優先のルーティング
  2. 02inline SVG、外部貼り付け、API の 3 つのモード
  3. 03iOS、Android、PWA、favicon セットへのオフライン書き出し
  4. 04寸法、アルファチャンネル、コントラストの自動検証
  5. 05スプライトシートと 9 スライス出力

活用シーン

  1. 01新規アプリの透過背景ロゴと favicon の作成
  2. 021 枚のマスター画像からプラットフォーム別アイコンセットの書き出し
  3. 03画像モデルの API キーなしでの素材作成

MCP 対応

本サーバーは asset_doctor、asset_enhance_prompt、asset_export_bundle などの MCP ツールとして素材の生成と書き出し機能を AI アシスタントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mohamedabdallah-14-prompt-to-asset": {
"command": "npx",
"args": [
"-y",
"prompt-to-asset"
]
}
}
}
起動コマンドnpx -y prompt-to-asset

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmprompt-to-asset0.4.2

ツール

24

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
asset_typeenumいいえアセットタイプ別のモード一覧を 1 種類に絞り込みます。logo | app_icon | favicon | og_image | splash_screen | illustration | icon_pack | hero | sticker | transparent_mark

詳細

プロンプトからアセットを生成するデモ — 1つのプロンプトから、20秒で完全なファビコン一式を作成します。Claude Code、Cursor、Windsurf、VS Codeで動作します。APIキーは不要です。

prompt‑to‑asset

開発者向けの無料画像生成。CLI または AI アシスタントから利用できます。
1つの概要から、アプリアイコン、ファビコン、OG画像、ロゴ、スプラッシュ画面、SVG、プラットフォーム別の一式を生成します。まずは最適な無料ルートを利用します。
Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde、Pollinations、無料トライアル、オフライン SVG 向けに構築されています。

npm ダウンロード数 CI ライセンス node MCP Glama スコア キー不要 スター数

Cursor にインストール VS Code にインストール Claude Desktop Smithery

クイックスタート · 無料の方法 · 使い方 · モード · 無料 API · MCP ツール · 完全ガイド · 変更履歴

30秒で開始

どれか1つ選んで実行するだけです。これで完了です。 推奨の方法を最初に紹介します。

実行環境:Node ≥ 20.11(24を推奨)。macOS、Linux、Windows(--fix のネイティブ依存関係には WSL2 を使用)。

### 🔵 AI アシスタント · おすすめ

上のインストールボタンをクリックしてください。その後、以下のいずれかをチャットに貼り付けます:

• Make a transparent logo for Forge, a dev-tools brand. Flat vector, warm orange.
• Make a favicon for my app, dark-mode aware.
• Fan this master.png out to iOS + Android + PWA.
• Ingest this screenshot as a mark, vectorize, export everything.

Cursor、Claude Code、VS Code、Windsurf、Codex、Gemini CLI で動作します。ターミナルへの入力は一切不要です。

🟢 API キー不要、インストール不要

curl を 1 回、npx を 1 回実行するだけです。オフラインで、すべてのプラットフォームに一括出力します。

curl -o logo.png \
  "https://image.pollinations.ai/prompt/\
minimal+flat+vector+logo\
?model=flux&width=1024&nologo=true"

npx prompt-to-asset export logo.png \
  --platforms ios,android,pwa,favicon

出力:iOS AppIconSet、Android adaptive、PWA、favicon バンドル、visionOS スキャフォールド。

🟣 CLI · 無料 API キー

最高の CLI エクスペリエンス:まず無料トークンを使い、有料キーは必要に応じて利用できます。

npm i -g prompt-to-asset
p2a doctor          # check env
p2a doctor --fix    # auto-install deps
p2a pick            # interactive

Cloudflare Workers AI、NVIDIA NIM、HF Inference、Stable Horde、無料トライアルから始めましょう。有料プロバイダーは、引き続きオプションのフォールバックとして利用できます。

無料で使える方法の概要

有料 API キーは不要です。おすすめ順に並べています:

方法利用できるもの登録
inline_svg(AI アシスタント経由)ロゴ、ファビコン、アイコンパック — 即時生成不要
Cloudflare Workers AIFlux-1-Schnell + SDXL、1 日あたり 10k ニューロン無料トークン + アカウント ID
NVIDIA NIMFlux.1-dev、Flux.2-klein、SDXL、SANA無料トークン、カード不要
HF InferenceSDXL、SD3、Flux dev/schnell無料の読み取りトークン
Stable Hordeコミュニティ GPU 上の SDXL、Flux匿名キュー
Pollinations(HTTP GET)最終手段のラスター画像、RGB不要
Google AI Studio(貼り付け専用 UI)Nano Banana / Nano Banana ProGoogle アカウント

詳細とクォータ:Pollinations 以外の無料利用方法。p2a doctor を実行するか、アシスタントに asset_doctor() を依頼すると、現在利用可能なものを確認できます。

ヒント

行き詰まった場合は、上の Install in Cursor または Install in VS Code をクリックし、エディターを再起動して、次のように入力してください:「アプリ用のファビコンを作成して。ダークモードにも対応させて。」


主な機能

  • 無料、CLI 優先の生成 — p2a doctor、p2a pick、および MCP ツールは有料モデルより先に無料の API 経路を優先するため、開発者は課金を有効にせずに CLI 内で生成できます。
  • 3 つの実行モード — inline_svg(ホスト LLM が SVG を作成)、external_prompt_only(任意のウェブ UI に貼り付け)、api(サーバーが無料または有料のプロバイダーを呼び出し)。用途に合わせて選べます。3 つすべて、費用 0 ドルで完了できます。
  • 60 以上のモデル、無料優先のルーティング — Cloudflare Workers AI、NVIDIA NIM、HF、Horde、Pollinations、無料トライアルに加え、オプションで有料の OpenAI / Ideogram / Recraft / BFL / Gemini も利用できます。各ルールには調査ソースが記載されています。
  • 不適切な処理を拒否 — Never 列を参照してください。3 語を超えるワードマークを拡散サンプラーに通しません。透明 PNG を Imagen で生成しません。Flux に negative_prompt を指定しません。
  • オフラインでのプラットフォーム一括出力 — 1024² のマスター画像 1 枚から、iOS AppIconSet、Android adaptive + monochrome、PWA 192/512/512-maskable、favicon バンドル、visionOS 視差画像、Flutter ランチャー用画像を生成します。ネットワーク接続は不要です。
  • 出力前に検証 — すべての出力に対してティア 0 のチェックを実施:寸法、アルファチャンネルの有無、チェッカーボード FFT、安全領域のバウンディングボックス、ΔE2000 によるパレットのずれ、WCAG コントラスト、ワードマークの OCR Levenshtein。
  • スプライトシート + 9 スライス — PNG フレームを TexturePacker 互換のアトラス(Phaser、PixiJS、Godot、Unity)にパックし、9 スライスの数値 + CSS border-image + Android .9.png を出力します。

目次

クリックして展開

使い方

アシスタントに話しかけるだけです。新しいチャットでの例:

Forgeという開発者向けツール企業の、背景が透明なロゴを作ってください。フラットなベクターで、ニュートラルな色を背景に、温かみのあるオレンジを2色使ってください。

内部では、次の処理が行われます。

  1. asset_doctor() — 利用可能なモードとプロバイダーを確認します。
  2. asset_init_brand({ app_name: "Forge", palette: ["#EA580C", "#F5F5F4"] }) — brand.jsonが存在しない場合に実行します。
  3. asset_enhance_prompt({ brief }) はAssetSpecを返します。内容は、分類、書き換えられたプロンプト、modes_available[]、任意のsvg_brief、任意のpaste_targets、判断の根拠となった調査ファイルを示すrouting_trace(およびImagenやDALL·Eが却下された理由を示すnever_models)です。
  4. アシスタントが**inline_svg/external_prompt_only/api**を提示します。
  5. **inline_svg**の場合:<svg>をインラインで作成し、asset_save_inline_svgを呼び出します → master.svg、favicon.ico、apple-touch、AppIconSet、PWAバンドルをディスクに書き込みます。
  6. **external_prompt_only**の場合:アシスタントが、調整済みプロンプトと最適な貼り付け先(無料のものを優先)を提示します。生成して保存した後、「このファイルを取り込んで」と伝えます → asset_ingest_external。
  7. **api**の場合:アシスタントがルーティングされたプロバイダーを呼び出します。サーバーがマット処理、ベクター化、エクスポート、検証を行います。
  8. 追加の依頼:「これをiOSとAndroid用にも展開してください」 → 保存済みのマスターを使ってasset_export_bundleを実行します。

CLIに入力する必要はありません。CI、シェルスクリプト、MCP以外の環境では、CLIも引き続き第一級の手段です。どちらのインターフェースも同じコアを利用します。


これが存在する理由

ここでのすべてを左右する事実が2つあります。

本番品質のソフトウェアアセットを作成するうえで重要なのは、プロンプトエンジニアリングではなく、ルーティングと後処理の問題です。

Imagen 3/4とGemini Flash Imageでは、本物のRGBA PNGを生成できません。VAEがRGB専用のため、透明な背景を求めると、灰色と白の市松模様が ピクセルとして 描画されます。SDXLは約8文字を超えると正確に文字を描けません。ネイティブSVGを出力できるのはRecraftだけです。Fluxはnegative_promptでエラーになります。こうした制約はモデルのUIからは見えません。しかし、どれも「プロンプト → アセット」を一度で実行するツールを、気づかれないまま破綻させます。

画像モデルのAPIキーを持っていない場合もあります。それでもこのプラグインは動作します。

3つのモードはいずれも、費用をかけずに完了できます。


3 つのモード

flowchart LR
    A["one-line brief"] --> B["asset_enhance_prompt"]
    B --> C{"mode"}
    C -->|inline_svg| D["Host LLM emits SVG inline<br/>→ asset_save_inline_svg"]
    C -->|external_prompt_only| E["Paste into web UI<br/>→ asset_ingest_external"]
    C -->|api| F["Server calls routed provider"]
    D --> G["matte · vectorize · validate"]
    E --> G
    F --> G
    G --> H["AssetBundle<br/>ios · android · pwa · favicon · visionos · flutter"]
モードキー?動作最適な用途
inline_svgいいえサーバーが SVG 作成用の指示(viewBox、パレット、パス数の上限 ≤ 40)を返します。ホスト LLM が <svg>…</svg> をインラインで生成し、asset_save_inline_svg がマスター、favicon.ico、apple-touch、AppIconSet、PWA バンドルを書き込みます。即時に処理され、決定的です。ロゴ、ファビコン、アイコンパック、ステッカー、シンプルなアプリアイコンのマスター
external_prompt_onlyいいえサーバーが、使用する生成サービスの形式に合ったプロンプトと、貼り付け先の優先順位付きリストを返します。無料の選択肢が先頭に並びます:Pollinations、HF Inference、Stable Horde、Google AI Studio、Ideogram、Recraft、Midjourney、fal.ai、BFL、ChatGPT、Firefly、Krea。他の場所で生成してローカルに保存し、asset_ingest_external を呼び出します。どの用途にも適しています。特にイラスト、ヒーロー画像、テキストの多いロゴに最適です
api任意サーバーがプロバイダーを直接呼び出します。Pollinations/Horde/HF ならキーなしで利用でき、有料キーにも対応しています。ルーティング → 生成 → マット処理 → ベクター化 → エクスポート → 検証 → コンテンツアドレス方式のバンドル化を行います。自動化、CI、レート制限を許容できない場合

ホスト LLM がモードを選ぶことも、自分で選ぶこともできます。サーバーは modes_available を公開し、アシスタントが選択肢を提示できるようにします。常に無料の選択肢を優先します。


ルーター

ルーターの判断は data/routing-table.json に記載されています。機能マトリクスは data/model-registry.json にあります。すべてのルールには調査元が記載されています。

必要なもの優先代替使用しないもの
透明な PNG マークgpt-image-1.5(background:"transparent")Ideogram 3 Turbo(/generate-transparent)→ Recraft V4Imagen、Gemini Flash Image、SD 1.5
1~3 語のテキスト入りロゴIdeogram 3 Turbo → gpt-image-1.5 → Recraft V4マークに SVG 文字を合成Imagen、SD 1.5、flux-schnell
3 語を超えるテキスト入りロゴ拡散サンプラーは使用しません。 マークと SVG タイポグラフィを合成します。——
ネイティブ SVGRecraft V4(ブランドスタイルのパイプラインには V3)inline_svg(ホスト LLM が SVG を作成)その他すべて
写実的なヒーロー画像まず無料の CLI ルートを使用:Cloudflare / NVIDIA NIM / HF有料キーを使う Flux Pro / gpt-image-1.5 / Gemini新規作成では DALL·E 3、Imagen 4
既存のマークを反復編集flux-kontext-pro(編集専用)Pollinations Kontext(無料)—
すべて無料で利用inline_svg → Cloudflare / NVIDIA NIM / HF / HordePollinations → 貼り付けのみ—

使用しないものの列は重要です。これがあるため、prompt-to-asset は拡散サンプラーで 3 語を超えるワードマークを生成せず、透明な PNG を求めた場合に Imagen が選ばれることもありません。

Pollinations 以外の無料の選択肢

オプション方法最適な用途注意点
Cloudflare Workers AI無料の API トークン + アカウント IDFlux-1-Schnell、SDXL、DreamShaper1 日 10k ニューロンの上限(約 900 回の Flux-Schnell または 5k 回の SDXL-Lightning)
NVIDIA NIM無料の API トークン、カード不要Flux.1-dev、Flux.2-klein、SDXL、SANA月 1k リクエスト。無料のコマンドライン経由で特に便利
HF Inference無料の読み取りトークンSDXL、SD3、Flux dev + schnellレート制限あり、コールドスタート時のレイテンシー
Stable Horde匿名の kudos キューSDXL、Flux のコミュニティ GPU無料レーンでは数分待つ場合があります
Pollinations.aicurl → HTTP GET。登録不要。使い捨てのラスター画像最終手段:通知のないモデル切り替え、縮小、RGB のみ
Google AI Studio(UI)aistudio.google.com の無料の対話型 Web UINano Banana / Nano Banana Pro無料 API なし — 貼り付けのみ。PNG をダウンロードし、asset_ingest_external を呼び出します
ローカル ComfyUIコミュニティ製の comfyui-mcp アダプター完全な品質、上限なしGPU はご自身で用意してください
inline_svgホスト側の LLM がチャット内に <svg> を出力ロゴ、ファビコン、シンプルなアイコンパスは ≤40 個。単純な図形のみ
external_prompt_only任意の Web UI に貼り付けその UI で生成できるもの手動で保存し、その後 asset_ingest_external を呼び出します
Google Gemini / Imagen — 検証済みの料金(2026 年 4 月)

公開されている Gemini API の料金を基に、2026-04-26 に検証済みです。

  • Imagen 4 の画像出力は有料 API です。 料金表では無料枠は「利用不可」とされ、Fast / Standard / Ultra の料金は画像 1 枚あたり $0.02 / $0.04 / $0.06 です。
  • Nano Banana ファミリーは有料 API です。 gemini-3.1-flash-image-preview(Nano Banana 2)、gemini-3-pro-image-preview(Nano Banana Pro)、gemini-2.5-flash-image(初代 Nano Banana)は、画像出力が有料枠のみと記載されています。API 経由で使用するには、GCP プロジェクトで課金を有効にする必要があります。
  • テキスト、マルチモーダル理解、埋め込みは無料です。 Gemini のテキスト出力モデルは、無料枠で入力と出力が引き続き「無料」です。
  • 無料の対話型画像生成は、aistudio.google.com の AI Studio Web UI からも利用できます。 コミュニティで確認されている上限は 1 日 500~1,000 枚で、変動します。課金なしで Nano Banana 品質を利用するには、external_prompt_only + asset_ingest_external を使用してください。
  • Gemini の一般向けアプリ(gemini.google.com)からの画像生成も無料です。Basic は 1 日 20 枚、AI Plus は 50 枚、AI Pro は 100 枚、Ultra は 1,000 枚です。
  • 有料 API の標準料金(画像 1 枚あたり): Nano Banana(gemini-2.5-flash-image)は $0.039、Nano Banana 2 Flash(gemini-3.1-flash-image-preview)は 0.5K が $0.045、1K が $0.067、2K が $0.101、4K が $0.151、Nano Banana Pro(gemini-3-pro-image-preview)は 1K~2K が $0.134、4K が $0.24(+入力画像 1 枚あたり $0.0011)、Imagen 4 Fast は $0.02、Standard は $0.04、Ultra は $0.06 です。Batch API は 50%割引です。

p2a doctor を実行するか、アシスタントに asset_doctor() を依頼すると、現在の環境で利用できるものを確認できます。


インストール

すべてのコマンドは npx 経由で動作するため、インストールは不要です。

# Zero install
npx prompt-to-asset doctor           # what's live in this shell right now
npx prompt-to-asset doctor --fix     # auto-install native deps (brew / cargo / scoop; never sudo)
npx prompt-to-asset pick             # interactive route picker
npx prompt-to-asset init --register  # scaffold brand.json + register in .cursor / .vscode / .windsurf

# Or global for daily use
npm i -g prompt-to-asset
p2a doctor

# Or per-project for CI
npm i -D prompt-to-asset
AI アシスタントに登録する

Claude Code

claude mcp add prompt-to-asset -- p2a

Smithery(ユニバーサル)

npx -y @smithery/cli install prompt-to-asset --client claude

Cursor · VS Code · Windsurf · Codex · Gemini CLI

この README の上部にあるインストールボタンを使用するか、docs/install.md で IDE ごとの正確な設定ブロックを確認してください。

Claude Desktop

.mcpb バンドルをダウンロード → ダブルクリック → 再起動します。

登録すると、アシスタントから 24 個の asset_* ツールをすべて利用できるようになります。


対応モデル

有料の直接 API: gpt-image-1、gpt-image-1.5、dall-e-3(2026-05-12 に非推奨)、imagen-3、imagen-4、gemini-3-flash-image(Nano Banana)、gemini-3-pro-image、sd-1.5、sdxl、sd3-large、playground-v3、flux-schnell、flux-dev、flux-pro、flux-2、flux-kontext-pro、ideogram-3、ideogram-3-turbo、recraft-v3、leonardo-phoenix、leonardo-diffusion-xl、fal-flux-pro、fal-flux-2、fal-sdxl。

無料枠/キー不要: pollinations-flux、pollinations-turbo、pollinations-kontext、pollinations-sd、horde-sdxl、horde-flux、hf-sdxl、hf-sd3、hf-flux-schnell、hf-flux-dev。

プロンプト貼り付け専用のモデル: midjourney-v6、midjourney-v7、firefly-3、krea-image-1。貼り付け専用のプライマリモデルに対して mode: "api" を指定して asset_generate_* を呼び出すと、API で利用可能なチェーン内の最初のモデルにソフトフォールバックし、警告が表示されます。チェーン全体が貼り付け専用の場合は、エラーではなく ExternalPromptPlan が返されます。


🛠 MCP ツール一覧(25 個のツール) | ツール | 目的 | | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `asset_capabilities` | モードとプロバイダーの一覧です。有料/無料枠/貼り付けのみを分類し、キー不要のルートを優先して表示します。読み取り専用です。 | | `asset_enhance_prompt` | 分類、ルーティング、書き換えを行います。モード、`svg_brief`、`paste_targets`、`routing_trace { research_sources, never_models, fallback_chain }` に加え、ブリーフが曖昧な場合は `clarifying_questions[]` を返します。読み取り専用です。 | | `asset_generate_logo` | `inline_svg`/`external_prompt_only`/`api`。`InlineSvgPlan`/`ExternalPromptPlan`/`AssetBundle` を返します。 | | `asset_generate_app_icon` | 同じ3つのモードです。`api` は iOS/Android/PWA/visionOS/Flutter 向けにすべて生成します。ダーク版と色付きバリアントを生成するには、`ios_18_appearances: true` を設定します。 | | `asset_generate_favicon` | `favicon-{16,32,48}.png`、`icon.svg`、`icon-dark.svg`、`apple-touch`、PWA 192/512/512-maskable、`` スニペット、`manifest.webmanifest` を生成します。 | | `asset_generate_og_image` | Satori と `@resvg/resvg-js` を使用して 1200×630 の画像を生成します。タイポグラフィは決定論的で、拡散モデルによる文字の崩れはありません。 | | `asset_generate_illustration` | `external_prompt_only`/`api`。バンドル参照、LoRA、または `style_id` によりブランドを固定します。優先ルートは Flux.2(参照画像は最大8点)です。 | | `asset_generate_splash_screen` | iOS `LaunchScreen-2732.png`、Android `mipmap-*/splash.png` とテーマ XML、PWA スプラッシュ画面と README を生成します。承認済みのマークを再利用するには、`existing_mark_svg` を渡します。 | | `asset_generate_hero` | マーケティング用のヒーロー画像(16:9/21:9/3:2/2:1)。`external_prompt_only`/`api`。 | | `asset_save_inline_svg` | `inline_svg` の往復処理です。SVG をブリーフに照らして検証し、バンドルを書き込みます。 | | `asset_ingest_external` | `external_prompt_only` の往復処理です。マット処理 → ベクター化 → 検証 → バンドルの順に実行します。 | | `asset_remove_background` | BiRefNet/BRIA RMBG-2.0/LayerDiffuse/差分マット/U²-Net。 | | `asset_vectorize` | `vtracer`/`potrace`/Recraft/ポスタライズによるフォールバックを実行し、その後 SVGO を使用します。 | | `asset_upscale_refine` | DAT2/Real-ESRGAN/SUPIR/img2img/Lanczos。アセットの種類を考慮します。 | | `asset_validate` | Tier-0(寸法、アルファ、チェッカーボード FFT、安全領域の bbox、ΔE2000 パレット、WCAG コントラスト、OCR Levenshtein)。`PROMPT_TO_BUNDLE_VLM_URL` を介した Tier-2 の VLM 判定。 | | `asset_brand_bundle_parse` | `brand.json`/DTCG トークン/AdCP/Markdown を解析し、正規形式の `BrandBundle` に変換します。 | | `asset_doctor` | 環境の構造化された一覧です。ネイティブ依存関係、最適なものから並べた無料枠のルート、有料キー、貼り付けのみのサーフェス、パイプライン URL、モードフラグ、「次に試すこと」を表示します。読み取り専用です。 | | `asset_models_list` | フィルター(`free`/`paid`/`paste_only`/`rgba`/`svg`)を使って、60以上のモデルレジストリを閲覧します。読み取り専用です。 | | `asset_models_inspect` | 1つのモデル ID(または別名)の全機能を表示します。強み、弱み、貼り付け先、ルーティング規則、環境の状態を確認できます。読み取り専用です。 | | `asset_export_bundle` | 1024² のマスター PNG から、iOS AppIconSet、Android アダプティブアイコン、PWA マスカブル、visionOS パララックス、Flutter ランチャーアイコン、ファビコンを生成します。オフラインで動作します。 | | `asset_sprite_sheet` | PNG/WEBP/JPG のフレームを、TexturePacker 互換の JSON アトラス付きスプライトシートにまとめます(Phaser/PixiJS/Godot/Unity)。オフラインで動作します。 | | `asset_nine_slice` | 画像と4つのピクセルガイドから、9スライス設定、CSS `border-image`、エンジン対応の数値(Unity/Godot/Phaser/PixiJS)を生成します。Android `.9.png` は任意です。 | | `asset_init_brand` | `brand.json` のひな形を作成し、アセットディレクトリが存在することを確認します。Next.js、Expo、Flutter、Xcode、Astro、Vite、Remix、Nuxt、React Native、Electron、Node を自動検出します。 | | `asset_train_brand_lora` | ユーザー所有の LoRA トレーニングエンドポイント(`PROMPT_TO_BUNDLE_MODAL_LORA_TRAIN_URL`)をラップします。パスを保護し、入力を検証します。 | ツールには `readOnlyHint` / `idempotentHint` が注釈されているため、Cursor は確認なしで自動承認します。

⌨️ CLI の概要

MCP がまだ登録されていない場合に Bash 経由で LLM が使用するほか、CI でも使用します。読み取り専用コマンドはすべて --json を受け付けます。

p2a                          # default — MCP stdio server
p2a mcp                      # same, explicit
p2a export <master.png>      # offline platform fan-out
p2a export <master.png> --json
p2a init                     # interactive brand.json + IDE registration hints
p2a init --register          # + auto-write .cursor/mcp.json / .vscode/mcp.json / .windsurf/mcp.json
p2a pick                     # interactive model picker
p2a doctor                   # environment inventory
p2a doctor --json            # structured output
p2a doctor --data            # check data/model-registry.json ↔ data/routing-table.json consistency
p2a doctor --fix             # auto-install missing native deps (brew / cargo / scoop; never sudo)
p2a models list              # --free | --paid | --paste-only | --rgba | --svg
p2a models inspect <id>      # full capability dump
p2a sprite-sheet <dir>       # pack frames → PNG + atlas
p2a nine-slice <image>       # 9-slice JSON + CSS + engine numbers + .9.png
p2a --help

🎨 ブランドバンドル — brand.json
{
  "name": "Halcyon",
  "palette": ["#2563eb", "#ffffff"],
  "fonts": { "display": { "family": "Inter", "weights": [700, 800] } },
  "style_refs": ["https://…/sample1.png", "./refs/style2.png"],
  "do_not": ["drop shadows", "heavy gradients"],
  "lora": "halcyon-flux-v2",
  "sref_code": "--sref 1234567890",
  "style_id": "rc_halcyon_01"
}

p2a init はフレームワークを検出し、アセットディレクトリを提案したうえで、このファイルを書き込みます。このファイルが存在すると、すべてのジェネレーターが自動的に読み込みます。

📱 プラットフォームのサポート
プラットフォーム提供されるもの
iOS(Xcode)1024 ピクセルで不透明、スクワークルに対応した AppIcon.appiconset。ios_18_appearances: true による iOS 18 のダークおよびティントバリエーション。
Androidアダプティブな前景と背景、Android 13 のモノクロームアイコン、すべての mipmap 密度、オプションの .9.png。
PWA / webfavicon.ico(16/32/48 のマルチレゾリューション)、prefers-color-scheme のダークモードに対応した icon.svg、180×180 で不透明な apple-touch-icon.png、192/512/512-maskable、manifest.webmanifest、<head> 用の <link> スニペット。
FlutteriOS、Android アダプティブ、web、macOS、Windows を設定済みの flutter_launcher_icons.yaml。
visionOSREADME を含む、3 層パララックスのひな形。レイヤーの分割は人が判断します。
Next.js / Astro / Vite / Remix / Nuxt / Expo / React Native / Electronp2a init / asset_init_brand によるフレームワーク検出と、適切な出力ディレクトリ。
ゲームsprite-sheet は TexturePacker 互換のアトラス(Phaser、PixiJS、Godot、Unity)を生成します。nine-slice はエンジンですぐに使える数値を出力します。

🏗 アーキテクチャ
  brief (text)
    ↓  asset_capabilities         → modes available + free/paid/paste-only bucketing
    ↓  asset_enhance_prompt       → AssetSpec {
    ↓                                  routing_trace: { rule_id, reason, research_sources, never_models, fallback_chain },
    ↓                                  modes_available,
    ↓                                  svg_brief?,         (inline_svg)
    ↓                                  paste_targets?,     (external_prompt_only)
    ↓                                  rewritten_prompt, …
    ↓                                }
    ↓
    ├─ mode: inline_svg                → host LLM emits <svg>; asset_save_inline_svg writes bundle
    ├─ mode: external_prompt_only      → user pastes into web UI; asset_ingest_external runs matte → vectorize → validate
    └─ mode: api                       → provider(model, prompt, params) → matte → vectorize → upscale → export → validate

コンテンツアドレス指定ストレージ:assets/<hash[0:2]>/<hash>/<variant>.<ext>。MCP サーバーは同期型でステートレスです。各 AssetBundle の prompt_hash と params_hash は、ホスト型パイプラインの jobId として BullMQ / SQS / Cloudflare Queues にそのまま利用できるよう設計されています。リファレンス設計:docs/research/18-asset-pipeline-tools/18e-production-pipeline-architecture.md。

### 設計方針

API キーはユーザーが管理します。それ以外はすべて LLM が担います。

ターミナルで行うのは、パッケージのインストールと .env へのキーの設定だけです。シークレットをチャットに通すべきではありません。それ以外の操作――doctor のチェック、モデルの調査、プラットフォームへの一括展開、ブランドのひな形作成、スプライトシート、9 スライスの設定――はすべて、自然言語で依頼するとアシスタントが呼び出す MCP ツールです。


比較

ツールプロンプトの強化複数モデルへのルーティングキー不要開発用アセット一式オフラインでのプラットフォーム一括展開
Promptati / PromptHeroシネマティックのみ✗✗✗✗
Looka / Brandmark / Designs.ai✗✗✗一部✗
ChatGPT / Midjourney / Ideogram (direct)✗✗✗✗✗
appicon.co✗✗✓一部iOS のみ
flutter_launcher_icons✗✗✓一部iOS + Android
prompt-to-asset✓✓(60 以上のモデル)✓(Pollinations / HF / Horde / SVG)✓✓(iOS + Android + PWA + visionOS + favicon + Flutter)

セキュリティ

このツールは最大 15 プロバイダーの API キーを扱います。譲れない原則は次のとおりです。

  • キーは環境変数にのみ保存します。 ディスクへの書き込み、ログへの記録、MCP レスポンスでの返却は一切行いません。プロバイダーのエラーボディは、ホスト LLM に渡す前に redact()(packages/mcp-server/src/security/redact.ts)を通します。
  • パスへのアクセスは許可リストで制限します。 image_path / output_dir / existing_mark_svg はシンボリックリンクを解決し、プロジェクトの cwd、設定済みの出力ディレクトリ、キャッシュディレクトリ、OS の一時ディレクトリの範囲外を拒否します。P2A_ALLOWED_PATHS=/path1:/path2 で許可範囲を広げられます。
  • SVG は書き込む前に XSS 対策のサニタイズを行います。 <script>、<foreignObject>、on*= ハンドラー、javascript: URI、外部の <image href> / <use href>、ネットワーク経由の CSS @import はすべて拒否されます。このチェックは常に実行され、SVGO は必要ありません。
  • コストの上限を設定できます。 P2A_MAX_SPEND_USD_PER_RUN=5.00 を設定すると、1 回のツール呼び出しに上限を設けられます。事前見積もりが上限を超える場合、呼び出しは拒否されます。無料枠のルートは常に $0 です。
  • 起動時にデータの整合性を確認します。 起動時に assertDataIntegrityAtBoot() を実行します。ルーティングルールがレジストリに存在しないモデル ID を参照している場合、明確なエラーを表示してサーバーの起動を拒否します。p2a doctor --data を使って CI で確認できます。
  • テレメトリーはありません。ルーティング先のプロバイダーが明示的に必要としない限り、リモート呼び出しは行いません。

ポリシーの全文:SECURITY.md。


調査に基づく決定

実装されているルーティングルール、文体の切り替え、安全領域のサイズ、テキストの上限は、いずれも docs/research/ 内のファイルに裏付けられています。asset_enhance_prompt は呼び出しごとに routing_trace.research_sources 配列を返します。観点からコードへの対応表と、実装済みの内容および保留中の内容を正直に記録した一覧は、docs/RESEARCH_MAP.md にあります。


開発

git clone https://github.com/MohamedAbdallah-14/prompt-to-asset.git
cd prompt-to-asset
npm install
npm run build
npm run typecheck
npm run lint
npm test               # vitest watch
npm run test:run       # vitest run (CI)
npm run smoke          # list tools via MCP stdio + correctness assertions
npm run sync           # regenerate IDE mirrors from SSOTs
npm run verify         # byte-verify mirrors match SSOTs

SSOT は skills/*/SKILL.md、rules/*.md、.claude-plugin/、data/*.json にあります。.cursor/、.claude/、.windsurf/ を直接編集しないでください。これらは scripts/sync-mirrors.sh と CI によって再生成され、バイト単位で検証されます。


コミュニティ

スターの履歴

このリポジトリのおかげで AppIconSet を手作業で作る手間が省けたなら、スターを付けていただくと、同じ課題に取り組むほかの開発者にもこのプロジェクトが届きやすくなります。


もっと読む

この設計の背景を詳しく紹介しています。

Medium と dev.to にも掲載しています。


ライセンス

MIT © prompt-to-asset のコントリビューター。

34 カテゴリーの調査資料を基に構築されています。SYNTHESIS.md と RESEARCH_MAP.md をご覧ください。

⬆ トップに戻る

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。