在今天发布的 LayaAir 3.2.5 中,我们不仅修复了若干已知BUG,还对程序蓝图、3D物理系统、IDE易用性等方面进行了优化和完善,为开发者带来更加易用的创作体验。
本次版本还有一个非常重要的升级,那就是支持了MCP(Model Context Protocol)协议规范。

MCP是一套面向未来的开放式标准,旨在打通引擎与AI辅助开发工具(如Claude、Cursor等)之间的连接。通过MCP,开发者可以基于LayaAir引擎扩展自定义的Tool工具和Prompt提示模块,并将其直接暴露给支持MCP的智能IDE进行调用。
这意味着:
极大提升开发效率:
通过AI工具理解和调用开发者的自定义功能模块,减少重复劳动,加速开发流程。
支持个性化扩展:
可以根据项目需求,量身定制专属的开发辅助工具,让LayaAir3-IDE成为真正属于大家的个性化IDE。
接轨未来开发趋势:
MCP作为AI辅助编程的重要标准之一,LayaAir 引擎率先接入,让我们的开发环境始终保持行业前沿。
社区共建生态:
通过免费开放的插件,引导更多开发者贡献MCP插件和模块,整个LayaAir生态将变得更加开放、多元、富有生命力。
如何快速启用MCP支持?
1、打开资源商店,搜索关键词 "MCP",将引擎官方MCP插件添加至我的资源。

2、启动 LayaAir-IDE 3.2.5,依次点击菜单栏 开发者 -> 包管理器,找到并安装添加的MCP插件。

3、插件安装完成后,MCP服务器将自动启动,并在界面中显示可用的URL。

4、将上图控制台的 URL 填写到 Cursor、Claude 等支持MCP协议的服务器配置项中,即可开始智能联动开发。
例如 Cursor 配置里,先在 Cursor Setting 中找到 Features,下滑找到 MCP Servers,点击Add new MCP Server。


说明:
Name | 用于识别服务器的昵称 |
Type | sse:用于服务器发送事件 |
Server URL | 将前文的URL复制到此处 |
以下视频演示了基于MCP协议,LayaAir3-IDE场景编辑与3D美术工具Blender形成了联动开发。
如何使用MCP二次开发?
MCP开发方式和普通的插件开发方式相同。在项目新建一个ts文件,使用本插件提供的装饰器就可以自定义 tool 和 prompt 。
@IEditor.mcp.tool | 在UI进程自定义tool |
@IEditor.mcp.prompt | 在UI进程自定义prompt |
@IEditorEnv.mcp.tool | 在场景进程自定义tool |
@IEditorEnv.mcp.prompt | 在场景进程自定义prompt |
回调函数的返回值可以为字符串,也可以为对象,请参考官方文档:
https://modelcontextprotocol.io/docs为了让vscode能够识别本插件提供的装饰器,需要在tsconfig里加上配置,如下示例,在include里加入./library/packages/**/*.d.ts
{ "compilerOptions": { }, "include": [ "./assets", "./src", "./engine", "./library/packages/**/*.d.ts" ]}以下是简单的示例:
import fs from "fs";import fpath from "path";
export class MCPTest { @IEditorEnv.mcp.tool("create-cube-in-scene", 'create a cube in the opened scene') static async createCube() { let cube = new Laya.Sprite3D(); cube.name = "Cube"; cube.addComponent(Laya.MeshFilter).sharedMesh = <Laya.Mesh>await Laya.loader.load("~/internal/Box.lm"); cube.addComponent(Laya.MeshRenderer).sharedMaterial = <Laya.Material>await Laya.loader.load("~/internal/DefaultMaterial.lmat"); EditorEnv.scene.addNode(EditorEnv.scene.rootNode3D, cube); EditorEnv.navigationManager.focusNode(cube); return "finish"; }
@IEditorEnv.mcp.tool("import-model-to-scene", "import an external model to the scene", { path: "an absolute file path" }) static async importModelToScene(sourceFile: string) { let asset = EditorEnv.assetMgr.createFileAsset(fpath.basename(sourceFile), true); await fs.promises.copyFile(sourceFile, EditorEnv.assetMgr.getFullPath(asset)); //等待IDE监测到文件系统的改变 await IEditorEnv.utils.sleep(500); await EditorEnv.assetMgr.flushChanges(); let node = await EditorEnv.scene.instantiatePrefab(asset.id, null, null); EditorEnv.scene.addNode(EditorEnv.scene.rootNode3D, node); EditorEnv.navigationManager.focusNode(node); return "finish"; }}更多3.2.5的更新记录,请前往官网查看!
https://layaair.com/#/engineDownload/
END
674

被折叠的 条评论
为什么被折叠?



