SudoMock について
SudoMock のモックアップ生成 API を MCP クライアントに公開するサーバーです。商品画像を作成するデザインや EC のワークフロー向けに、PSD と写真モックアップへのアート配置、テキストレイヤー編集、レンダリング画像の取得を提供します。
主な機能
- 01PSD テンプレートの一覧と詳細表示
- 02スマートオブジェクトへのアート配置とレンダリング
- 03対応するテキストレイヤーの編集
- 04写真モックアップ作成と印刷面の検出
- 05非同期ジョブと Webhook の管理
活用シーン
- 01PSD モックアップにアートをレンダリング
- 02写真モックアップの表面や印刷領域にデザインを配置
- 03非同期レンダリングの実行と状態確認
- 04ジョブ完了イベント用の Webhook を設定
MCP 対応
ローカル stdio MCP サーバーを通じて、モックアップ、写真モックアップ、アートのアップロード、レンダリング、ジョブ追跡、Webhook 管理のツールを公開します。クライアントが子プロセスとして起動し、SUDOMOCK_API_KEY で認証します。README によると、リモート HTTP/OAuth 方式は現在利用できません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | ページあたりの結果数(1-100、デフォルト 20) |
| name | string | いいえ | 名前で絞り込みます(大文字と小文字を区別しない部分文字列一致)。 |
| offset | number | いいえ | ページネーションのオフセット(デフォルトは 0) |
| sort_by | enum | いいえ | 並べ替えフィールドcreated_at | name |
| sort_order | enum | いいえ | 並べ替え方向asc | desc |
詳細
SudoMock MCP サーバー
Claude、Cursor、Windsurf、VS Code からフォトリアルな商品モックアップを生成します。
SudoMock のモックアップ生成 API 用の Model Context Protocol サーバーです。PSD テンプレートをアップロードし、スマートオブジェクトにアートワークを配置し、対応するテキストレイヤーを編集して、レンダリング済み画像の URL を取得できます。すべて自然言語で操作できます。
クイックスタート
これはローカルの stdio サーバーです。MCP クライアントが npx 経由で子プロセスとして起動し、
SUDOMOCK_API_KEY で認証します。
claude mcp add sudomock \
-e SUDOMOCK_API_KEY=sm_your_key_here \
-- npx -y @sudomock/mcp
API キーは sudomock.com/dashboard/api-keys で取得できます。
その他のクライアント向けの JSON 設定(Cursor、Windsurf、VS Code)
{
"mcpServers": {
"sudomock": {
"command": "npx",
"args": ["-y", "@sudomock/mcp"],
"env": {
"SUDOMOCK_API_KEY": "sm_your_key_here"
}
}
}
}
注: ホスト型のリモート(HTTP/OAuth)トランスポートは、まだ利用できません。この パッケージで提供しているのは、上記のローカル stdio サーバーのみです。
ツール
| ツール | 説明 | クレジット |
|---|---|---|
list_mockups | アップロード済みのモックアップテンプレートを一覧表示します | 0 |
get_mockup_details | スマートオブジェクトの UUID、寸法、ブレンドモードを取得します。include_layers を指定すると、スマートオブジェクト内のレイヤーを含むすべてのレイヤーとその UUID を取得します | 0 |
render_mockup | アートワークや編集可能なテキストを使ってモックアップをレンダリングします。hidden_layers を指定すると、選択したレイヤーを除外できます | 1 |
remove_background | 7 日間利用できる公開 URL で、背景が透明な PNG の切り抜きを取得します | 25 |
list_fonts | アップロードしたフォントを含む、テキストレイヤーで利用できるフォントを一覧表示します | 0 |
create_upload_url | ローカルファイルのアップロード URL と、アップロード後にそのファイルが持つ URL を取得します | 0 |
create_2d_mockup | 写真モックアップを作成し、印刷可能な表面を自動的に検出します | 25 |
render_2d_surface | 表面全体にアートワークを印刷します(総柄) | 5 |
render_2d_print_area | 保存済みの印刷エリア(描画した領域)1 か所にアートワークを印刷します | 5 |
render_video | モックアップをアニメーション化して動画クリップを作成します(常に非同期) | 従量制(アカウントごとに 1 回無料、その後は従量制) |
upload_psd | Photoshop の PSD/PSB テンプレートをアップロードします(同期または非同期) | 0 |
list_2d_mockups | 保存済みの写真モックアップテンプレートを一覧表示します。購入者向けの商品には customizable_only を使用します | 0 |
get_2d_mockup | 写真モックアップ 1 件の保存済み印刷エリアと表面を取得します | 0 |
update_2d_print_areas | 写真モックアップの印刷エリアの形状を置き換えます | 0 |
delete_2d_mockup | 写真モックアップテンプレートを削除します | 0 |
get_job | job_id で非同期ジョブのステータスを確認します | 0 |
wait_for_job | 非同期ジョブが成功または失敗するまでポーリングします | 0 |
list_jobs | 非同期のレンダリング、動画、アップロード、写真モックアップのジョブを一覧表示します | 0 |
get_account | プラン、クレジット、プリペイド残高、使用状況を確認します | 0 |
update_mockup | モックアップテンプレートの名前を変更します | 0 |
delete_mockup | モックアップテンプレートを削除します | 0 |
create_webhook_endpoint | 非同期ジョブの完了を通知する Webhook を登録します。イベント名は指定した名前に固定されます | 0 |
list_webhook_endpoints | Webhook エンドポイントを一覧表示します | 0 |
update_webhook_endpoint | Webhook エンドポイントを編集、または有効/無効にします | 0 |
delete_webhook_endpoint | Webhook エンドポイントを削除します | 0 |
rotate_webhook_secret | Webhook 署名シークレットをローテーションします | 0 |
test_webhook_endpoint | 署名付きの webhook.test イベントを送信します | 0 |
list_webhook_deliveries | エンドポイントへの配信試行を一覧表示します | 0 |
replay_webhook_delivery | 失敗した配信を 1 件再実行します | 0 |
replay_failed_webhook_deliveries | エンドポイントへの失敗した配信をすべて再実行します | 0 |
どちらの表記でも使えます
製品では2種類のテンプレートを PSD モックアップとフォトモックアップと呼んでおり、ツールも同じ名前で呼び出せます。上記の名前は変更されていません。表の名前はすべてこれまでどおり使え、併記されている表記も、引数を含めて同じツールです。どちらでもお使いください。
| 表の名前 | 別名 |
|---|---|
list_mockups | list_psd_mockups |
get_mockup_details | get_psd_mockup |
update_mockup | update_psd_mockup |
delete_mockup | delete_psd_mockup |
render_mockup | render_psd_mockup |
create_2d_mockup | create_photo_mockup |
list_2d_mockups | list_photo_mockups |
get_2d_mockup | get_photo_mockup |
update_2d_print_areas | update_photo_mockup_print_areas |
delete_2d_mockup | delete_photo_mockup |
render_2d_surface, render_2d_print_area | render_photo_mockup |
get_2d_mockup | get_2d_mockup_details |
test_webhook_endpoint | send_webhook_test_event |
render_photo_mockup | render_2d_mockup |
render_photo_mockup は、単一のツールの別名というだけではありません。このツールから、どちらの種類のターゲットもレンダリングできます。モックアップを mockup_id として渡し、surface_uuid(coverage または明示的な width + height でサイズを指定)か、print_area_uuid(fit または明示的な width + height でサイズを指定)のどちらか一方を正確に指定してください。mockup_uuid を使い、ツールを選んでターゲットを指定する従来の方法は、引き続き render_2d_surface と render_2d_print_area で利用できます。render_2d_mockup は render_photo_mockup の別名で、モックアップは mockup_uuid として渡します。
非同期ジョブ
render_mockup、upload_psd、create_2d_mockup、両方のフォトモックアップレンダリングツールは is_async: true を受け付け、render_video は常に非同期です。これらは最終結果の代わりに、すぐに job_id(HTTP 202)を返します。(create_2d_mockup とフォトモックアップレンダリングツールは、デフォルトでは同期処理され、モックアップ/レンダリング結果を直接返します。)get_job でポーリングするか、wait_for_job でジョブが終端ステータスに達するまで待機してください。完了すると、result_url、mockup_uuid、credits_charged、および payg(従量課金ジョブの場合は {credits, unit_price, cost}、それ以外は null)が返されます。
フォトモックアップをレンダリングする場合は、get_2d_mockup で確認したターゲットに合うツールを選んでください。写真内の印刷可能な製品と、部屋の写真の主壁面はそれぞれサーフェスで、個別の surface_uuid を持ちます。render_2d_surface はそのサーフェス全体に印刷し、coverage の割合または明示的な width + height を指定します。プリントエリアは、胸元のロゴのように、製品上に描画された範囲の限られた領域です。render_2d_print_area では print_area_uuid と、fit または明示的な width + height を指定します。製品は両方を持つことができ、それぞれ別のターゲットです。保存済みのプリントエリアがあっても、その上にあるサーフェスは引き続き利用できます。
サイズ指定は、1回のレンダリングにつき1つの方法を選びます。相対指定か正確なサイズの枠のどちらか一方だけを送信し、width と height は必ずセットで指定してください。position、offset_x、offset_y、rotation を使って、どちらの種類のターゲットにもアートワークを配置できます。指定しない項目はリクエストにも含まれないため、ここに記載された値が引き継がれるのではなく、レンダラー独自のデフォルトが適用されます。
フォトモックアップの surfaces 内の各エントリーには label があり、pillow や wall のように、そこで検出された対象を示します。これにより、選択する前にサーフェスを区別できます。update_2d_print_areas では、各エリアに任意で print_area_id を指定できます。モックアップ内の ID を指定したエリアはその ID を維持し、指定しないエリアには新しい ID が割り当てられます。
パターン
tile はアートワークをターゲット全体にパターンとして繰り返し、tile_spacing はタイル間に隙間を空けます。これはタイルサイズに対する割合で、0〜100 の範囲です。そのため、横方向の隙間はタイル幅に対するその割合、縦方向の隙間はタイル高さに対するその割合になります。tile が true の場合にのみ使用されます。
- PSD テンプレートでは、どちらも
render_mockupのsmart_objectsエントリ内にあるassetに指定します。sizeは 1 つのタイルのサイズ、fitは各タイル内にアートワークを配置する方法、positionはグリッドの開始位置を設定します。 render_videoでは、対象のスマートオブジェクトを埋めるためのパラメーターとして指定します。asset_widthとasset_heightは 1 つのタイルのサイズです。- 写真モックアップのレンダリングツールでは、パラメーターとして指定します。サイズ設定(
coverage、fit、またはwidthとheight)は 1 つのタイルのサイズです。offset_xとoffset_yを指定したpositionでグリッドの開始位置を設定します。
タイルにはサイズが必要です。サイズを指定しない場合、API は 422 を返します。
背景の削除
remove_background は、7 日間有効な透過 PNG の URL を返します。有効期間中は、その URL をそのまま artwork_url として渡せます。1 回のレンダリング中にインラインでアートワークの背景を削除するには、代わりに render_mockup またはいずれかの写真モックアップレンダリングツールに remove_background: true を渡します。どちらの場合も、アートワーク 1 点につき 25 クレジットがかかります。処理に失敗した場合、クレジットは自動的に返金されます。
Webhook
非同期ジョブの完了通知を受け取るには、create_webhook_endpoint でエンドポイントを登録します。配信には 2 つのヘッダーで署名します。X-SudoMock-Signature(作成時またはローテーション時に返されるシークレットを使い、${timestamp}.${rawBody} に対して計算した 16 進数の HMAC-SHA256)と、X-SudoMock-Timestamp(Unix 秒)です。定時間比較で検証し、|now - timestamp| > 300s の場合は拒否してください。
レンダリング、アップロード、動画ジョブの配信には {event, job_id, kind, status, result_url, error, created_at} が含まれます。型付きの写真モックアップ作成イベントには、さらに version、mockup_id、name と、print_areas(ready の場合)または reason(rejected の場合)が含まれます。型付きの写真モックアップレンダリングイベントには、mockup_id、result_url、該当する場合は公開用の {error_code, message} エラー、さらに任意で export_format / duration_ms が含まれます。イベントタイプは次のとおりです。
render.succeeded、render.failed、upload.succeeded、video.succeeded、
video.failed、photo_mockup.ready、photo_mockup.rejected、
photo_mockup.failed、photo_mockup_render.succeeded、
photo_mockup_render.failed、webhook.test。
5 つの写真モックアップイベントには、旧形式の名前もあります。2d_mockup.ready、2d_mockup.rejected、2d_mockup.failed、2d_render.succeeded、2d_render.failed です(ペイロード内の kind は 2d_create / 2d_render)。エンドポイントが受け取る名前の形式は、そのエンドポイントの event_naming ピンで決まります。これは create_webhook_endpoint で設定され、すべてのエンドポイントで返されます。値は current(上記の名前)または legacy です。ピンを指定せずに作成した場合、event_types で写真モックアップのイベントをファミリー名のみで指定したときに限り current が選ばれます。それ以外の場合は、リストが空の場合も含めて legacy が選ばれます。ピンが導入される前に登録されたエンドポイントは legacy のままなので、旧形式の名前を前提とした受信側は変更せずに動作し続けます。受信側で新しい名前を処理できるようになったら、update_webhook_endpoint と event_naming: "current" を使って切り替えてください。これだけを送信すると、再設定によりエンドポイントに保存されたサブスクリプションリストも対応する名前に変更されます。
ログ
各ツール呼び出しは stderr に JSON を 1 行書き込みます。MCP ホストはこれをログファイルに保存します。記録されるのは、ツール名、呼び出しにかかった時間、成功したかどうかです。例:{"event":"mcp_tool_call","tool":"list_mockups","duration_ms":312,"ok":true}。引数、API キー、ファイルの内容、API の応答がログに記録されることはありません。各 API リクエストでは、User-Agent ヘッダーと X-SudoMock-Client ヘッダーで、このパッケージを mcp-stdio/<version> として識別します。
料金とアカウントの上限
レンダリング1回あたり $0.002 から利用できるサブスクリプションがあります。サブスクリプションがない場合は、レンダリング1回あたり $0.05 です。これは、有料プランのスタンドアロン型モックアップ API が請求する料金と同じです。残高への入金には、初回の最低入金額 $5 が必要です。フォトモックアップと動画は、一律のレンダリング料金ではなく制作コストに応じて価格が設定されているため、上記のクレジット欄は一律ではありません。
新しいアカウントには 500 クレジットが1回限りで付与 され、利用にカードは必要ありません。カードの確認が完了し、最低入金額の $5 が入金されるまでは、そのアカウントはトライアル状態となり、行うレンダリングにはすべてウォーターマークが付き、最大 1,024 px に制限されます。PSD テンプレートは 5 個まで保持でき、レンダリングは同時に 1 件まで実行できます。また、13日間レンダリングに使われていないテンプレートは削除されます。
残高に入金すると、これらの制限が一度に解除されます。ウォーターマークと幅の上限がなくなり、保存できるテンプレート数は 150 個、レンダリングは同時に 25 件、アップロードは同時に 10 件になります。また、アイドル状態のテンプレートが削除されなくなります。
トライアルは独立したプランではありません。従量課金制プランの未入金状態であるため、入金前後で get_account が報告するプランは同じです。変わるのは残高です。
そのため、従量課金のアカウントには月間利用枠がなく、支払いが可能な状態でも、get_account は credits_limit と credits_remaining を 0 として報告します。これらとあわせて prepaid_balance を確認するか、両方の情報を1行で示し、入金済みのアカウントを 0 / 0 と報告しない funding_summary を確認してください。
リクエスト例
- 「自分のモックアップテンプレートを一覧表示して」
- 「このデザインを使ってTシャツのモックアップをレンダリングして:https://example.com/logo.png」
- 「編集可能な見出しテキストを置き換えてから、モックアップをレンダリングして」
- 「この商品写真の背景を切り抜いてから、トートバッグに配置してレンダリングして」
- 「フォトモックアップを一覧表示して、最初のものにこのアートワークを使ってレンダリングして:https://example.com/logo.png」
- 「このデザインを非同期でレンダリングして、完了するまで待って」
- 「このフォトモックアップのレンダリングを非同期でキューに追加して、追跡用のジョブ ID を教えて」
- 「パーカーのモックアップを5秒の動画クリップにアニメーション化して」
- 「この PSD を新しいテンプレートとしてアップロードして:https://example.com/mockup.psd」
- 「レンダリング完了時に通知を受け取れるよう、https://example.com/hooks に Webhook を設定して」
- 「残りのクレジットはいくつ?」
リンク
- ダッシュボード -- モックアップと API キーを管理
- API ドキュメント -- REST API の完全なリファレンス
- 料金
- ステータス -- サービス稼働状況
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。