14 KiB
14 KiB
MCP Bridge 插件
这是一个为 Cocos Creator 设计的 MCP (Model Context Protocol) 桥接插件,用于连接外部 AI 工具与 Cocos Creator 编辑器,实现对场景、节点等资源的自动化操作。
适用版本
此插件适用于 Cocos Creator 2.4.x 版本。由于使用了特定的编辑器 API,可能不兼容较新或较老的版本。
功能特性
- HTTP 服务接口: 提供标准 HTTP 接口,外部工具可以通过 MCP 协议调用 Cocos Creator 编辑器功能
- 场景节点操作: 获取、创建、修改场景中的节点
- 资源管理: 创建场景、预制体,打开指定资源
- 组件管理: 添加、删除、获取节点组件
- 脚本管理: 创建、删除、读取、写入脚本文件
- 批处理执行: 批量执行多个 MCP 工具操作,提高效率
- 资产管理: 创建、删除、移动、获取资源信息
- 实时日志: 提供详细的操作日志记录和展示
- 自动启动: 支持编辑器启动时自动开启服务
- 编辑器管理: 获取和设置选中对象,刷新编辑器
- 游戏对象查找: 根据条件查找场景中的节点
- 材质管理: 创建和管理材质资源
- 纹理管理: 创建和管理纹理资源
- 菜单项执行: 执行 Cocos Creator 编辑器菜单项
- 代码编辑增强: 应用文本编辑操作到文件
- 控制台读取: 读取编辑器控制台输出
- 脚本验证: 验证脚本语法正确性
- 全局搜索: 在项目中搜索文本内容
- 撤销/重做: 管理编辑器的撤销栈
- 特效管理: 创建和修改粒子系统
- 工具说明: 测试面板提供详细的工具描述和参数说明
安装与使用
安装
将此插件复制到 Cocos Creator 项目的 packages 目录下即可。
启动
- 打开 Cocos Creator 编辑器
- 在菜单栏选择
MCP Bridge/Open Panel打开测试面板 - 在面板中点击 "Start" 按钮启动服务
- 服务默认运行在端口 3456 上
配置选项
- 端口: 可以自定义 HTTP 服务监听的端口,默认为 3456
- 自动启动: 可以设置编辑器启动时自动开启服务
连接 AI 编辑器
在 AI 编辑器(如 Cursor / VS Code)中配置
如果你的 AI 编辑器提供的是 Type: command 或 Stdio 选项:
Command: node
Args: [Cocos Creator 项目的绝对路径]/packages/mcp-bridge/mcp-proxy.js
例如,在你的项目中,完整路径应该是:
Args: [你的项目所在盘符]:/[项目路径]/packages/mcp-bridge/mcp-proxy.js
或者添加 JSON 配置:
{
"mcpServers": {
"cocos-creator": {
"command": "node",
"args": ["[Cocos Creator 项目的绝对路径]/packages/mcp-bridge/mcp-proxy.js"]
}
}
}
注意:请将上述配置中的路径替换为你自己项目中 mcp-proxy.js 文件的实际绝对路径。
API 接口
服务提供以下 MCP 工具接口:
1. get_selected_node
- 描述: 获取当前编辑器中选中的节点 ID
- 参数: 无
2. set_node_name
- 描述: 修改指定节点的名称
- 参数:
id: 节点的 UUIDnewName: 新的节点名称
3. save_scene
- 描述: 保存当前场景的修改
- 参数: 无
4. get_scene_hierarchy
- 描述: 获取当前场景的完整节点树结构(包括 UUID、名称和层级关系)
- 参数: 无
5. update_node_transform
- 描述: 修改节点的坐标、缩放或颜色
- 参数:
id: 节点 UUIDx,y: 坐标scaleX,scaleY: 缩放值color: HEX 颜色代码(如 #FF0000)(支持撤销操作)
6. open_scene
- 描述: 在编辑器中打开指定的场景文件。这是一个异步且耗时的操作,打开后请等待几秒。重要提示:如果是新创建或空的场景,请务必先创建并初始化基础节点(Canvas/Camera)。
- 参数:
url: 场景资源路径,如db://assets/NewScene.fire
7. create_node
- 描述: 在当前场景中创建一个新节点。
- 重要提示:
- 如果指定了
parentId,必须先通过get_scene_hierarchy确认该 UUID 对应的父节点仍然存在。 - 预设类型差异:
empty: 纯空节点,无组件,不带贴图。sprite: 自动添加 Sprite 组件,默认尺寸 100x100,并带有引擎默认贴图占位。button: 自动添加 Sprite 和 Button 组件,默认尺寸 150x50,背景色设为深色以便看清文字,并带有默认贴图。label: 自动添加 Label 组件,默认尺寸 120x40。
- 如果指定了
- 参数:
name: 节点名称parentId: 父节点 UUID (可选)type: 节点预设类型(empty,sprite,label,button)
8. manage_components
- 描述: 管理节点组件。
- 重要最佳实践:
- 引用验证:操作前必须调用
get_scene_hierarchy确认nodeId对应的节点真实存在(防止由于场景重置或节点删除导致的引用失效)。 - 在执行
add操作前,建议先通过get操作检查是否已存在同类组件。 - 添加
cc.Sprite后请务必设置其spriteFrame属性,否则节点将不显示。 - 创建按钮时,请确保目标节点有正数尺寸(
width/height)作为点击区域。
- 引用验证:操作前必须调用
- 参数:
nodeId: 节点 UUIDaction: 操作类型(add,remove,get,update)componentType: 组件类型,如cc.Sprite(用于add/update操作)componentId: 组件 ID(用于remove/update操作)properties: 组件属性(用于add/update操作)。智能特性:如果属性期望组件类型但传入节点 UUID,插件会自动查找匹配组件。
9. manage_script
- 描述: 管理脚本文件,默认创建 TypeScript 脚本
- 参数:
action: 操作类型(create,delete,read,write)path: 脚本路径,如db://assets/scripts/NewScript.tscontent: 脚本内容(用于create和write操作)name: 脚本名称(用于create操作)
- 默认模板: 当未提供 content 时,会使用 TypeScript 格式的默认模板
10. batch_execute
- 描述: 批处理执行多个操作
- 参数:
operations: 操作列表tool: 工具名称params: 工具参数
11. manage_asset
- 描述: 管理资源
- 参数:
action: 操作类型(create,delete,move,get_info)path: 资源路径,如db://assets/texturestargetPath: 目标路径(用于move操作)content: 资源内容(用于create操作)
12. scene_management
- 描述: 场景管理。创建并通过
open_scene打开后,请务必初始化基础节点(如 Canvas 和 Camera)。 - 参数:
action: 操作类型(create,delete,duplicate,get_info)path: 场景路径,如db://assets/scenes/NewScene.firetargetPath: 目标路径(用于duplicate操作)name: 场景名称(用于create操作)
13. prefab_management
- 描述: 预制体管理
- 参数:
action: 操作类型(create,update,instantiate,get_info)path: 预制体路径,如db://assets/prefabs/NewPrefab.prefabnodeId: 节点 ID(用于create和update操作)parentId: 父节点 ID(用于instantiate操作)
14. manage_editor
- 描述: 管理编辑器
- 参数:
action: 操作类型(get_selection,set_selection,refresh_editor)target: 目标类型(node,asset)(用于set_selection操作)properties: 操作属性nodes: 节点 UUID 数组(用于set_selection操作)assets: 资源 UUID 数组(用于set_selection操作)
15. find_gameobjects
- 描述: 查找游戏对象
- 参数:
conditions: 查找条件name: 节点名称(包含匹配)tag: 节点标签component: 组件类型active: 激活状态
recursive: 是否递归查找(默认:true)
16. manage_material
- 描述: 管理材质
- 参数:
action: 操作类型(create,delete,get_info)path: 材质路径,如db://assets/materials/NewMaterial.matproperties: 材质属性(用于create操作)uniforms: 材质 uniforms
17. manage_texture
- 描述: 管理纹理
- 参数:
action: 操作类型(create,delete,get_info)path: 纹理路径,如db://assets/textures/NewTexture.pngproperties: 纹理属性(用于create操作)width: 宽度height: 高度native: 原生路径
18. execute_menu_item
- 描述: 执行菜单项
- 参数:
menuPath: 菜单项路径,如Assets/Create/Folder。支持映射常用命令:File/New Scene,File/Save Scene,Edit/Undo,Edit/Redo,Project/Build等。
19. apply_text_edits
- 描述: 应用文本编辑
- 参数:
filePath: 文件路径,如db://assets/scripts/TestScript.tsedits: 编辑操作列表type: 操作类型(insert,delete,replace)position: 插入位置(用于insert操作)start: 开始位置(用于delete和replace操作)end: 结束位置(用于delete和replace操作)text: 文本内容(用于insert和replace操作)
20. read_console
- 描述: 读取控制台
- 参数:
limit: 输出限制(可选)type: 输出类型(log,error,warn)(可选)
21. validate_script
- 描述: 验证脚本
- 参数:
filePath: 脚本路径,如db://assets/scripts/TestScript.ts- 注意:对于 TypeScript 文件,仅进行基础语法结构检查,不进行完整编译验证。
22. find_in_file
- 描述: 全局文件搜索
- 参数:
query: 搜索关键词extensions: 文件后缀列表 (可选,默认['.js', '.ts', '.json', '.fire', '.prefab', '.xml', '.txt', '.md'])includeSubpackages: 是否搜索子包 (可选,默认 true)
23. manage_undo
- 描述: 撤销/重做管理
- 参数:
action: 操作类型 (undo,redo,begin_group,end_group,cancel_group)description: 撤销组描述 (用于begin_group)
24. manage_vfx
- 描述: 特效(粒子)管理
- 参数:
action: 操作类型 (create,update,get_info)nodeId: 节点 UUID (用于update,get_info)name: 节点名称 (用于create)parentId: 父节点 UUID (用于create)properties: 粒子属性对象duration,emissionRate,life,lifeVar,startColor,endColorstartSize,endSize,speed,angle,gravity,file(plist/texture)
25. manage_animation
- 描述: 管理节点的动画组件
- 参数:
action: 操作类型 (get_list,get_info,play,stop,pause,resume)nodeId: 节点 UUIDclipName: 动画剪辑名称 (用于play操作,可选,默认播放 defaultClip)
26. get_sha
- 描述: 获取指定文件的 SHA-256 哈希值
- 参数:
path: 文件路径,如db://assets/scripts/Test.ts
技术实现
架构设计
插件采用了典型的 Cocos Creator 扩展架构,包含以下几个部分:
- main.js: 插件主入口,负责启动 HTTP 服务和处理 MCP 请求
- scene-script.js: 场景脚本,负责实际执行节点操作
- panel/: 面板界面,提供用户交互界面
index.html: 面板 UI 结构index.js: 面板交互逻辑
HTTP 服务
插件内置了一个 HTTP 服务器,提供了两个主要接口:
GET /list-tools: 返回所有可用的 MCP 工具定义POST /call-tool: 执行具体的工具操作
MCP 协议集成
插件遵循 MCP (Model Context Protocol) 标准,使得外部 AI 工具能够理解并调用 Cocos Creator 的功能。
数据流
- 外部工具发送 MCP 请求到插件的 HTTP 接口
- main.js 接收请求并解析参数
- 通过 Editor.Scene.callSceneScript 将请求转发给 scene-script.js
- scene-script.js 在场景线程中执行具体操作
- 将结果返回给外部工具
开发指南
添加新功能
要在插件中添加新的 MCP 工具,需要:
- 在 main.js 的
/list-tools响应中添加工具定义 - 在 handleMcpCall 函数中添加对应的处理逻辑
- 如需在场景线程中执行,需要在 scene-script.js 中添加对应函数
日志管理
插件会记录所有操作的日志,包括:
- 服务启动/停止
- MCP 请求接收
- 操作成功/失败状态
- 错误信息
注意事项
- 插件需要在 Cocos Creator 环境中运行
- HTTP 服务会占用指定端口,请确保端口未被其他程序占用
- 插件会自动标记场景为"已修改",请注意保存场景
- 不同版本的 Cocos Creator 可能会有 API 差异,请根据实际情况调整
贡献
欢迎提交 Issue 和 Pull Request 来改进这个插件!
许可证
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
允许任何人获取、使用、修改和分发本软件,但必须遵守以下条件:
- 分发修改后的版本时,必须以相同的许可证公开源代码
- 通过网络提供服务时,也必须向用户提供源代码
- 任何衍生作品也必须遵循相同的许可证条款
完整的许可证文本可在项目根目录的 LICENSE 文件中找到。