Guide · MCP
MCP 接入教程
把 AiArtEngine 接入 Claude Code 等 AI Agent:应用启动后自带一个本地
MCP 工具服务,Agent 可以直接规划工作流、编辑节点图、运行生成、查询任务——对标
LibTV CLI 的「产品即 Agent 工具」体验,但完全本地化,无需云账号授权。
应用内置的 AI 对话面板(工作区左侧「◈」)也走这同一套工具集:在聊天里
@ 引用资产,让助手直接调用下列工具干活。
1. MCP 是什么
MCP(Model Context Protocol)是 AI Agent 调用外部工具的标准协议。接入后,你的编码 Agent 多了一组「AiArtEngine 工具」,对话即可驱动应用:
Claude Code / Codex ──stdio(MCP)──▶ mcp-bridge.mjs ──HTTP──▶ AiArtEngine 应用(127.0.0.1 工具服务)
- 应用每次启动会在
127.0.0.1起一个带 Bearer token 的本地工具服务,连接信息写入%APPDATA%/aiartengine/mcp.json(macOS / Linux 路径见下文)。文件跨重启保留,token 稳定不变,客户端配置一次即可;也可在应用「设置 → MCP 接入」中编辑 Token。 - 桥脚本
scripts/mcp-bridge.mjs零依赖,由 Agent 客户端拉起,负责协议转换与转发。 - 通信仅限本机回环地址;除健康检查外全部需要 token。
workflow_plan 类工具依赖应用里已配置的文本模型。
2. 三步接入 Claude Code(两种方式任选其一)
方式 A:stdio 桥(推荐)
- 启动 AiArtEngine 桌面应用。
-
注册 MCP server(桥脚本在仓库内,把路径换成你的实际仓库位置):
或手动写入 MCP 配置文件:claude mcp add aiartengine -- node C:/path/to/ai-art-engine/scripts/mcp-bridge.mjs{ "mcpServers": { "aiartengine": { "command": "node", "args": ["C:/path/to/ai-art-engine/scripts/mcp-bridge.mjs"] } } } - 重启 Agent 会话,工具即可使用。其他支持 MCP 的客户端(Codex、Trae 等)按同样的「command + args」方式配置。
方式 B:HTTP 直连(无需 Node.js)
支持 streamable HTTP 的客户端可跳过桥脚本,token 取自 mcp.json(持久复用):
claude mcp add --transport http aiartengine http://127.0.0.1:43110/mcp --header "Authorization: Bearer <token>"
配置模板(.mcp.json)
.mcp.json 是可选文件,需要你手动创建(没有程序会自动生成)——
新建一个名为 .mcp.json 的文本文件填入下面的内容,放在你运行 Claude Code 的项目根目录,
提交进 git 后团队克隆即用。
claude mcp add aiartengine -- node C:/path/to/ai-art-engine/scripts/mcp-bridge.mjs,
Claude Code 会自动写入本机配置(~/.claude.json)。两种方式二选一,无需同时做。
stdio 桥版(路径换成实际仓库位置):
{
"mcpServers": {
"aiartengine": {
"command": "node",
"args": ["C:/path/to/ai-art-engine/scripts/mcp-bridge.mjs"],
"env": {
"AIAE_MCP_CONFIG": "C:/Users/<你>/AppData/Roaming/aiartengine/mcp.json"
}
}
}
}
HTTP 直连版(无需 Node.js,token 取自应用侧 mcp.json):
{
"mcpServers": {
"aiartengine": {
"type": "http",
"url": "http://127.0.0.1:43110/mcp",
"headers": {
"Authorization": "Bearer <应用侧 mcp.json 里的 token>"
}
}
}
}
%APPDATA%/aiartengine/mcp.json,结构
{ "port": 43110, "token": "…", "pid": …, "version": "…" })由应用自动写入与删除,
不要手改;token 跨重启复用,要重置删除该文件后重启应用即可。
3. 工具清单
| 分组 | 工具 | 作用 |
|---|---|---|
| 工程与资产 | app_status |
版本、当前工程、资产数量 |
project_list / project_open / project_create |
最近工程、打开、新建 | |
asset_list / asset_read_file |
资产列表、按相对路径读取工程内文件 | |
asset_write_text |
更新剧本 / 备注等文本资产(界面同步) | |
folder_create |
新建资产库文件夹,返回 folderId |
|
asset_create |
新建资产(剧本 / 策划案 / 世界观 / 分镜 / 画布 / 图片 / 视频 / 声音 / 2D 动作) | |
asset_import |
把本机绝对路径的素材导入资产库(图片 / 视频 / 音频 / 文本,单次上限 50) | |
asset_rename |
重命名资产(界面同步) | |
asset_move |
资产归档:在资产库内移动(媒体文件随目录搬移) | |
asset_delete |
从资产库移除资产(默认拒绝删除仍被引用的资产) | |
folder_list |
资产库文件夹列表(生成工具 folderId 的来源) | |
| 交付与后期 | transcribe_audio |
音频 / 视频转写为带时间戳的分段文本(字幕底稿) |
audio_separate |
人声 / 伴奏分离(产物落 Cache/Separated/) |
|
storage_upload |
上传工程内媒体到对象存储,返回可分享 URL | |
asset_package_export |
导出 .aipackage 交付包(无界面链路需给绝对路径) |
|
asset_package_import |
导入 .aipackage 交付包(可按 guid 选子集) |
|
stage2d_spine_export |
2D 舞台骨骼装配导出成 Spine 骨架包(部件透明页 + skeleton.json + .atlas) | |
asset_qc |
图片资产引擎就绪体检(漏底 / 白边 / 碎屑 / 贴边 / 尺寸 / 命名,只读) | |
asset_qc_fix |
边缘去污染返工,产出新资产并给出修复前后对比 | |
timeline_read |
读成片时间线:片段 / 设置 / 总时长,可按轨过滤 | |
timeline_rough_cut |
智能粗剪:按配音转写挤掉静默并全线前移,默认只回计划 | |
timeline_export |
时间线合成 MP4(转场 / 混音 / 烧字幕 / 水印) | |
timeline_edit |
时间线增删改:铺素材上轨 / 改音量转场字幕 / 删片段 / 按转写重建字幕 | |
timeline_preview |
看成片画面:按导出同一条滤镜图抽帧,画面直接回给多模态客户端 | |
| 规划与运行 | workflow_list_presets |
12 个行业模板列表(id + 标题) |
workflow_plan |
自然语言 → 节点图计划(走应用已配置文本模型) | |
workflow_commit |
计划落盘为宿主资产(界面同步出现) | |
task_run / task_status |
运行宿主资产工作流、轮询执行状态(应用任务列表同步显示) | |
graph_node_types |
可添加节点类型清单(typeId / 名称 / 端口 / 默认参数,graph_edit 建节点白名单) | |
graph_read |
读取宿主资产图结构(节点 id / 连线,graph_edit 前置) | |
| 生成 | generate_image |
文生图 / 图生图,落盘为工程资产 |
generate_video |
提交视频生成并登记资产(可 video_job_* 跟踪) |
|
generate_model3d |
文生 / 图生 3D,产出 GLB 资产 | |
decide |
用 OpenRouter 决策模型对给定状态做类型化判定(noul 是/否、choice 多选一、score 有序打分),返回带概率、可直接分支的结论;三种原语可混用,判定不落盘 | |
| 编辑与查询 | graph_edit |
对宿主资产图应用节点 / 连线编辑操作批(端口兼容性在应用内校验) |
graph_icon_refine |
单枚图标精修回炉:重画某一枚 → 写回打包节点逐枚覆盖 → 重跑打包(与弹窗同一口径;调用期间任务列表与素材库卡片角标可见运行中活动) | |
models_list |
已启用模型提供商与各模态勾选模型(含 OpenRouter 的 decisions 决策模型;不含密钥) |
|
video_job_list / video_job_get |
异步视频任务状态 | |
| 可玩 HTML | gameplay_prepare_project |
为一句话小游戏落下纯 Node + esbuild 脚手架(含
src/core / src/assets 资产层骨架),返回工程相对路径
|
gameplay_build |
后台 cook(npm install + node build.mjs)打成单文件,返回
jobId;由宿主跑 npm。成功后自动登记 gamePlay 资产,对话卡的「试玩」用浏览器打开
|
|
gameplay_job_status |
轮询构建状态与日志尾部,取单文件产物路径与体积 |
4. 场景示例
接入后直接用自然语言下指令,Agent 会自动组合工具:
- 「列出我的最近工程,打开第一个」→
project_list+project_open - 「用 shortDrama 模板规划一条工作流并落盘」→
workflow_plan(presetId=shortDrama)+workflow_commit - 「运行刚才创建的工作流,完成后告诉我结果」→
task_run+task_status轮询 - 「给这张图节点下面加一个配音节点并连上」→
graph_edit(node_upsert + edge_connect) - 「这张图还能加哪些节点?图标包打包用哪个类型?」→
graph_node_types(typeId + 端口 + 默认参数) - 「图标包第 3 枚的剑画糊了,重画这一枚」→
graph_icon_refine(cellKey + hint,自动写回并重跑打包) - 「用已配置的模型生成一张 9:16 的海报」→
models_list+generate_image -
「做个低多边形太空站捡能量块的 3D 小游戏,WASD 移动」→
gameplay_prepare_project(3d)→ 写src/assets/**与src/game/**→gameplay_build+gameplay_job_status轮询到done,对话卡点「试玩」即在浏览器里开玩
5. 配置与环境变量
桥默认读取 %APPDATA%/aiartengine/mcp.json(macOS:
~/Library/Application Support/aiartengine/;Linux:
~/.config/aiartengine/)。需要覆盖时:
| 环境变量 | 作用 |
|---|---|
AIAE_MCP_CONFIG |
指定 mcp.json 的绝对路径 |
AIAE_MCP_PORT + AIAE_MCP_TOKEN |
直连指定端口与 token(优先于配置文件) |
应用会依次尝试端口 43110–43119,被占用自动顺延,实际端口以
mcp.json 为准。
5.1 stdio 桥可视化设置
设置页 → MCP 工具服务 → stdio 桥 Tab 可视化配置桥脚本
(无需手写环境变量)。当前可设:桥命令(默认仍是
node + 仓库内 scripts/mcp-bridge.mjs 或安装包内置
<安装目录>/resources/mcp-bridge.mjs)、桥端口
(桥 HTTP 监听端口,默认同上)、Blender addon 的 BLENDER_HOST /
BLENDER_PORT 透传。改完即时落盘,外部
Agent 重连即生效,不需要重启应用。
scripts/mcp-bridge.mjs;正式安装包内置在
<安装目录>/resources/mcp-bridge.mjs。同一面板可加多组外部 stdio
server 入口(见 §5.2 反向桥),与 Blender stdio 桥共用一份
配置存储。
5.2 反向桥:让 dsh(应用内对话面板)直连 stdio MCP server
「正向桥」是把 Claude Code 等外部 Agent 通过 stdio 桥 / HTTP 连进来;反向桥反过来 —— 应用内 ◈ AI 对话面板(DeepSeek Harness / dsh)也能注册并消费
任意外部 stdio MCP server(不再局限于连回应用自己的
/mcp)。
典型场景:Blender addon 等只暴露 stdio 协议的 MCP server,不再需要先开 socket 端口;dsh
注册一条 claude mcp add --transport stdio ... 之类的命令后,AI 对话里说
「在 Blender 里把…做完截张图」即可直接驱动。配置入口在设置面板
MCP 工具服务 → stdio 桥 Tab 同一区域,可加多组外部 stdio server
(每组:名称 / 启动命令 / 工作目录 / 环境变量),与 Blender stdio 桥共用一份配置存储。
协议层细节:
- 反向桥在 dsh 进程内 fork stdio 子进程、转 MCP 帧、复用既有 mcp-client 实例 —— 不再 单独起桥进程
-
协议错误 / 子进程崩溃与正向桥共用同一套日志(
<userData>/logs/mcp-audit.jsonl) -
仅限本机 + token 鉴权;外部 stdio server 不会自动获得应用侧
/mcp的写权限 - Ask / Plan 模式对反向桥的工具同样只读 —— 它不是绕过面板模式的侧门
6. 安全与当前限制
- 服务只监听
127.0.0.1,token 鉴权;文件读写被限制在工程根目录内(唯一例外是asset_import:按你给出的绝对路径读取工程外文件并复制进工程);密钥信息不对外暴露。 - 并发闸门:
generate_image/generate_speech/decide/workflow_plan同时最多 3 个(AIAE_MCP_GEN_LIMIT可调),排队满直接报错,防止 Agent 失控消耗额度。 - 操作审计:每次工具调用追加写
<userData>/logs/mcp-audit.jsonl(参数截断、5MB 滚动),生成与写入可回查。 graph_edit/graph_icon_refine对正在编辑器中打开的图会拒绝修改,避免与编辑器内存态互相覆盖。workflow_plan走 LLM,耗时可能数十秒;generate_video/generate_model3d为异步任务,用video_job_*跟踪。- 接入方式两选一:stdio 桥(安装包内置在
<安装目录>/resources/mcp-bridge.mjs;开发场景用仓库内scripts/mcp-bridge.mjs,需 Node.js 18+)或 HTTP 直连(无需 Node.js)。
7. Blender 工具集(进阶)
这一组工具不在 /mcp 主工具集里,而是挂在同一服务的另一个端点
/mcp/blender(「设置 → MCP → Blender 工具集」默认开启;关掉后该端点直接回
403,主工具集不受影响)。
让 AI 直接操作本机 Blender —— 搭场景、写 bpy 建模、截图自查画面、导出
GLB / GLTF / FBX 出库。出站直连 addon,不需要装 uv、不起 Python
子进程、不改 Blender 配置:应用主动连 addon 的 localhost:9876。
前置条件
-
Blender 正在运行,且已启用 MCP addon(设置面板里选择对应 addon
类型,两种线协议互不兼容,选错表现为「连接超时」或「连接已重置」):
-
社区方案(默认):blender-mcp 项目的
addon.py,在 Blender 的Edit → Preferences → Add-ons安装启用 - 官方方案:Blender 扩展平台上的 Blender Lab「MCP Server」 官方扩展,安装后在扩展偏好里启动服务
-
社区方案(默认):blender-mcp 项目的
- 两种 addon 默认端口都是
9876;改过端口就在设置面板里同步填上 - 外部 Agent 想拿到这组工具,需要再注册一个 MCP server(
<token>取自应用侧mcp.json):claude mcp add --transport http blender http://127.0.0.1:43110/mcp/blender --header "Authorization: Bearer <token>"应用内的 ◈ AI 对话面板自动带上(内部为 dsh 注册第二个 mcp-client 实例),你在对话里说「用 Blender……」即可。
工具清单
工具名称、入参与输出在两种 addon 下完全一致,模型侧无感:
| 工具 | 作用 | 前置条件 |
|---|---|---|
get_scene_info |
场景概览:场景名、对象 / 材质数量、前若干对象的名称 · 类型 · 位置 | Blender 运行中 |
get_world_state_snapshot |
完整快照:几何 / 关系 / 动画摘要、当前帧与帧范围、FPS、选中对象、激活相机与灯光 | Blender 运行中 |
get_object_info |
单个对象详情(网格对象带顶点 / 边 / 面数与世界包围盒) | Blender 运行中 |
get_viewport_screenshot |
3D 视口截图,画面随 MCP 响应回给多模态客户端(离屏抓帧,失败回退窗口抓屏) | Blender 界面可见 |
execute_blender_code |
在 Blender 进程内执行 Python(完整访问 bpy),print 原样返回,报错带异常类型与 traceback |
Blender 运行中 |
export_scene |
把场景(或选中对象 / 指定对象)导出为 glb / gltf / fbx / obj / usd / stl,配 asset_import 入资产库 |
Blender 运行中 |
describe_node_type |
查节点类型(如 ShaderNodeTexImage)的端口与可设属性,写着色器 / 几何节点脚本前先问它 |
Blender 运行中 |
bpy_api_lookup |
在运行中的 Blender 里查 bpy API(操作符 / 类型 / 属性 / 函数),参数名与默认值来自真实 RNA | Blender 运行中 |
get_addon_status |
addon 版本 / 协议版本 / 能力清单 / Blender 版本,用来判断「连不上」是没启用、版本不匹配还是 Blender 没开 | Blender 运行中 |
典型闭环
get_scene_info 看清现状
↓
execute_blender_code 写 bpy 建模 / 调材质 / 摆相机
↓
get_viewport_screenshot 截图自查(多模态客户端直接看到画面)
↓
export_scene 出 GLB / GLTF / FBX …
↓
asset_import 一键入资产库
execute_blender_code 的步骤与参数,截图不对再迭代。
安全护栏
-
execute_blender_code不再做词法护栏:脚本可使用完整 Python / bpy(含class/lambda/open等)。写入兜底是 §6 的模式约束 —— Ask / Plan 下整组只读,写入调用被拒。 -
截图走一次性临时文件:
get_viewport_screenshot让 Blender 写到系统临时目录的一次性文件,应用读回后立即删除;画面只随 MCP 响应回给多模态客户端,不落工程、不进审计日志。 -
模式绑定请求,不绑定客户端:Blender 端点与主工具集共用
token,Ask / Plan 通过
X-AIArt-Mode/X-AIArt-Run-Id下发 —— Ask 整组不返回、Plan 只返回只读工具(get_scene_info/get_world_state_snapshot/get_object_info/get_viewport_screenshot/describe_node_type/bpy_api_lookup/get_addon_status),execute_blender_code与export_scene属 write 被拒并记审计。 -
addon 是 socket 服务端:Blender 一关,这组工具全部失败(错误明确说「连不上 addon」);应用不负责启动 Blender,也没有无界面模式 ——
get_viewport_screenshot对窗口可见性有要求(最小化时抓不到画面)。连接状态在设置面板里每 4 秒刷新一次,get_addon_status可随时查版本。