mcpField
S
SudoMock

SudoMock

ローカル
github.com/sudomock開発ツール05 日前に更新

SudoMock について

SudoMock のモックアップ生成 API を MCP クライアントに公開するサーバーです。商品画像を作成するデザインや EC のワークフロー向けに、PSD と写真モックアップへのアート配置、テキストレイヤー編集、レンダリング画像の取得を提供します。

主な機能

  1. 01PSD テンプレートの一覧と詳細表示
  2. 02スマートオブジェクトへのアート配置とレンダリング
  3. 03対応するテキストレイヤーの編集
  4. 04写真モックアップ作成と印刷面の検出
  5. 05非同期ジョブと Webhook の管理

活用シーン

  1. 01PSD モックアップにアートをレンダリング
  2. 02写真モックアップの表面や印刷領域にデザインを配置
  3. 03非同期レンダリングの実行と状態確認
  4. 04ジョブ完了イベント用の Webhook を設定

MCP 対応

ローカル stdio MCP サーバーを通じて、モックアップ、写真モックアップ、アートのアップロード、レンダリング、ジョブ追跡、Webhook 管理のツールを公開します。クライアントが子プロセスとして起動し、SUDOMOCK_API_KEY で認証します。README によると、リモート HTTP/OAuth 方式は現在利用できません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"sudomock": {
"command": "npx",
"args": [
"-y",
"@sudomock/mcp"
],
"env": {
"SUDOMOCK_API_KEY": "<SUDOMOCK_API_KEY>"
}
}
}
}
起動コマンドnpx -y @sudomock/mcp
設定が必要な環境変数
SUDOMOCK_API_KEYシークレットYour SudoMock API key starting with sm_

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

パッケージ
npm@sudomock/mcp3.8.1

ツール

9

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

パラメーター型必須説明
limitnumberいいえページあたりの結果数(1-100、デフォルト 20)
namestringいいえ名前で絞り込みます(大文字と小文字を区別しない部分文字列一致)。
offsetnumberいいえページネーションのオフセット(デフォルトは 0)
sort_byenumいいえ並べ替えフィールドcreated_at | name
sort_orderenumいいえ並べ替え方向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_background7 日間利用できる公開 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_psdPhotoshop の PSD/PSB テンプレートをアップロードします(同期または非同期)0
list_2d_mockups保存済みの写真モックアップテンプレートを一覧表示します。購入者向けの商品には customizable_only を使用します0
get_2d_mockup写真モックアップ 1 件の保存済み印刷エリアと表面を取得します0
update_2d_print_areas写真モックアップの印刷エリアの形状を置き換えます0
delete_2d_mockup写真モックアップテンプレートを削除します0
get_jobjob_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_endpointsWebhook エンドポイントを一覧表示します0
update_webhook_endpointWebhook エンドポイントを編集、または有効/無効にします0
delete_webhook_endpointWebhook エンドポイントを削除します0
rotate_webhook_secretWebhook 署名シークレットをローテーションします0
test_webhook_endpoint署名付きの webhook.test イベントを送信します0
list_webhook_deliveriesエンドポイントへの配信試行を一覧表示します0
replay_webhook_delivery失敗した配信を 1 件再実行します0
replay_failed_webhook_deliveriesエンドポイントへの失敗した配信をすべて再実行します0
どちらの表記でも使えます

製品では2種類のテンプレートを PSD モックアップとフォトモックアップと呼んでおり、ツールも同じ名前で呼び出せます。上記の名前は変更されていません。表の名前はすべてこれまでどおり使え、併記されている表記も、引数を含めて同じツールです。どちらでもお使いください。

表の名前別名
list_mockupslist_psd_mockups
get_mockup_detailsget_psd_mockup
update_mockupupdate_psd_mockup
delete_mockupdelete_psd_mockup
render_mockuprender_psd_mockup
create_2d_mockupcreate_photo_mockup
list_2d_mockupslist_photo_mockups
get_2d_mockupget_photo_mockup
update_2d_print_areasupdate_photo_mockup_print_areas
delete_2d_mockupdelete_photo_mockup
render_2d_surface, render_2d_print_arearender_photo_mockup
get_2d_mockupget_2d_mockup_details
test_webhook_endpointsend_webhook_test_event
render_photo_mockuprender_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 を設定して」
  • 「残りのクレジットはいくつ?」

リンク

ライセンス

MIT

コメント

MCP は初めてですか?

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

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