mcpField
S
SudoMock

SudoMock

本地服务
github.com/sudomock开发工具05 天前更新

关于 SudoMock

SudoMock MCP Server 将 SudoMock 的模型图生成 API 提供给 MCP 客户端,适合需要制作商品展示图的设计与电商工作流。它支持 PSD 模板和照片模型图,可通过工具放置图稿、编辑文本图层并获取渲染图像。

主要功能

  1. 01列出并查看 PSD 模板
  2. 02将图稿放入智能对象并渲染
  3. 03编辑支持的文本图层
  4. 04创建照片模型图并检测可打印表面
  5. 05管理异步任务与 Webhook

适用场景

  1. 01为商品图稿生成 PSD 模型图
  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 模板,将 artwork 放置到智能对象上,编辑支持的文本图层,并获取渲染后的图片 URL —— 全部通过自然语言完成。

快速开始

这是一个本地 stdio 服务:你的 MCP 客户端通过 npx 将其作为子进程启动, 并使用 SUDOMOCK_API_KEY 进行身份验证。

claude mcp add sudomock \
  -e SUDOMOCK_API_KEY=sm_your_key_here \
  -- npx -y @sudomock/mcp

在 sudomock.com/dashboard/api-keys 获取 API 密钥。

其他客户端(Cursor、Windsurf、VS Code)的 JSON 配置
{
  "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使用 artwork 和/或可编辑文本渲染样机;hidden_layers 可将选定图层排除在外1
remove_background获取透明 PNG 抠图,其公开 URL 将保留 7 天25
list_fonts列出文本图层可用的字体,包括你上传的字体0
create_upload_url获取本地文件的上传 URL,以及该文件上传后的 URL0
create_2d_mockup创建照片样机并自动检测可打印表面25
render_2d_surface在整个表面上打印 artwork(满版印刷)5
render_2d_print_area将 artwork 打印到一个已保存的打印区域(绘制的区域)5
render_video将样机制作成视频片段(始终异步)按成本计费(每个账户可免费使用一次,之后按成本计费)
upload_psd上传 Photoshop PSD/PSB 模板(同步或异步)0
list_2d_mockups列出已保存的照片样机模板;使用 customizable_only 可筛选出可供购物者直接使用的商品0
get_2d_mockup获取一个照片样机已保存的打印区域及其表面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重放单次失败的投递0
replay_failed_webhook_deliveries重放某个端点的所有失败投递0
两种拼写都可用

该产品将两类模板称为 PSD mockup 和 photo mockup,工具也支持这两种名称。上文没有任何名称被重命名:表格中的每个名称都和以前一样可用,旁边列出的拼写则是具有相同参数的同一个工具。任选其一即可。

表格中的名称也支持的名称
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 作为 mockup_id 传入,并且准确指定 surface_uuid(通过 coverage 或显式的 width + height 设置大小)或 print_area_uuid(通过 fit 或显式的 width + height 设置大小)中的一个。render_2d_surface 和 render_2d_print_area 仍然通过选择工具来选择目标,并使用 mockup_uuid。render_2d_mockup 是 render_photo_mockup 的另一个名称,mockup 通过 mockup_uuid 传入。

异步任务

render_mockup、upload_psd、create_2d_mockup 和两个 photo mockup 渲染工具都接受 is_async: true,而 render_video 始终为异步。这些工具会立即返回 job_id(HTTP 202),而不是最终结果。(create_2d_mockup 和 photo mockup 渲染工具默认同步运行,并直接返回 mockup / 渲染结果。)使用 get_job 轮询,或者让 wait_for_job 阻塞,直到任务达到终止状态并返回 result_url、mockup_uuid、credits_charged 和 payg(按量付费任务会返回 {credits, unit_price, cost},否则为 null)。

渲染 photo mockup 时,请选择与从 get_2d_mockup 读取的目标相匹配的工具。照片中的每个可打印产品,以及房间照片中的主墙面,都是具有独立 surface_uuid 的表面:render_2d_surface 会在整个表面上打印,并接受 coverage 百分比或显式的 width + height。打印区域是某人在产品上绘制的有界区域,例如胸前的徽标:render_2d_print_area 接受其 print_area_uuid,以及 fit 或显式的 width + height。一个产品可以同时拥有这两种目标,它们彼此独立——已保存的打印区域不会限制其所在的表面。

每次渲染的尺寸设置只能有一种:发送相对选项或精确尺寸框,不能同时发送,并且 width 和 height 必须一起发送。position、offset_x、offset_y 和 rotation 可用于在任意一种目标上放置图稿。省略的参数不会包含在请求中,因此渲染器会采用自身的默认值,而不是使用此处保存的默认值副本。

photo mockup 的 surfaces 中每个条目都包含一个 label,用于描述检测到的表面,例如 pillow 或 wall,以便你在选择表面之前区分它们。update_2d_print_areas 接受每个区域上可选的 print_area_id:如果区域传入 mockup 的某个 ID,就会保留该 ID;未传入 ID 的区域则会获得一个新 ID。

图案平铺

tile 会将图稿重复平铺为覆盖整个目标的图案;tile_spacing 则会在平铺块之间留出间距:以平铺块尺寸的百分比表示,范围为 0 到 100。因此,水平间距是平铺块宽度的该百分比,垂直间距是平铺块高度的该百分比。只有当 tile 为 true 时才会使用它。

  • 对于 PSD 模板,两者都放在 render_mockup 中 smart_objects 条目的 asset 里。size 表示一个平铺块的尺寸,fit 用于将图稿放入每个平铺块,position 用于设置网格的起始位置。
  • render_video 将它们作为要填充的智能对象的参数,并使用 asset_width 和 asset_height 表示一个平铺块的尺寸。
  • 照片样机渲染工具将它们作为参数。尺寸设置(coverage、fit,或 width 和 height)表示一个平铺块的尺寸,position 与 offset_x、offset_y 一起用于设置网格的起始位置。

平铺块需要指定尺寸;未指定时,API 会返回 422。

移除背景

remove_background 会返回一个有效期为 7 天的透明 PNG URL。在此有效期内,你可以直接将该 URL 作为 artwork_url 传回。若要在单次渲染中直接清理图稿,请将 remove_background: true 传给 render_mockup 或任一照片样机渲染工具。无论哪种方式,每张图稿都会收取 25 个点数;如果处理失败,点数会自动退还。

Webhook

使用 create_webhook_endpoint 注册端点,以便在异步任务完成时收到通知。投递内容使用两个标头签名:X-SudoMock-Signature(使用创建或轮换时返回的密钥,对 ${timestamp}.${rawBody} 计算的十六进制 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。

这五种照片样机事件也有旧版名称: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;MCP 主机会将其保存在日志文件中。内容包括工具名称、调用耗时以及是否成功,例如 {"event":"mcp_tool_call","tool":"list_mockups","duration_ms":312,"ok":true}。参数、API 密钥、文件内容和 API 响应绝不会记录。每个 API 请求都会在 User-Agent 和 X-SudoMock-Client 标头中使用 mcp-stdio/<version> 标识此软件包。

定价和账户限制

订阅后,每次渲染低至 $0.002。不订阅时,每次渲染收费 $0.05,与独立样机 API 在付费方案中的费率相同。为余额充值,首次至少需要支付 $5。照片样机和视频按制作成本定价,而非采用统一的渲染费率,因此上方的 Credits 列并不统一。

新账户会一次性获赠 500 个积分,使用这些积分无需绑定银行卡。在验证银行卡并充值至少 $5 之前,该账户处于试用状态,所有渲染结果都会带水印,宽度上限为 1,024 px。账户最多可保留 5 个 PSD 模板,每次只能运行 一个 渲染任务;超过 13 天未用于渲染的模板会被删除。

充值后,所有限制会一次性解除。水印和宽度上限会取消,存储模板上限提高到 150,最多可同时运行 25 个渲染任务和 10 个上传任务,模板也不会再因闲置而被删除。

试用并非单独的方案,而是按量付费层级的未充值状态,因此充值前后,get_account 报告的层级相同;变化的是余额。

因此,按量付费的账户没有月度额度,而且即使账户完全可以付费,get_account 报告的 credits_limit 和 credits_remaining 仍为 0。请同时查看 prepaid_balance,或查看 funding_summary;它会在一行中显示这两项信息,并且绝不会将已充值的账户报告为 0 / 0。

请求示例

  • “列出我的样机模板”
  • “用这个设计渲染 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。