我研究一下
不是一个 你说这个只支持3.x版本
对呀,他问的就是3.x的MCP
感谢反馈,有没有完整的日志或者复现步骤
2026-02-26T01:55:34.239Z - success: preview server running at http://localhost:7456
2026-02-26T01:55:34.793Z - normal: Initializing Cocos2d
2026-02-26T01:55:35.151Z - normal: Initializing engine extends
2026-02-26T01:55:35.949Z - normal: Loading packages
2026-02-26T01:55:35.952Z - normal: Run Application
2026-02-26T01:55:36.112Z - info: Cocos Service load base data!
2026-02-26T01:55:38.374Z - error: TypeError: Cannot read property 'a' of undefined
at CCClass._invoke (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\component-scheduler.js:245:10)
at CCClass.invoke (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\node-activator.js:82:10)
at CCClass.activateNode (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\node-activator.js:266:20)
at cc_Scene._activate (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\CCScene.js:114:32)
at Object.runSceneImmediate (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\CCDirector.js:492:11)
at D:\ProgramData\cocos\editors\Creator\2.4.13\resources\app.asar\editor\page\scene-utils\utils\scene.ccc:1:4051
at D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\asset-manager\utilities.js:406:9
at D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\platform\utils.js:74:9
at processTicksAndRejections (internal/process/task_queues.js:75:11)
2026-02-26T01:55:38.748Z - success: cloud-function unloaded
2026-02-26T01:57:08.806Z - error: TypeError: this.node._removeComponent is not a function
at cc_Label._onPreDestroy (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\components\CCComponent.js:539:15)
at cc_Label._destroyImmediate (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\platform\CCObject.js:517:10)
at cc_Node._onPreDestroy [as _onPreDestroyBase] (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\utils\base-node.js:1328:17)
at cc_Node._onPreDestroy (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\CCNode.js:1805:32)
at cc_Node._destroyImmediate (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\platform\CCObject.js:517:10)
at Immediate.deferredDestroy (D:\ProgramData\cocos\editors\Creator\2.4.13\resources\engine\bin\.cache\dev\cocos2d\core\platform\CCObject.js:202:11)
at processImmediate (internal/timers.js:461:21)
插件面板的日志方便也一起发一下嘛
编辑重启了,具体的复现步骤是:
- mcp 自动创建的 Label ,手动调整了位置(此时没有报错)。
- 然后使用 mcp 对话内再次调整了Label的位置(未生效)。
- 回到编辑器内尝试手动调整Y坐标,此时就出现了问题,文本没有跟随node 节点移动
- 尝试删除这个Label 也无法删除
好,我看看
可以加群沟通更方便一些:788307395
有微信群么,QQ不使用了 
看了仓库,更新频率高高滴呀 
编辑器体验与容错增强 (2026-02-28)
1. SpriteFrame 智能识别与自动转换
-
问题 : 当 AI 大模型尝试给
cc.Sprite等组件的spriteFrame属性赋值时,常常会错误传递为其父级Texture2D(原图) 的 UUID。Cocos 引擎由于类型不匹配会导致赋值无效,且静默失败(或陷入 IPC 死锁导致编辑器卡死)。 -
优化 : 在
scene-script.js中的applyProperties环节新增了类型容错机制。当识别到传入的 UUID 对应Texture2D但该属性(例如含sprite关键字)需要SpriteFrame时,脚本会利用 Node.jsfs直接读取对应的.meta文件,提取出实际子资源 (SpriteFrame) 的正确 UUID,从而实现自动转换与安全赋值。 -
降级 : 若自动转换失败(如
meta结构改变或读取失败),则会通过Editor.warn在控制台明确提示类型错误,拦截强制赋值操作,彻底消除潜在的隐性崩溃。
真不错
先mark了
引用查找与资源 UUID 自动解析 (2026-03-01)
1. 新增 find_references 工具
-
功能: 查找当前场景中引用了指定节点或资源的所有位置。支持节点引用 (
cc.Node) 和资源引用 (cc.Prefab,cc.SpriteFrame,sp.SkeletonData等)。 -
实现:
- 在
src/scene-script.js中新增find-referencesIPC 处理函数,递归遍历场景所有节点的所有组件属性,检查属性值是否引用了目标对象。 - 支持直接属性值、数组元素、
EventHandler.target的深层检查。 - 在
src/main.js中新增工具定义和路由。
- 在
-
返回结构: 包含
targetId、targetType(检测类型)、referenceCount(引用计数) 和详细的references数组,每项包含引用所在节点、组件类型、属性名等信息。
2. UUID 格式自动规范化
-
问题: Cocos Creator 2.x 中
cc.Asset._uuid使用 22 位压缩格式,而Editor.assetdb返回标准 36 位带连字符格式,直接字符串比较无法匹配。 -
修复: 在
find-references处理函数中通过Editor.Utils.UuidUtils预计算目标 UUID 的压缩和解压格式,将所有变体存入targetVariants数组进行全量匹配。
3. Texture2D -> SpriteFrame 子资源 UUID 自动解析
-
问题: AI 传入图片 (Texture2D) 的 UUID 时,
cc.Sprite.spriteFrame实际引用的是该图片的子资源 SpriteFrame(具有不同的 UUID),导致直接查找返回空结果。 -
修复: 在
src/main.js的find_references路由中,调用 scene-script 前自动读取目标 UUID 对应资源的.meta文件,提取所有subMetas中的子资源 UUID (如 SpriteFrame),作为additionalIds传递给 scene-script。scene-script 将这些额外 UUID 及其压缩/解压变体一并加入匹配列表,实现 “传入 Texture2D UUID 也能查到 SpriteFrame 引用” 的透明体验。
节点变换属性修复与数据增强 (2026-03-01)
1. update-node-transform 属性设置方式修复 (src/scene-script.js)
-
问题:
update-node-transform中x,y,width,height,scaleX,scaleY六个属性通过异步 IPCEditor.Ipc.sendToPanel("scene", "scene:set-property", ...)设置,存在 fire-and-forget 问题,函数在属性实际生效前就已返回成功回复。导致宽高不生效(Sprite 的 sizeMode 可能在异步消息到达前重置)、坐标不生效(异步 IPC 竞态条件)、批量操作属性丢失等问题。 -
修复: 将所有属性设置统一改为在 scene-script(渲染进程)中直接对节点属性同步赋值(如
node.x = Number(x)),与set-property和create-node中的处理方式保持一致。color同步改为直接赋值node.color = new cc.Color().fromHEX(color)。 - 已验证: 全部 7 个属性(x, y, width, height, scaleX, scaleY, color)批量设置后均即时生效。
2. update_node_transform 工具参数扩展 (src/main.js + src/scene-script.js)
-
问题: 编辑器属性面板中的 Rotation、Anchor、Opacity、Skew 四类属性无法通过
update_node_transformMCP 工具设置和获取。 -
修复:
- 在
src/main.js的工具inputSchema中新增rotation,anchorX,anchorY,opacity,skewX,skewY六个参数定义。 - 在
src/scene-script.js的update-node-transform处理函数中新增对应的直接赋值逻辑(node.angle,node.anchorX,node.anchorY,node.opacity,node.skewX,node.skewY)。
- 在
- 已验证: 全部 13 个属性(x, y, rotation, width, height, scaleX, scaleY, anchorX, anchorY, color, opacity, skewX, skewY)批量设置后均即时生效。
3. get_scene_hierarchy 节点详情数据增强 (src/scene-script.js)
-
问题:
includeDetails模式仅返回 position, scale, size 三类数据,缺少 rotation, anchor, color, opacity, skew, group 信息,无法通过 API 完整验证节点属性。 -
修复: 在
dumpNodes函数的includeDetails分支中新增六个返回字段:-
rotation:node.angle -
anchor:{ x: node.anchorX, y: node.anchorY } -
color:{ r: node.color.r, g: node.color.g, b: node.color.b } -
opacity:node.opacity -
skew:{ x: node.skewX, y: node.skewY } -
group:node.group
-
-
效果:
includeDetails现在返回与编辑器属性面板完全一致的所有节点属性。
4. Scene 面板未就绪友好提示 (src/main.js)
-
问题: 插件重载或场景切换期间调用 scene-script 方法时,原始错误
Error: ipc failed to send, panel not found信息晦涩,容易让用户误以为插件出现严重故障。 -
修复: 在
callSceneScriptWithTimeout的回调中检测panel not found错误,自动替换为友好中文提示:场景面板尚未就绪(可能正在重载插件或切换场景),请等待几秒后重试。日志级别从error降为warn。
大佬很快啊,,
预制体序列化格式修复 (2026-03-02)
1. create-prefab 序列化输出格式修复 (src/scene-script.js)
-
问题: 通过
create_prefab工具创建的预制体虽然不报错,但文件内容格式不正确,导致在编辑器中打开或使用时出现异常行为。 -
原因:
Editor.serialize(node)输出的是场景格式而非预制体格式,具体表现为:-
数组首元素为 cc.Node而非cc.Prefab包装器。 -
包含 cc.Scene对象,根节点_parent指向 Scene。 -
所有节点的 _prefab字段为null,缺少cc.PrefabInfo。 -
节点保留了运行时 _id值(如"f6WlEh4IdCcKIheBW4zwk5"),而预制体中应为空字符串。
-
-
修复: 在
src/scene-script.js中重写create-prefab处理器,增加 9 步后处理管线将场景格式数据转换为标准预制体格式:-
解析
Editor.serialize()返回的 JSON。 -
识别并移除
cc.Scene对象。 -
构建旧索引到新索引的映射表。
-
添加
cc.Prefab根包装器(索引 0,data指向根节点)。 -
更新所有
__id__引用为新索引。 -
修复根节点
_parent为null。 -
清空所有节点的
_id为空字符串。 -
为每个
cc.Node生成cc.PrefabInfo(含唯一fileId、root指向根节点、asset指向cc.Prefab)。 -
序列化为 JSON 字符串返回。
-
-
验证: 创建的预制体文件结构与编辑器原生拖拽创建的预制体完全一致,可正常打开编辑、实例化使用,控制台零报错。
ps: 感谢 @亮仔
否? 提供的反馈以及操作日志
库拉牛逼!
牛!!!!!!!!!!!!!!!
性能优化与防御性增强 (2026-03-04)
1. JSON 响应压缩输出 (src/main.js)
-
问题: MCP 工具调用返回结果时使用
JSON.stringify(result, null, 2)格式化输出,凭空增加约 20-40% 的响应体积,消耗额外 Token 且对 AI 工具毫无意义。 -
修复: 移除缩进参数,改为
JSON.stringify(result)压缩输出。 - 效果: 响应体积减少 20-40%,直接降低 AI 模型的 Token 消耗成本。
2. 指令队列长度限制 (src/main.js)
-
问题:
commandQueue数组无最大长度限制,理论上在极端情况下可能无限增长。 -
修复: 新增
MAX_QUEUE_LENGTH = 100常量。enqueueCommand入口检查队列长度,超限时直接 reject 并返回 HTTP 429 状态码,同时记录告警日志。 -
保护: 在
enqueueCommand调用处补充.catch()处理 reject,确保 HTTP 响应正常关闭,避免 unhandled promise rejection。
3. 层级树子节点数量上限 (src/scene-script.js)
-
问题:
get-hierarchy的dumpNodes递归遍历子节点时无数量限制,若某个节点下有数百个同级子节点,返回数据量巨大。 -
修复: 新增
MAX_CHILDREN_PER_LEVEL = 50安全上限。每层最多返回 50 个子节点,超出部分在返回数据中通过childrenTruncated字段标注被截断的数量,帮助 AI 知悉还有更多子节点未列出。
