像塑 MCP Plus
Unofficial integration with ByteDance's Douyin AR (像塑) macOS editor, proxying its official MCP tools and adding asset-library browsing/search/apply, homepage works browsing/download, project window management, menu item insertion, FaceWarpX brush intensity control, and object/resource cleanup.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@像塑 MCP Plus search the asset library for face filters and apply the first one"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
xiangsu-mcp-plus
像塑(Douyin AR,macOS)的 MCP 扩展:一个 MCP 服务同时提供像塑官方 MCP 的全部工具,以及官方 MCP 够不到的编辑器能力。
官方工具原样转发(
get_scene、edit_by_dsl、capture_preview、save_project等),像塑重启后自动重连,官方工具列表变化时通知客户端刷新。唯一的例外是capture_preview:9.8.1 起官方截图是给窗口里的预览区域拍照,窗口最小化或不可见时是黑的,这时改为重置预览、等到重载后的画面,从预览的渲染结果截取并缩小到官方的 320×569(不含界面元素);窗口可见时照旧转发,这时刚改完场景或换了预览视频可能还是旧画面(工具说明里写了这一点),要确认新画面用preview_frames。官方素材库:浏览、搜索、看封面、应用(脸部变形、美型、AI 实时变脸、美妆、滤镜、贴纸、画面特效等),流程与素材库面板相同;包括「素材广场」(其他创作者分享的现成 AI 图片、AI 妆容、自定义实时变脸、贴纸和素材包,应用时不重新生成、不扣额度)和自己的「收藏」。
「添加对象」菜单:工具栏美妆 / 美型 / AI 实时变脸里的全部官方功能项(美容、面部生成、表情生成、性别年龄、五官处理、身体换装等),可看示意图后按菜单项 ID 添加。
AI 组合效果(用户拍照后在云端按工作流出图或出视频):像 AI 效果窗口的「新建工作流」一样建工作流,交给官方工作流工具编辑,再像「应用」一样放进场景。
首页作品:浏览、搜索、看封面,下载完整工程到本地或直接在编辑器里打开(官方工程和已发布的作品),供 agent 读取场景、脚本和资源,学习别人的做法;下载的东西都有登记,用完即删,最长保留 24 小时。
交付:设置并上传图标、特效检测(和编辑器里点「特效检测」一样,云端检测)、填好提交窗口(名称、触发提示、摄像头方向、灵感、任务,一直走到「提交审核」页并等检测跑完;最后的「提交审核」由你来点)、手机预览二维码、把已领取的任务或创作灵感绑定到工程。
抖音音乐:按分类或关键词找歌,设为特效音乐。
灵感、任务、排行榜:首页「灵感」页签和活动中心的任务(征集任务、成长任务),以及像塑移动版才有的排行榜(年轻 / 男生 / 女生喜爱榜、每日投稿榜、热玩互动榜、跟拍榜,各榜按两级分类细分;热点榜;专题合集里两百多期主题特效榜和模板榜;创新计划月榜和官方精选)和成长之路(特效师等级、奖励和各目标进度),用编辑器里登录的账号读取;可收藏灵感、领取任务。
我的特效审核:自己提交过的特效和审核状态,审核不通过的具体原因和完整审核记录(编辑器里只显示「审核未通过」,原因原本只能在像塑移动版的审核记录页看到)。
塑型画笔(FaceWarpX)强度:官方能读不能写,这里按检查器滑块的方式改。
工程窗口:新建空白工程(首次保存到指定目录)、打开、关闭。
干净删除:删除对象时找出只被它使用的资源和它导入时带进来的素材包文件夹,确认后删除。
非官方项目,与字节跳动 / 抖音无关。依赖像塑编辑器的内部模块(9.7.2 实测),像塑升级后可能失效;
ext_status会逐项自检并列出缺失的接口。仓库不包含任何像塑的程序、代码或素材。只用于学习和个人制作,禁止用来抄袭他人作品(详见协议与声明)。npm 包名
@muqian/xiangsu-mcp-plus。
工作方式
部分 | 位置 | 作用 |
编辑器插件 |
| 像塑用户插件。每个工程窗口里开一个只监听 |
MCP 服务 |
| stdio MCP。转发官方 MCP( |
插件把 {pid, port, token, startedAt} 写到 ~/.xiangsu-mcp-ext/instances/<pid>.json(权限 600)。窗口崩溃或被强退时这份记录会留下来,所以只有该 pid 的进程还在、并且启动时间不晚于 startedAt 时才算开着的窗口;pid 被后来的进程复用时不算。插件日志在 ~/.xiangsu-mcp-ext/logs/plugin.log;MCP 服务每次工具调用(名称、耗时、报错、是否发了进度)和异常退出记在 ~/.xiangsu-mcp-ext/logs/server.log,超过 5 MB 时旧的移到 server.log.1;导入记录在 ~/.xiangsu-mcp-ext/imports/。
按工程找窗口时,同时询问各窗口开着哪个工程,卡住或正在关闭的窗口(5 秒没回应)不影响找到其它窗口,并记住每个工程上次所在的窗口,下次先问它。客户端请求带进度令牌时,工具调用期间每 5 秒发一次进度,避免长调用(连续截帧、等提交页检测)被当成空闲掐断。
Related MCP server: DC-COCO-MCP
工具
官方 MCP 的工具按原名提供。扩展工具都接受 project_path 或官方的 instance_id 指定工程(只开一个工程窗口时可省略):
工具 | 作用 |
| 官方 MCP 连接状态;每个工程窗口的 pid、工程路径、instance_id、编辑器接口自检 |
| 打开已有工程、新建空白工程并保存到指定目录、关闭工程窗口(有未保存改动时默认拒绝) |
| 看图:列表类工具返回的引用( |
| 官方素材库面板清单(不传 |
| 一张 AI 图片卡片的整组结果图地址(按 |
| 下载素材包、校验 MD5、导入并放进场景(可撤销);素材广场卡片按 |
| 首页作品分页列表(每页带上全部分类:推荐、官方工程、新手必做、游戏、妆容、AI玩法…;可按推荐 / 最新 / 使用量排序, |
| 按特效 ID 查排行榜等处的特效在首页有没有工程(一次最多 20 个),逐个返回 |
| 下载并解压完整工程(与首页点开作品同一流程,但不开窗口),返回工程目录和文件清单; |
| 下载并在新窗口里按首页的方式打开(不弹版本升级提示,工程处于未保存状态),返回 pid 和 instance_id |
| 删除下载过的作品(含 |
| 把一张图片裁成 360×360 PNG 设为工程图标(默认女性、男性两版,提交窗口要这两个),并像「图标制作」窗口的「完成」一样上传到特效平台(提交窗口只认上传过的图标);或打开「图标制作」窗口 |
| 和工具栏「特效检测」按钮一样:打开特效检测窗口做云端检测(会上传特效包做测试,不是发布),等待结果,并读出检测页的详情一起返回(页面结论、每项结论、包体积和安卓 / iOS 帧率对上限、没通过的项的改进建议),然后关掉窗口;详情读不出时窗口留着并返回 |
| 本地检查包体上限、是否原样套用模板、登录、图标,通过后先关掉还开着的提交窗口(之前调用留下的),再走「提交特效」按钮的入口打开一个新的,逐页填写:名称(必填)、触发提示、默认摄像头方向、灵感、任务和赛道(可用 |
| 按手机预览方式打包上传到抖音预览服务,返回和编辑器一样的二维码(7 天有效),抖音 App 扫码真机看;二维码同时存成文件( |
| 灵感分页列表(每页带上全部分类,每条带关联热点)、详情(说明、图片、奖励、关联热点的热度和标签、同灵感特效、示例视频的播放地址和封面、贴纸、是否已收藏) |
| 收藏或取消收藏灵感(写账号),之后重新查询确认生效 |
| 把灵感绑定到当前工程,提交时带上 |
| 活动与特效征集任务( |
| 移动版「成长之路」:当前特效师等级,每一级的奖励、状态和目标进度(如「绑定灵感上线 0/3 个作品 ¥10」),最高级的权益 |
| 领取一个待领取( |
| 已领取的任务按任务详情页「去创作」的方式重开工程绑定 |
| 分页读移动版排行榜(榜单和筛选项写在参数说明里),可按日期、每级一个分类、特效等级、面板、偏好、来自工具、年轻喜爱度过滤;每页带上该榜当天的两级分类(大类如人像美化、细类如美妆) |
| 热点榜(按 |
| 专题合集里按主题的特效榜( |
| 创新计划官方精选( |
| 自己提交过的特效,最新的在前:审核状态、绑定的任务和灵感、能否编辑 / 申诉;审核未通过、测试未通过、申诉审核未通过的带上最近一条审核记录(去掉标记的原因正文、分条原因、链接) |
| 一个自己的特效的完整审核记录:「上线审核」和「精选审核」两条时间线 |
| 抖音音乐分类(不带参数时)、按分类列出或搜索(带版权标记),按音乐库「使用」套用,可截取片段 |
| 场景结构的缩进文本:渲染组、对象 guid、名称、是否隐藏、组件类型;可只看子树、控制层数。传 |
| 一次查看多个对象的组件参数,可按组件类型、属性名片段过滤, |
| 读工程目录里的全部美妆层(妆容层和美瞳),逐层给出区域、部位、平均色、男女强度、是否生效;部位先看层名,看不出时按贴图像素判断。 |
| 按间隔连续截取预览,720×1280 原始分辨率(官方截图是 320×569),取自渲染结果,窗口在后台或最小化时也能截;默认先重置预览并等到重载后的画面再计时,截图期间临时恢复正常帧率(后台窗口平时 6 fps);可依次换几个预览视频各截一组、截完切回,可按比例裁出局部;每帧存成文件并返回,默认 24 小时后删除。这四个工具都可传 |
| 「添加对象」菜单项列表( |
| 新建一张「AI 组合效果」工作流,等同 AI 效果窗口的「新建工作流」:本地建 AI Graph,只有「输入图」「效果组合」两个节点且未连线,不联网、不扣额度、不建云端草稿;返回 |
| 把一张 AI 工作流放进场景,等同「应用」(可撤销):编辑器编译工作流、上传工作流文件,再添加「AI 组合效果」对象(没有 2D 前景时一并建「2D 前景」「2D 摄像机」);不扣额度、不建草稿,生成过预览视频时一并上传供审核;编辑器拒绝时返回它的提示原文(如「请先连接效果组合器」);返回新增对象和 |
| 列出塑型画笔、改强度(保留笔刷数据,可撤销) |
| 删除对象(可撤销),报告只被它使用的资源和它导入时带来的素材包文件夹; |
| 删除 |
使用顺序示例:
套用官方素材:
library_search→image_view看cover_ref→library_apply→capture_preview→save_project。读别人的工程:
works_search(或works_list)→image_view看cover_ref/gif_ref→works_download→ 按返回的outline.files读effect.dyehpj、Assets/下的场景和Graph/下的脚本 →works_cleanup。在编辑器里看别人的效果:
works_open→get_scene/capture_preview→project_close(discard_changes=true)→works_cleanup。交付:
icon_set→effect_check→mobile_preview真机看 →save_project→submit_prepare(name、trigger_hint等),检查返回的摘要和next,在窗口里点「提交审核」。要参加任务的,tasks_list→task_receive→ 再tasks_list→task_bind,或者直接在submit_prepare里传task。找选题:
rank_list(如rank_type=1年轻喜爱榜、categories=["人像美化","美妆"]、levels=["S","A+"])看什么在火;rank_subjects(keyword="测一测"或kind="template")看各期主题榜;rank_hotspots→ 带topic_id看热点灵感 →inspiration_detail→image_view看图;tasks_list→task_detail看征集要求和奖项 →image_view看内容块里的参考图。看榜上特效的工程:
rank_list→ 把这页的effect_id和name交给works_by_effect→status=found的用返回的template_id走works_download/works_open。查审核结果:
my_effects看哪些没过、review.text是原因 → 要看整条时间线用my_effect_reviews;can_edit=true的在编辑器「拍摄特效管理」里点「编辑」改完重新提交。拆别人的妆:
works_download→makeup_layers看用了哪些部位、什么颜色、多浓;自己的工程save_project后同样用makeup_layers查缺了哪些部位。做 AI 组合效果:
ai_combine_new→ 官方get_workflow_capabilities(选生图基模)→apply_workflow_patch(加生图节点、写 prompt、连「输入图 → 生图 → 效果组合」)→ 要看效果时官方generate_workflow(扣额度)→ai_combine_apply→save_project。别人的作品怎么搭的,用works_download下载「AI玩法」分类里的工程,看Assets/AI 组合效果/*.oAICombineTextureJSA里的workflow和Graph/graph.json里的 AI Graph。
相近工具的分工(每个工具只做一件事,这些也写进了工具说明;和官方工具重叠的,在官方工具的说明末尾补了一句指向这里):
看场景:
scene_tree先摸清结构(紧凑文本,也能读下载的工程目录)→inspect_many一次看多个对象的参数;要完整 JSON 才用官方get_scene/inspect。删对象:只删对象用官方
edit_by_dsl;要知道删完哪些资源没人用了、连带清理,用object_remove(→resource_delete_unused)。绑灵感:
inspiration_bind按 ID 写进工程,提交窗口自动带出;只在提交时选,给submit_prepare传inspiration(在收藏的灵感和热点里按名称选)。绑任务:
task_bind重开窗口把任务写进工程;只在提交时选,给submit_prepare传task,不用重开窗口。成长:
tasks_list的kind=growth是活动中心里一个个成长任务(参考工程、教程);特效师等级和每级目标进度看growth_route。素材库:知道要找什么用
library_search;按面板和子分类浏览用library_list。
几点约定:
library_apply/library_images只接受本会话里library_list/library_search返回过的template_id;works_download/works_open只接受本会话里works_list/works_search/works_by_effect返回过的作品(记录在 MCP 服务里,不受工程窗口开关影响,重启服务后需重新搜索)。像塑最多同时开 2 个工程窗口(编辑器的
CHILD_PROCESS_LIMIT)。都占满时project_open/project_new/works_open返回WINDOW_LIMIT(首页进程答复reuseCurrent,工具不会把工程换进当前窗口),先project_close一个。素材的
kind:package素材包、ai_imageAI 图片、ai_makeupAI 妆容(按部位建多个对象)、custom_gan自定义实时变脸、foreground_sticker/face_sticker图片贴纸、filter滤镜。素材广场里没有可应用内容的卡片(编辑器点应用也没反应)不列出,只在unsupported里计数。素材广场单个关键词最多返回 1000 条。广场卡片是异步应用的,工具等对象出现在场景里(最长 60 秒)才返回;新建的渲染组(如「2D 前景」「AI 实时变脸 (1)」)会作为新增对象报告,删除它们用官方的delete_render_group。素材库的搜索接口只匹配标题,很多素材的名字里没有人们会搜的词(美妆 › 腮红里是「雾堇胭」「红玫瑰」,没有素材叫「滤镜」),所以
library_search还会展开名字与搜索词相同的面板或子分类,以及「子分类 + 面板」组合(「复古滤镜」);「面板 + 其它词」(「韩系滤镜」)只在该面板里按标题搜「韩系」。名字只是包含搜索词的子分类不展开,列在related_categories。每个面板或子分类最多取 300 条(实测子分类 17–125 条)。什么都没匹配到时返回hint。works_*、inspiration_*、task_*、rank_*、my_effects、my_effect_reviews、library_list/library_search/library_images、menu_list与当前工程无关,任意一个工程窗口开着即可;不指定工程时由 pid 最小的窗口处理。返回资料的方式:
列表默认每页 20 条(服务端上限更小的按上限),只给挑选时要看的字段;要细节用对应的详情工具。
列表里的图片、视频、音频不给地址,给短引用
*_ref/*_refs(img:12、video:3、audio:5),交给image_view:一个签名 CDN 地址有几百字,实测占列表每条的 43%–93%。引用记在 MCP 服务里,这次运行期间有效(最多记 2 万个,超出时忘掉最久没用的);详情工具(inspiration_detail、menu_list的details)给的是这个对象自己的图,仍给地址。我们自己的工具回答超过 3 万字时,全文写进
~/.xiangsu-mcp-ext/outputs/(24 小时后删除),回答换成文件路径和结构概要(每个字段的值或条数,列表给每条有哪些字段),用读文件的工具按需读,或用分页参数分几次取。3 万是拍的:task_detail原来一次回 4.8 万字,读不全。官方工具原样转发,不受影响。字段命名:投稿量统一叫
publish_*(publish_count、publish_peak、publish_total),跟拍量叫follow_shoot,页面原样给的展示文字(如「1.2万」「¥50」)以_text结尾,换算过的金额以_yuan结尾;看不出单位的数(任务奖项的money、award_amount)原样给,不换算。
灵感、任务、排行榜按编辑器首页活动中心的方式请求(编辑器的登录 Cookie 和签名请求头),读写的都是编辑器里登录的账号。排行榜和成长之路用的是像塑移动版的接口,榜单名和筛选项取值与移动版一致,后端改版时可能失效。灵感和任务详情的接口移动版和编辑器是同一个(2026-11-08 对照移动版 v17.7.0 安装包里的接口逐个实测,返回完全相同),移动版看到的内容都在工具的返回里;活动详情、热点内容流、任务筛选、每日任务、创新任务这几个移动版接口暂未接入(参数未知,或当前账号没有内容可核对)。
几处上限是在服务端实测的:
rank_list和rank_subjects每页最多 20、inspiration_list每页最多 50(100 会报错)、专题榜详情一次最多 20。移动版的「特效优秀视频榜」接口对所有榜单都返回空,没有提供。审核记录:编辑器的「拍摄特效管理」(
/creator/v1/effect_list)只有状态码,原因在像塑移动版的审核记录页(站内信「点击查看未过审原因」打开的effect.douyin.com/m/detail?showReviewList=1)。工具按那个页面的方式取:「上线审核」先读review_nodes(review_type=1),没有记录再读effect_reviews;「精选审核」读review_nodes(review_type=2)。2026-11-07 实测,被驳回的特效review_nodes不返回记录,原因来自effect_reviews,如「特效不符合规范:特效中可能含有涉及展示或宣扬不同群体攻击对立类内容」。正文里的|<b>…<b>|、|<a><href>链接<href>文字<a>|等标记按页面的规则去掉,链接放进links。分条原因refuse_reasons的结构取自页面代码,实测的特效还没带过。别人的特效和不存在的 ID,服务端一律报code=1301(「参数不正确,请正确访问」)。my_effects翻页要把上一页返回的sort原样传回,next_cursor就是它(传cursor或offset都只会拿到第一页,2026-11-07 实测)。服务端不给「还有没有」,工具按「这页满了就还有」判断,所以最后一页正好满页时has_more仍是true,再翻一页得到空列表。每页上限 50 是拍的:每个未通过的特效要多一到两次请求。只有作者分享到首页的特效才有工程可下载。排行榜的
effect_id和首页作品的effect_id是同一套编号,works_by_effect按 ID 精确匹配(与首页搜索框的「特效ID」搜索同一个接口,默认在「推荐」里查,首页在「官方工程」里不提供按 ID 搜)。按 ID 搜时「推荐」也能查到只出现在其它分类的作品(2026-11-07 实测 8 个全中,在它们自己的分类里按 ID 搜反而一个都查不到),所以不用跨分类查。首页翻页除了 cursor 还要带上一页返回的
sortingPosition和version(编辑器首页就是这样翻的),只带 cursor 每一页都是第一页;works_list的next_cursor把三者编在一起。按作品名搜索时,「推荐」翻到底只有约 300 条,「美化」「友友天地」等分类里还有它没有的(「头套」多 46 条、「美妆」多 87 条),所以works_search默认搜全部分类。服务端偶尔会提前结束一轮翻页(6 轮里有 1 轮停在 249 条),没到 300 条上限的分类会再翻一轮合并;服务端一直给同一页时停下,并把分类列在incomplete。每个特效要一到两次请求(查不到 ID 且给了名字时再按名字搜一次),实测查一页 20 个用了约 10 秒。结果分三种:found首页有这个特效的工程;same_name首页没有它,只有同名作品,effect_id不同,可能是别人的作品,不能当成同一个特效;not_on_homepage作者没公开工程,没有正规途径能拿到(编辑器「我的特效」里的工程下载只对自己的特效开放)。2026-11-07 实测年轻喜爱榜第一页 20 个特效:10 个found,1 个same_name,9 个not_on_homepage。提交窗口是抖音特效平台的网页(
effect.douyin.com/ac/submit-orion,每次在线加载,安装包里的离线版本较旧,字段也不同)。submit_prepare按页面上的类名和文案找元素,页面改版后找不到时报SUBMIT_PAGE_CHANGED,不会跳过。名称框会在页面的aiName配置请求回来时重新挂载,先填的内容会被清空(2026-11-07 实测,配置在表单出现约 1 秒后才回来),所以工具等这个请求完成再填,最后再用「提交审核」页的摘要核对一遍。灵感下拉只列当前账号收藏的灵感和热点,每次加载 10 条,不在列表里的用页面的搜索框找;选了和灵感所带任务不一致的任务时,页面会清掉灵感,工具会报SUBMIT_BINDING_NOT_APPLIED。「特效发布设置」页上按账号出现的其它设置(活动、创新声明、作品授权)不填,列在other_sections。works_download/works_open走编辑器自己的下载流程,每次解压一份新的到像塑实例目录的ProjectCreatedTmp/CreatedFromTemplate/<guid>/下。dest副本不含Library/缓存(编辑器打开时会重建)。下载物不留痕:
编辑器缓存在
~/Library/Application Support/DouyinAR/Shared/Resources/LokiDownload/TemplateResources/的工程包,解压后立即删除(下载前已存在的视为你自己在首页用过的缓存,不动)。给了
dest时,临时目录里那份随即删除。每份下载(临时目录或
dest)登记在~/.xiangsu-mcp-ext/works-downloads.json。works_cleanup随时删除;没删的在 24 小时后由下一次下载自动清掉(这个时长是拍的:够一个工作日内学完,又不至于堆积,可按需调src/works.mjs的DOWNLOAD_TTL_MS)。编辑器窗口正开着的下载不会被删;像塑关窗时不会自己删除这些目录,关窗后再调
works_cleanup。
AI 组合效果在工程里由三部分组成:场景里的「AI 组合效果」图片对象、它绑定的组合效果纹理(
Assets/AI 组合效果/*.oAICombineTextureJSA,存编译好的workflow、上传后的graphTosUri和云端草稿draftId),以及Graph/graph.json里的 AI Graph。「添加对象」菜单里的 AI 组合效果只建对象和一张workflow为{}的空纹理,编辑器自己也是先建空壳、再由「应用」填参数,所以menu_add仍然拒绝它,改用ai_combine_new/ai_combine_apply。哪些步骤会连到云端(2026-11-08 读编辑器代码;ai_combine_new和ai_combine_apply不建草稿是实测,官方 Patch 建草稿、预览视频上传只读了代码,没有实测):ai_combine_new和本地连线都不联网;官方apply_workflow_patch每次改完都会把工作流存成账号下的云端 AI 效果草稿(releaseAIEffect),此后ai_combine_apply返回的draft_id就是这个草稿;官方generate_workflow扣生图额度;ai_combine_apply上传工作流文件,生成过预览视频时把视频一并上传供审核,自己不建草稿。场景里有变声组件时编辑器拒绝「应用」,工具报AI_COMBINE_APPLY_NO_EFFECT。预览重载有延迟,应用后用
interact_by_dsl先wait2–3 秒再截图更稳。资源删除不可撤销;对象删除可以在编辑器里撤销,但已删除的资源不会回来。
「孤儿资源」只按场景直接引用判断(资源的编辑器 guid 是否出现在场景序列化数据里)。只通过材质等间接引用的资源不会被判为孤儿。
素材放进场景时,编辑器会按对象名再建几个文件夹(如
复古清冷_滤镜、复古清冷_美妆),保存时对象还在才会写到磁盘。object_remove把这类只在编辑器里的路径单独列在editor_only_paths,对象删除后下次保存就会消失,不用删;unused_paths只含磁盘上真实存在的路径,可以照着删(用resource_delete_unused)。
安装(macOS)
需要 Node.js 24+ 和已安装的像塑。安装即表示你同意下面「协议与声明」里的用途限制:只用于学习和个人制作,不得用来抄袭他人作品。
从 npm 安装(必须全局安装:插件按绝对路径加载这份代码,npx 的临时缓存会被清理,安装命令在那里会直接拒绝):
npm install -g @muqian/xiangsu-mcp-plus
xiangsu-mcp-ext-install # 装到 ~/Library/Application Support/DouyinAR/Plugins/v<版本>/Local
echo "$(npm root -g)/@muqian/xiangsu-mcp-plus/src/server.mjs" # MCP 配置里 args 用这个路径或从源码安装:
git clone https://github.com/Muqian-Sun/xiangsu-mcp-plus.git
cd xiangsu-mcp-plus
npm ci
node scripts/install.mjs在 MCP 客户端配置里加一个 stdio 服务(command 用 which node 的绝对路径,args 用上面的 server.mjs 路径或源码目录下的 src/server.mjs):
{
"mcpServers": {
"xiangsu": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/src/server.mjs"]
}
}
}它已经包含官方工具,不必再单独配置官方的 xiangsu-mcp-manager。如果你还在用像塑自带的 xiangsu-effect-editor skill,它要求客户端里存在名为 xiangsu-mcp-manager 的服务;这种情况下保留官方配置即可,两者可以并存。
插件只在安装后新打开的工程窗口里加载;已开着的窗口要保存后重开。插件直接 require 这份代码(源码目录或 npm 全局目录),安装后不要挪动;用 npm install -g 升级时路径不变,不用重新运行安装命令。
更新后怎么生效
改
editor-plugin/library.cjs或editor-plugin/features/*.cjs:插件在下次调用时按修改时间自动重载,不用重开窗口;改坏了返回LIBRARY_RELOAD_FAILED,旧版本继续运行。新增插件方法写进对应 feature 的METHODS。改
editor-plugin/runtime.cjs:重开工程窗口。改
src/:在 MCP 客户端里重启这个服务。
开发
npm test:用模拟的编辑器模块测插件逻辑;用 jsdom 按线上结构搭的提交页测填写流程;用内存传输测 MCP 工具、官方转发、工程窗口编排。node scripts/mcp-call.mjs <tool> '<json>' [...]:新起一个服务按顺序调工具,图片写到<临时目录>/xs-mcp-call/下每次运行一个子目录(一小时后清理)。scripts/official-call.mjs直调官方 MCP,图片同样放在xs-official-call/下。node scripts/call.mjs <method> '<json>' [--pid N]:直调插件。node scripts/e2e.mjs <工程路径> <关键词> [标题]:搜索 + 应用 + 未知 ID 报错的端到端检查(会真的导入素材,只对测试工程用)。config.local.json里devEval: true时可用插件方法dev_eval在编辑器进程里执行探测代码(scripts/call.mjs dev_eval '{}' --code-file x.js,scripts/dump-source.js可导出模块源码)。同一个开关也管scripts/call.mjs的eval/describe;三者都在每次调用时读取开关,改回false在开着的窗口里立即失效。日常使用保持false:它能在编辑器进程里执行任意代码。环境变量
XIANGSU_MCP_EXT_STATE可改状态目录(测试用),XIANGSU_MCP_URL可改官方 MCP 地址。
依赖的编辑器内部接口
完整清单在 editor-plugin/features/assets.cjs 的 REQUIRED(按功能分组),ext_status 会逐项核对。主要有:
素材库:
@orion/Business/AssetsLibrary/Core/Api/{getAssetCategory,getAssetList,search}、.../Control/AssetsLibraryNav/{util,const}、.../Control/util.downloadLokiFile素材广场与收藏:
.../Core/Api/{getAIAssetCategory,getAIAssetList,collect,getAssetSecondPanel,publishAsset}、.../Core/Control/AssetsLibrary的AssetsLibrary.getInstance()(其中的AIAssets.applySquareAsset、AIAssetPictureCtx、AIAssetMakeupCtx、UGanManager与getAssetItemByQuery)、@orion/Business/API/ai_effect_api.getDYEHFileUrls导入:
@orion/orion-sdk/EditorFramework的Resource.AssetPackageManager.instance.import、UndoSystem、PreviewSyncer菜单:
@orion/orion-sdk/orionui的ExtensionManager/I18n,DynamicMenuConfigInfo,SceneOpsService.createEntity,HoverTipsMapAI 组合效果:
AIEffectWindow/AICombinationToolPanel/Core/AIGraphProjectUtils.createAIGraph(「新建工作流」按钮用的同一个),.../Core/Manager/AIGraphManager的getInstance、addGraph、getGraphById、switchGraphbyGuid、editorPanelApply(「应用」;失败时不抛异常,而是在BusinessEventManager上发AIEffectShowToast,工具监听它并以场景里出现新对象为准)工程窗口:
OpenProjectFromEditCommand+EditSender(与编辑器自己的launchProject同一请求,9.8.1 起首页进程只认它),closeProjectAndBackToHome首页作品:
@orion/Business/HomeWindow/TemplatesPanel/Request/{templatesPanel,templatesCategory}、.../Model/util.transformTemplate、.../Model/DownloadTemplateModel;打开作品用OpenProjectFromEditCommand的openTemplate交付:
IconCreationNew/controller/IconPreviewManager、IconCreationNew/UI/BottomPanel/DYEHIconUploadHelper.uploadIcon(上传图标,写回iconUri)、Submission/SubmissionExtension/EffectSubmissionExtension(提交接口submit()只做前置检查并打开提交窗口)、全局App._windows(编辑器每次都新开提交窗口和特效检测窗口、不保存引用,按类名DYEHEffectSubmissionWindow/DYEHPerfTestWebWindow在这里找到它们;提交窗口和特效检测窗口都是网页窗口,网页里的脚本经webview.evaluateJavascript注入,结果经窗口的 JS bridge 以orionJSB://查询传回)、PerfTest/PerfTestExtension、EditWindow/ToolBar/MobilePreview/backendHelper、effectExporter.exportEffectPackage灵感、任务、排行榜:
BusinessCommon/UrlConst的Domain.kBackendApiURL与DomainPath.{kActivityAPI,kTaskListAPI,kGrowthTaskList}、orion-sdk/orionui的CookieManager、BusinessCommon/Utils的PlatformUtils.genSignData/UserAgentUtils.userAgentGenerator、HomeWindow/ActivitiesCenter/Common/types(任务状态、getTypeName)、InspirationDetail/View/const的收藏类型、Agent/AgentInspirationBridge音乐:
EditWindow/Inspector/MusicLibrary/{Model/MusicCategoryModel,Model/MusicListModel,Component/MusicListComponent/MusicSquareManager}预览帧:
Business/Preview/PreviewManager的cacheCurrentFrame/captureScreenshotToMemory(渲染结果;9.8.1 前官方截图也走这组调用);重置用PreviewSyncer.requestReloadSticker加PreviewReloaded与PreviewTextureUpdated事件;后台帧率用EditWindow/BackgroundModeManager.setRecordingMode;窗口是否可见看EditWindow/EditWindowController的窗口和orionui.WindowState
协议与声明
代码以 MIT 协议 开源。另外请注意:
用途限制:本工具只用于学习和个人制作。禁止用它抄袭他人作品:不得把通过本工具看到、下载或套用的他人作品(首页作品工程、排行榜特效、素材广场里其他创作者分享的素材等)原样或稍作修改后发布、投稿、商用,或当作自己的原创。参考别人的做法学习思路可以,作品要自己做。MIT 协议针对的是本项目自己的代码,不改变他人作品的权利归属。
本项目是个人开发的非官方工具,与字节跳动、抖音、像塑没有任何关联,也未获其认可或支持。「像塑」「抖音」「Douyin AR」等名称和商标归各自权利人所有。
仓库只包含本项目自己的代码,不包含像塑的程序、源码或任何素材。通过本工具访问的官方素材、首页作品,其版权归像塑或原作者所有,使用须遵守像塑 / 抖音的用户协议和平台规则。
首页作品只用于学习参考:不要把下载的工程、素材放进公开仓库或转发给他人,学完用
works_cleanup删除。本工具调用的是编辑器内部接口,可能随像塑升级失效,也可能被平台限制。使用风险自负,作者不对因使用本工具造成的账号、数据或作品损失负责(详见 MIT 协议的免责条款)。
English
Unofficial MCP extension for Douyin AR (像塑) on macOS. One stdio MCP server proxies every tool of the editor's official MCP (with automatic reconnects) and adds what the official server cannot do: browse/search/preview/apply official library assets, browse/search/download or open the homepage works (official projects and published effects) as full projects an agent can read and learn from (rank-board effects are looked up there by effect id, though effects whose authors did not share them on the homepage have no downloadable project; every download is registered and deleted by works_cleanup or after 24 hours), add any item of the editor's "add object" menu (toolbar makeup / reshape / AI face effects), create AI combine workflows (the photo is sent to the cloud and generated from the workflow) and apply them to the scene the way the AI effect window does, leaving node editing and preview generation to the official workflow tools, list a project's makeup layers with the face part, colour and strength of each (from the layer's region and its texture's pixels when the name says nothing), set FaceWarpX brush intensity, prepare delivery (setting and uploading the icon, local and cloud effect checks, filling in the submit window — name, trigger hint, camera, inspiration, task — up to its final step, where pressing 提交审核 stays a user click, phone preview QR codes, binding received creator tasks or inspirations), read the signed-in account's inspirations and tasks (collect inspirations, receive tasks) and the mobile app's rank boards, list the account's submitted effects with their review status and, for rejected ones, the reviewer's reason and full review timeline, use Douyin music, open/create/close project windows, and remove objects together with resources only they used. It works through a small editor plugin that exposes a token-protected RPC on 127.0.0.1 inside each project window. Relies on editor internals (verified on 9.7.2); ext_status reports any missing internals. Install with npm install -g @muqian/xiangsu-mcp-plus && xiangsu-mcp-ext-install (a global install is required: the editor plugin loads this code by absolute path, so the npx cache is refused), or from source with npm ci && node scripts/install.mjs; then register node <package>/src/server.mjs as a stdio MCP server.
For learning and personal creation only. Do not use it to copy other creators' works: works you view, download or apply through this tool (homepage projects, ranked effects, assets other creators shared) must not be republished, submitted, used commercially or passed off as your own, as is or modified. Licensed under MIT, which covers this project's own code only. Not affiliated with or endorsed by ByteDance / Douyin; all product names and trademarks belong to their owners. The repository contains no editor code or assets. Official assets and homepage works accessed through this tool belong to 像塑 or their creators and are subject to the platform's terms; use downloaded works for learning only, delete them with works_cleanup when done, and do not redistribute them.
Available Tools
49 toolsai_combine_applyA
把一张 AI 工作流放进场景,等同 AI 效果窗口的「应用」(可撤销):编辑器编译工作流、把工作流文件上传到特效平台,再添加「AI 组合效果」对象(场景里没有 2D 前景时一并建「2D 前景」「2D 摄像机」)。不扣额度,不新建草稿;工作流生成过预览视频时一并上传供审核。效果组合节点没有输入连线等情况下编辑器会拒绝,返回 AI_COMBINE_APPLY_FAILED 和编辑器的提示原文(如「请先连接效果组合器」)。返回 added_objects(新对象名和 object_path)和 draft_id(工作流已存成云端草稿时才有,否则为 null)。之后 save_project。
Inputs: graph_id (required), instance_id, project_path.
ai_combine_newA
新建一张「AI 组合效果」工作流(用户拍照后在云端按工作流出图或出视频),等同 AI 效果窗口的「新建工作流」:在本地建 AI Graph,只有「输入图」和「效果组合」两个节点且未连线;不联网、不扣额度、不建云端草稿。返回 ai_graph_id 和各节点的 node_id,交给官方 get_workflow_context / get_workflow_capabilities / apply_workflow_patch 添加生图节点、写 prompt、连线(官方 apply_workflow_patch 每次改完会把工作流保存成账号下的云端 AI 效果草稿),要看效果用官方 generate_workflow(扣额度)。改好后用 ai_combine_apply 放进场景。「添加对象」菜单里的 AI 组合效果只建空壳,不要用 menu_add。
Inputs: instance_id, project_path.
effect_checkA
特效检测,和在编辑器工具栏点「特效检测」一样:打开「特效检测」窗口,由窗口把特效包上传到抖音做云端检测(不是发布),等待结果 passed / not_passed / needs_optimization / failed。出结果后读出检测页的详情一起返回:verdict(页面结论,如「检测通过」「特效不通过」)、checks(每项检测的结论;包体积、帧率给出 figures:数值、上限、是否达标,帧率分 android / ios;没通过的项带页面给的改进建议 advice,读不到时写 advice_unavailable),然后关掉这个窗口(window_closed=true);详情读不出来时窗口留着,返回 details_error。超过 timeout_ms 还没出结果时返回 timeout,窗口留着继续检测;之前调用留下的检测窗口会先关掉再开新的(closed_previous 是关掉的个数),所以窗口不会越叠越多。
Inputs: timeout_ms, instance_id, project_path.
ext_statusA
扩展自身状态:官方 MCP 连接情况,以及每个已加载 XiangsuMcpExt 插件的工程窗口(pid、工程路径、对应的官方 instance_id、编辑器接口自检)。工具报找不到窗口、INCOMPATIBLE_EDITOR 或官方工具不可用时先调它排查;插件只在装好后新打开的工程窗口里生效。
Inputs: no named parameters.
face_warp_listA
列出场景里所有「塑型画笔」组件(FaceWarpX,含猫脸/狗脸),返回 object_path、是否启用、每项画笔的序号与强度。官方 set_component 改不了画笔强度,用 face_warp_set_intensity。
Inputs: instance_id, project_path.
face_warp_set_intensityA
修改「塑型画笔」强度(等同检查器强度滑块,0–100),只改强度、保留笔刷数据,可撤销。object_path 取 face_warp_list 的路径,或能唯一定位的末尾几段。省略 item_index 时改全部画笔项。
Inputs: intensity (required), object_path (required), item_index, instance_id, +1 more.
growth_routeA
像塑移动版的「成长之路」:当前账号的特效师等级 current_level,以及每一级(新手特效师、潜力特效师……大师特效师)的现金奖励、状态(done 已完成 / in_progress 进行中 / locked 未解锁)和要达成的目标:每个目标的说明(如「绑定「灵感」上线 0/3 个作品」)、当前进度 current / 目标 target、对应奖励。最高级给的是权益 rights。任意一个工程窗口开着即可,用编辑器里登录的账号读取。活动中心里一个个带参考工程和教程的成长任务用 tasks_list 的 kind=growth。
Inputs: instance_id, project_path.
icon_openB
打开编辑器的「图标制作」窗口(官方图标模板、文字模板、AI 图标),让用户在里面挑选或调整。
Inputs: instance_id, project_path.
icon_setA
设置特效图标(提交特效必需):把一张图片居中裁成正方形、缩放到 360×360 PNG,写进工程的 Icon/ 目录(与「图标制作」窗口保存的同一批文件),并和那个窗口的「完成」按钮一样把图标上传到抖音特效平台(提交窗口只认上传过的图标)。默认女性、男性两个图标位都用这张图(提交窗口要这两个)。上传失败报 ICON_UPLOAD_FAILED,重试即可。图片可以来自 generate_image 生成的资源,或 capture_preview 截图另存的文件。之后 save_project 落盘。
Inputs: image_path (required), type, instance_id, project_path.
image_viewA
查看图片。列表类工具(素材、作品、灵感、任务、排行榜、音乐等)返回的是短引用 *_ref / *_refs(如 img:12),详情类工具(inspiration_detail 的 images、menu_list details 的 image_url)返回地址,都交给本工具;也可以传本机图片文件的绝对路径(如 menu_list details 的 image_file)。视频和音频引用(video:3、audio:5)看不了画面,返回它的原地址。一次最多 8 张,只认 png / jpeg / gif / webp,单张失败只在该项写明原因;图片很大(如动图)时一次给不完,没给的列在 not_returned 里,再调用一次即可。
Inputs: images (required).
inspect_manyA
一次查看多个对象的组件参数(逐个调用官方 inspect;只看一个对象的完整原始数据时直接用 inspect),值里的 {type, data} 包装直接展开成值,超长数组只给长度和前几项;绑定的资源写成 {resource, type, file},引用的对象写成 {object, name}。component_types 只留某些组件(如 ["Transform"]),fields 只留属性名包含这些片段的属性(不分大小写,如 ["intensity", "position"])。preset="key" 自动留下通常决定效果的参数:位置/缩放/旋转、显隐与启用、强度/不透明度/权重/颜色类属性、文字内容(str)与 2D 尺寸(sizeDelta)、绑定的资源,以及场景文件里脚本组件的全部参数(这份清单是按已做过的妆容、形变、贴纸、文字效果拍的,缺的用 fields 补,可与 fields 同时用)。传 project_dir 时不开窗口、直接读场景文件(含编辑器面板里的参数,如妆容的贴图和强度),guids 用 scene_tree 给出的 #序号;内置资源写成 {builtin: id},组件运行时生成、工程里没有文件的资源写成 {path}。单个对象失败只在该项写明原因。save_to 是目录的绝对路径,结果另存为其中的 inspect_many.json,长期保留。
Inputs: guids (required), fields, preset, save_to, +4 more.
inspiration_bindA
按 inspiration_id 把一条创作灵感绑定到当前工程(编辑器给 agent 的同一接口),之后 save_project 落盘,打开提交窗口时会自动带出。只在提交时选灵感的话,也可以直接给 submit_prepare 传 inspiration:它在提交窗口的下拉里按名称选,只列当前账号收藏的灵感和热点。
Inputs: inspiration_id (required), instance_id, project_path.
inspiration_collectB
收藏或取消收藏一个灵感(写入当前登录账号,与灵感详情页的收藏按钮相同),之后重新查询收藏状态确认生效。
Inputs: inspiration_id (required), collect, instance_id, project_path.
inspiration_detailB
一个灵感的详情:玩法说明、特效类型、激励说明、全部图片的地址 images(用 image_view 看)、作者、奖励(金额、说明、时间)、关联热点(热度和标签,如「66条热点相关灵感」)、关联官方工程、已有的同灵感特效及发布量、示例视频 videos(抖音视频的播放地址 url、封面 cover_url、作者、点赞数、尺寸)、贴纸 stickers,以及当前账号是否已收藏和总收藏数。
Inputs: inspiration_id (required), instance_id, project_path.
inspiration_listA
分页列出某个分类下的灵感(灵感是官方和创作者发布的特效创意,首页右侧「灵感」页签就是它):inspiration_id、标题、标签(如「激励」)、作者、收藏数、是否已收藏、是否 AI 灵感、关联热点 hotspot、封面 cover_ref(交给 image_view 看)。每次都带上全部分类 tabs。拿到 inspiration_id 后用 inspiration_detail 看详情。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: tab, count, cursor, instance_id, +1 more.
library_applyA
把一个官方素材应用到目标工程,与素材库面板里点应用相同(可撤销):素材包下载、校验 MD5、导入并默认放进场景;素材广场的卡片按 kind 走编辑器自己的应用流程(AI 图片、AI 妆容等只下载现成结果,不重新生成、不扣额度),等对象出现在场景里才返回。返回 kind、added_objects(新放进场景的对象名和 object_path)和 package_folders。template_id 须来自本会话的 library_list / library_search。应用后用 capture_preview 验收。
Inputs: template_id (required), image_index, instance_id, project_path, +1 more.
library_imagesA
一张 AI 图片卡片(kind=ai_image)的整组结果图 image_ref,按 image_index 编号;用 image_view 看图,应用时用 library_apply 的 image_index 选择。template_id 须来自本会话的 library_list / library_search。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: template_id (required), instance_id, project_path.
library_listA
不传 panel_key 时列出可直接应用的分类面板(panel_key)和类型 kind:general 为普通面板(如 3d_distortion=脸部变形/3D 变形、distortion=美型、gaoguai_gan/makeup_gan=AI 实时变脸、3d_makeup=美妆、3d_filter=滤镜、sticker=跟脸贴纸);square 为 aigc_material=素材广场(其他创作者分享的素材,含现成的 AI 图片、AI 妆容、自定义实时变脸,应用时不重新生成、不扣额度);collection 为 collection=收藏(当前账号收藏的素材)。需要扣额度现生成的 AI 面板不在其中。传 panel_key 时分页列出该面板里的素材:子分类、素材(template_id、title、kind、封面 cover_ref 等)和翻页游标。素材广场的子分类是妆容、图片、实时变脸、跟脸贴纸、前景贴纸、画面特效、3D 模型、3D 饰品;收藏的子分类是全部、美妆、滤镜等目录。没有可应用内容的广场卡片不列出,只在 unsupported 里计数。按画面挑选时把 cover_ref 交给 image_view 看;知道要找什么时用 library_search 按关键词搜,本工具适合按面板和子分类浏览。拿到 template_id 后用 library_apply 应用,AI 图片卡片(kind=ai_image)的整组结果图用 library_images 取。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: count, cursor, panel_key, category_id, +2 more.
library_searchA
按关键词搜索官方素材库(美妆、滤镜、脸部变形、AI 实时变脸、贴纸、画面特效、音效、素材广场等)。除了标题匹配,词正好是面板名或子分类名时也带出那里的素材:「滤镜」→ 滤镜面板,「腮红」→ 美妆/腮红、跟脸贴纸/腮红(这些素材标题里多半没有这个词),「复古滤镜」→ 滤镜/复古;每个面板或子分类最多 300 条。结果按标题完全相同 > 标题开头 > 标题包含 > 分类匹配 > 其余排序,每条的 matched 说明命中方式(title、category:面板/分类、panel:面板)。queries 一次搜多个近义词(最多 8 个)并合并去重。按 offset / count 分页(结果缓存 10 分钟,翻页不重新请求),每条带 template_id、title、panel_key、kind、cover_ref,另返回 total、by_panel(各面板条数,可再用 panel_key 缩小)、matched_categories(展开了哪些分类)、related_categories(名字里含这个词、没有展开的分类,可用 library_list 列出)。kind:package 素材包、ai_image AI 图片、ai_makeup AI 妆容、custom_gan 自定义实时变脸、foreground_sticker 前景贴纸、face_sticker 跟脸贴纸、filter 滤镜。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: count, query, offset, queries, +3 more.
makeup_layersA
列出一个工程的全部美妆层(FaceMask 妆容层和 EyeColorV2 美瞳),逐层说明画在哪个部位、什么颜色、男女强度,以及是否生效(对象或上级隐藏、组件停用、男女强度都为 0 的不生效)。区域(全脸 / 眼部 / 睫毛 / 唇部 / 牙齿)取自妆容层自身的类型;部位先看层名(眉、眼线、腮红、口红等关键字),层名看不出时按贴图像素判断(part_from 注明依据),颜色是贴图上色部分按透明度加权的平均色(color 和 hsl)。groups 按眉、眼妆、美瞳、颊、轮廓、唇、点缀汇总生效的层,absent 列出整套妆里没有的部位,用来看一套妆缺了什么、或拆解别人的作品(works_download 下载的工程)用了哪些部位和颜色。读的是工程目录里的场景文件:正在编辑的工程先 save_project。
Inputs: project_dir (required), save_to.
mobile_previewA
手机预览:按工具栏「手机预览」的方式打包当前工程并上传到抖音的预览服务,返回和编辑器弹出的一样的二维码图片(及其文本、有效期),用抖音 App 扫码即可在真机上看效果。二维码同时存成文件 qr_file,可直接给用户扫,不要另存到别处:到期(expires_at,一般 7 天)后自动删除。会把特效包上传到抖音服务器;内容审核不通过时报 MOBILE_PREVIEW_MODERATION_FAILED。
Inputs: instance_id, project_path.
music_applyA
把一首抖音音乐设为特效的音乐,和音乐库里点「使用」相同:下载音频进工程、写入音乐信息,并在场景里加入抖音音乐对象(再次使用会替换上一首)。start_sec / end_sec 截取片段,默认整首。music_id 须来自本会话的 music_list。之后 capture_preview 验收、save_project 落盘。
Inputs: music_id (required), end_sec, start_sec, instance_id, +1 more.
music_listA
列出抖音音乐:两个参数都不传时返回音乐库的分类(像塑原创、推荐、抖音收藏、潮流心选等)的 code 和名称;传 query 按关键词搜索,或传 category_code 看某个分类的第一页(35 首)。返回 music_id、标题、作者、时长 duration_sec、封面 cover_ref、试听 preview_ref(音频引用)和 has_copyright(音乐库给的版权标记,false 或 null 的不要用于要发布的特效)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: query, instance_id, project_path, category_code.
my_effect_reviewsA
一个自己的特效的审核记录,与像塑移动版「审核记录」页同一组接口:名称、当前状态、绑定的任务,reviews 为「上线审核」时间线(最新的在前,提交成功、审核中、审核未通过等,每条有时间、去掉标记的正文 text、分条原因 refuse_reasons、链接 links),innovation_reviews 为「精选审核」时间线(没有时为空)。
Inputs: effect_id (required), instance_id, project_path.
my_effectsA
当前登录账号提交过的特效,最新的在前(与像塑移动版「作品」同一个接口):effect_id、名称、审核状态 status 和 status_text(100 审核中、101 审核未通过、111 测试中、112 测试未通过、120 测试通过、103 已上线、104 已下线、113 延后上线、118 申诉重审中、119 申诉审核未通过)、提交和上线时间、绑定的任务 / 灵感 / 热点、能否编辑 / 删除 / 申诉及申诉类型、投稿量。101、112、119 的特效带 review:最近一条审核记录,text 是去掉标记的原因正文,refuse_reasons 是分条原因,links 是正文里的链接(如审核规则)。完整审核时间线用 my_effect_reviews。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: count, cursor, instance_id, project_path.
object_removeA
删除一个场景对象(含子对象,可撤销),并找出只被它使用的工程资源:删除前后对比场景引用,删除前被引用、删除后不再被引用的即为孤儿(unused_paths 已合并到素材包文件夹,只含磁盘上存在的路径)。editor_only_paths 是素材放进场景时编辑器按对象名建的文件夹(如「复古清冷_滤镜」),只在编辑器里、尚未写到磁盘,对象删除后下次保存就会消失,不用删。delete_unused_resources=true 时一并删除 unused_paths(资源删除不可撤销);默认只报告,可之后用 resource_delete_unused 删除。object_path 用完整层级路径或能唯一定位的末尾几段(渲染组本身请用官方 delete_render_group)。只删对象、不关心资源时官方 edit_by_dsl 也能删;要知道删完哪些资源没人用了,用本工具。
Inputs: object_path (required), instance_id, project_path, delete_unused_resources.
preview_framesA
按时间连续截取预览画面,分辨率是预览本身的(720×1280,官方截图是缩小后的 320×569),取自预览的渲染结果,窗口在后台或最小化时也能截(截图期间临时恢复正常帧率):默认先重置预览、等到重载后的画面出来,再每隔 interval_ms 截一张,共 count 张(一次最多 24 张),用来看动态效果、摇头时的侧脸等。videos 可依次换几个预览视频各截一组(名称取自 list_preview_videos,如 preview_single_shake_head||女),全部截完切回原视频;切换会让工程变成「已修改」,之后需要 save_project。crop 按画面比例(0–1)裁出局部,如脸部。每帧都存成文件并随结果返回,files 里是路径,可直接贴给用户看;默认存在临时目录、24 小时后删除,save_to(目录的绝对路径)则存到那里长期保留。每帧注明实际截取时刻(相对重置完成的毫秒数)。
Inputs: crop, count, reset, videos, +5 more.
project_closeA
关闭一个工程窗口(等同工具栏「回到首页」)。有未保存改动时默认拒绝,先 save_project;确实要丢弃改动才传 discard_changes=true。
Inputs: instance_id, project_path, discard_changes.
project_newA
新建一个空白像塑工程并首次保存到 path(目录须不存在或为空)。需要已有任意一个工程窗口开着。返回新窗口的 pid 和官方 instance_id。
Inputs: path (required).
project_openA
在新窗口打开一个已有的像塑工程(已经开着就直接返回)。返回窗口 pid 和官方 instance_id。旧版本工程可能弹出升级对话框,需要在编辑器里点确认。
Inputs: path (required).
rank_hotspotsA
热点榜(按热度排序的抖音热点,每小时更新),按 offset / count 分页:名次、topic_id、标题、说明、热度、相关灵感数、封面 cover_ref。传 topic_id 时改为返回该热点下的灵感(inspiration_id、标题、标签、说明、封面 cover_ref,交给 image_view 看)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: count, offset, topic_id, instance_id, +1 more.
rank_innovationA
创新计划的榜单。kind=template / effect 为官方精选(像塑移动版发现页的精选列表,移动版展示的是模板):特效名、effect_id、标签、投稿量、总收益、入选日期、封面;kind=creators 为创作者月榜:名次、创作者 uid 和昵称、上榜素材数、跟拍量、预计奖金(元)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: kind, count, offset, instance_id, +1 more.
rank_listA
分页读取一个排行榜(与像塑移动版排行榜页同一个接口):名次、特效名、effect_id、等级、投稿量(峰值 / 累计)、跟拍量、男女比例、年轻喜爱度、热玩分、总收益等。可按日期、分类(每级一个,如只看「人像美化 › 美妆」)和筛选项过滤,每页都带上该榜当天的分类 categories(level 1 大类如人像美化、游戏玩法、人设扮演、AI 玩法,level 2 细类如基础头饰、测一测、不露脸壁纸;每个榜不同)。按主题的专题榜(如「热爆美妆特效榜」)见 rank_subjects。要看某个特效的工程,把 effect_id 和 name 交给 works_by_effect,查它在不在首页。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: date, count, tools, cursor, +8 more.
rank_subjectsA
像塑移动版「专题合集」里按主题的榜单,最新的在前:kind=effect 为特效专题榜(近 200 期,如「测一测玩法特效榜 - 11月」「热爆美妆特效榜」「熊出没IP特效榜」「主题创新优胜特效榜」、各期征集活动优质特效),kind=template 为模板专题榜(如「歌词玩法模板榜」「AI配文创意模板榜」「氛围转场模板榜」)。每个榜带前几个特效、浏览量。keyword 按榜名搜索全部期;传 subject_id 时返回该榜的全部特效(最多 20 个)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: kind, count, cursor, keyword, +3 more.
resource_delete_unusedA
删除 object_remove 报告的 unused_paths(工程内相对路径的资源或素材包文件夹)。删除前再次核对:当前场景仍在引用的一律拒绝。资源删除不可撤销。
Inputs: paths (required), instance_id, project_path.
scene_treeA
把场景结构输出成紧凑的缩进文本:渲染组,以及每个对象的 guid、名称、是否隐藏、组件类型。比官方 get_scene 的 JSON 好读,适合先摸清结构再用 inspect_many 查参数;要渲染组和对象的完整 JSON 用 get_scene。subtree 只看某个对象(guid 或名称),depth 控制展开层数(默认 6);没展开的子对象会注明数量。传 project_dir(工程目录,如 works_download 下载的作品)时不需要打开窗口,直接读 Assets/main.scene 和 main.scene.extra,对象写成 #序号,组件类型和窗口里显示的一致(编辑器数据缺失时退回场景文件里的名称);没有渲染组这一层,渲染组本身作为根对象列出。save_to 是目录的绝对路径,结果另存为其中的 scene_tree.txt,长期保留。
Inputs: depth, save_to, subtree, instance_id, +2 more.
submit_prepareA
填好提交窗口,停在最后一步等用户点「提交审核」:先在本地检查提交流程会拒收的情况(包体上限、是否原样套用模板、登录、图标),全部通过后先关掉还开着的提交窗口(之前调用留下的,closed_previous 是关掉的个数,关不掉报 WINDOW_NOT_CLOSED),再走和工具栏「提交特效」按钮相同的入口打开一个新的,然后逐页填写:「特效基础信息」页填名称、触发提示、默认摄像头方向(图标来自工程,可先用 icon_image 设好),「特效发布设置」页选灵感和任务,再翻到「提交审核」页,等页面上的检测(包体积、性能、相似度等,一般一分钟内)跑完,返回页面摘要、各检测结果、是否已同意创作者协议、「提交审核」按钮是否可点,以及 next(用户还要做什么)。本工具不会勾选协议,也不会点「提交审核」,发布只在用户点了之后发生。每一项都从页面读回核对:页面截断、报错、没选上、或翻页被拦住时直接报错(SUBMIT_*,原样带上页面提示),窗口保持打开。页面上本工具没填的其它设置(如活动、创新声明)列在 other_sections 里,保持页面原样。本地检查未通过时不打开窗口,返回 issues。
Inputs: name (required), task, camera, icon_image, +5 more.
task_bindA
把工程绑定到一个已领取的任务,和从任务详情页点「去创作」打开的工程一样,提交时会带上该任务。编辑器只在打开工程时写入任务信息,所以本工具会先关闭该工程的窗口(有未保存改动时拒绝,先 save_project),再带着任务信息重新打开,返回新的 pid 和 instance_id。task_id 须来自本会话的 tasks_list。只在提交时选任务的话,直接给 submit_prepare 传 task(已领取任务的标题),不用重开窗口。
Inputs: path (required), task_id (required).
task_detailA
一个任务的详情。征集任务返回状态、奖励时间、下线时间、我提交到这个任务的特效 my_effects(名称、effect_id、审核状态、拍摄数、播放数、投稿峰值、获奖金额、是否符合主题、赛道)、完成状态、是否分档任务,和整理过的任务说明 content:每个内容块(参与要求、奖项详情、近期热门、任务说明等)有名称 name、条目 items 和链接 links;条目有标题 title、正文 text(页面里的链接标记已换成文字,链接放进 links)、参考图 image_refs 和参考视频 video_refs,奖项条目另有页面原样给的金额 money、发放方式 money_mode 和名额 people(unlimited 为不限);空地址和 blob: 地址任务页里也显示不出来,只在 unusable_media 里计数;读不懂的字段原样放进 unread。要原始返回时传 save_to。成长任务返回奖励、参考工程、相关灵感(封面 cover_ref)和教程。task_id 须来自本会话的 tasks_list;活动没有详情。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: task_id (required), save_to, instance_id, project_path.
task_receiveA
领取一个征集任务(写入当前登录账号,与活动中心的「领取」按钮相同,领取后不能撤销)。只有状态为 WAIT_RECEIVE 的任务能领,其它状态直接拒绝。返回 designer_task_id 和新状态;领取后重新 tasks_list,该任务即可 task_bind。
Inputs: task_id (required), instance_id, project_path.
tasks_listA
按 offset / count 分页列出首页活动中心的任务。kind=effect(默认)为活动和特效征集任务:标题、状态(如 WAIT_RECEIVE 待领取 / WAIT_SUBMIT 待提交)、是否已领取、状态说明(如「查看官方指导,帮您完成任务」)、剩余天数、收益、上下线时间、可完成次数;kind=growth 为活动中心里的成长任务:奖励金额、参考工程(特效师等级、每级目标和进度在 growth_route)。拿到 task_id 后用 task_detail 看详情、task_receive 领取、task_bind 绑定到工程(bindable=true 的才能绑)。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: kind, count, offset, instance_id, +1 more.
works_by_effectA
按特效 ID 查排行榜等处给出的特效(rank_list / rank_subjects / rank_innovation 的 effect_id)在首页有没有工程,与首页搜索框「特效ID」搜索同一个接口。逐个返回 status:found 首页有这个特效的工程;same_name 首页没有它、只有同名作品(effect_id 不同,可能是别人的同名作品,不能当成同一个特效);not_on_homepage 作者没把工程分享到首页,拿不到工程。found 和 same_name 的作品在 items 里(字段同 works_list),template_id 可直接用于 works_download / works_open。默认在「推荐」里查:按特效 ID 查时「推荐」也能查到只在其它分类出现的作品,在别的分类里按 ID 查反而查不到,所以一般不用给 category_id。每个特效一到两次请求,20 个约 6 秒。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: effects (required), category_id, instance_id, project_path.
works_cleanupA
删除 works_download / works_open 下载过的作品工程(像塑临时目录里的和 dest 副本)。省略 paths 时删除全部;编辑器窗口正开着的会保留并在 kept_open 里列出,关窗后再调用即可。只删登记过的下载,其它路径一律拒绝。
Inputs: paths.
works_downloadA
下载一个首页作品的完整工程并解压(与在首页点开作品同一流程,但不打开窗口),返回工程目录和文件清单(files 列出相对路径和大小,可直接读取 effect.dyehpj、Assets 下的场景、Graph 下的脚本等来学习做法)。dest 给定时把工程放到该目录(须不存在或为空,跳过 Library 缓存),像塑临时目录里的那份随即删除。下载的工程(含 dest)都会登记,expires_at(24 小时)后在下次下载时自动删除;学完请立即调用 works_cleanup。要在编辑器里看效果用 works_open。作品版权归原作者,只用于学习参考,不要复制进自己的工程或仓库。
Inputs: template_id (required), dest, instance_id, project_path.
works_listA
分页列出像塑首页「模板」某个分类下的作品。首页作品是完整的像塑工程(官方工程和用户投稿),可下载到本地阅读、学习其场景和脚本做法;任意一个工程窗口开着即可。每次都带上全部分类 categories(推荐、官方工程、新手必做、游戏、妆容、AI玩法等)。每条作品有 template_id、标题、标签、已发布到抖音的特效 ID 和发布量(effect_id / publish_count,没有则为 null)、使用量、工程包大小、封面 cover_ref 和动图 gif_ref(交给 image_view 看)。拿到 template_id 后用 works_download 下载工程。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: sort, count, cursor, category_id, +2 more.
works_openA
下载一个首页作品并在新的编辑器窗口里打开,与在首页点开作品同一流程(不弹版本升级提示,工程处于未保存状态)。返回窗口 pid、官方 instance_id 和工程目录,之后可用 get_scene、capture_preview 等官方工具观察它的做法。看完用 project_close(discard_changes=true)关窗,再 works_cleanup 删除下载;窗口开着时工程不会被删除。
Inputs: template_id (required), instance_id, project_path.
works_searchA
按作品名搜索首页作品(与首页搜索框同一个接口)。不给 category_id 时搜全部分类并合并去重:「推荐」翻到底只有约 300 条,「美化」「友友天地」等分类里还有它没有的作品。合并顺序是先「推荐」里的(按 sort),再按分类顺序追加只在其它分类出现的;每个分类最多 300 条。每条带 found_in(出现在哪些分类),另返回 total、by_category(各分类条数)。queries 一次搜多个词(最多 8 个)并合并,每条带 matched_queries。按 offset / count 分页,结果缓存 10 分钟,翻页不重新请求。某个分类翻页时服务端一直给同一页,会列在 incomplete 里。其余字段同 works_list。按特效 ID 查用 works_by_effect。
返回里的图片、视频、音频给的是短引用(*_ref / *_refs,如 img:12、video:3),交给 image_view:图片直接显示,视频和音频返回原地址;引用在 MCP 服务这次运行期间有效。
Inputs: sort, count, query, offset, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 49 tools
Each tool targets a distinct resource+action and the descriptions go to unusual lengths to state when to use one over another (library_list vs library_search, works_download vs works_open, menu_add vs library_apply, object_remove vs resource_delete_unused). The only real confusion points are the parallel browse/search pairs (library_*, works_*) and the two catalogs (library_list = 素材库 vs menu_list = 添加对象菜单), which an agent can resolve from the text but must read carefully.
All names are snake_case and the dominant convention is domain-prefixed noun_verb (works_list, library_apply, inspiration_bind, music_apply, menu_add, ai_combine_new, face_warp_set_intensity), which clusters nicely by domain. Deviations are minor but real: tasks_list breaks the singular task_* family, object_remove vs resource_delete_unused use different verbs for delete, and several tools are noun-only labels (scene_tree, makeup_layers, growth_route, my_effects, ext_status, image_view).
49 tools is a heavy surface for an agent to select from, and a few groups could plausibly collapse (three near-parallel list/search pairs, rank_list/subjects/innovation/hotspots, icon_set/icon_open). Still, the domain is genuinely enormous — editor scene inspection, material library, homepage works, inspirations, tasks, rankings, music, submission and preview — and most tools map to a distinct editor action, so this is borderline heavy rather than bloated.
Coverage spans the whole workflow: project open/new/close, material browse→apply, works browse→download→open→cleanup, inspiration/task binding, scene introspection (scene_tree, inspect_many, makeup_layers, face_warp_*), object/resource removal, icon, effect check, mobile preview and submit prep. Minor gaps remain — saving, undo, and capturing previews are delegated to the official editor tools rather than surfaced here, and there is no local asset import beyond images/icons.
Maintenance
Related MCP Connectors
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
Build, edit and publish live 3D, AR and game scenes in ARClip from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to directly control the Cocos Creator 3.8.x editor via MCP protocol, providing over 130 tools for scene, node, component, asset, and project operations.25 npm44MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI clients to control Cocos Creator editor projects, scenes, nodes, components, assets, Prefabs, building, and diagnostics via the MCP protocol.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to operate Douyin Xiangsu AR effects through MCP, including scene editing, asset binding, TypeScript scripting, compilation, preview screenshots, and interactive playtesting.26MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients such as Claude Code, Cursor, and Codex to drive a live Cocos Creator 3.8.x editor and its project files, covering scene, node, component, asset, build, and view operations. Write operations run as undo-journaled transactions that roll back on failure, with a verified editor-message whitelist, path guards, tiered confirmations, and offline prefab/animation editing that works even when the editor is closed.MIT