Cocos Creator 2.x MCP Server
开源、免费、零依赖的 MCP (Model Context Protocol) 服务器,为 Cocos Creator 2.x 编辑器提供 AI 驱动的游戏开发能力。
支持 Claude Desktop、Cursor、Windsurf、Gemini CLI 等任何兼容 MCP 协议的 AI 客户端。
特性
- 15 个 MCP 工具,80+ 操作 — 覆盖场景、节点、组件、UI、动画、资源、预制体、构建全流程
- 零外部依赖 — 纯 Node.js 内置模块,无需 npm install
- 即装即用 — 复制到项目
packages/ 目录,打开编辑器即可 - 可视化设置面板 — 在编辑器内直接修改端口、开关服务
- AI 组件知识库 — 内置 16 个组件的完整属性定义和使用提示
- 自然语言意图分发 — 描述你想做的事,自动匹配对应工具
安装
将 cocos2x-mcp/ 文件夹复制到 Cocos Creator 2.x 项目的 packages/ 目录:
your-project/
assets/
packages/
cocos2x-mcp/ <-- 复制到这里
打开编辑器,扩展自动加载,控制台输出:
[Cocos2x MCP] MCP Server running on http://localhost:3000/mcp
配置 AI 客户端
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"cocos-2x": {
"url": "http://localhost:3000/mcp"
}
}
}
Cursor (项目根目录 .cursor/mcp.json):
{
"mcpServers": {
"cocos-2x": {
"url": "http://localhost:3000/mcp"
}
}
}
修改端口
编辑器菜单 Cocos MCP Server > Settings 打开设置面板,可直接修改端口。
也可以手动编辑扩展目录下的 config.json:
{
"port": 3000,
"autoStart": true,
"debugLog": false
}
修改后点击 Reload Config 或重启编辑器生效。
使用
在 AI 客户端中直接用自然语言描述你想做的事:
- "查看当前场景的节点树结构"
- "在 Canvas 下创建一个按钮,文字是'开始游戏'"
- "找到所有 Label 节点"
- "把 PlayerNode 的 x 改成 200"
- "帮我检查场景有没有缺失引用的问题"
- "cc.Widget 组件有哪些属性?怎么用?"
工具清单
场景与节点
| 工具 | 操作数 | 功能 |
|---|
| cocos_scene | 3 | 获取当前场景信息、查询节点层级树、列出项目所有场景 |
| cocos_node | 11 | 创建/删除/查找/修改节点,批量修改,重设父节点,挂载/移除脚本 |
| cocos_component | 6 | 添加/移除/查询/修改组件属性,列出节点组件,查看可用组件类型 |
UI 创建
| 工具 | 操作数 | 功能 |
|---|
| cocos_composite | 8 | 一键创建 Button、ScrollView、Toggle、ProgressBar、EditBox、Panel,批量创建节点,配置 Widget |
| cocos_label | 5 | 创建文本节点,修改文字内容/字号/颜色/对齐方式 |
| cocos_sprite | 3 | 创建图片节点,设置尺寸模式和渲染类型 |
资源与预制体
| 工具 | 操作数 | 功能 |
|---|
| cocos_asset | 5 | 按模式/类型查询资源,UUID / URL / 文件路径互转 |
| cocos_prefab | 3 | 列出所有预制体,获取预制体信息,实例化预制体到场景 |
动画与视口
| 工具 | 操作数 | 功能 |
|---|
| cocos_animation | 6 | 播放/暂停/恢复/停止动画,获取动画片段列表和播放状态 |
| cocos_view | 3 | 聚焦到指定节点,重置视口,获取设计分辨率 |
编辑器控制
| 工具 | 操作数 | 功能 |
|---|
| cocos_editor | 4 | 保存/打开场景,获取项目信息,刷新资源数据库 |
| cocos_builder | 3 | 打开构建面板,启动浏览器预览,查询可用构建平台 |
校验与智能
| 工具 | 操作数 | 功能 |
|---|
| cocos_validate | 4 | 场景综合校验,检查缺失引用,检查布局问题,按组件类型搜索节点 |
| cocos_knowledge | 5 | 16 个组件的完整属性/枚举值/使用提示,常用 UI 模式,关键词搜索 |
| cocos_do | 1 | 自然语言意图分发器,50+ 匹配规则,自动推荐应调用的工具 |
详细操作说明
cocos_scene
| 操作 | 参数 | 说明 |
|---|
get_info | -- | 返回当前场景的名称、UUID、子节点列表 |
get_hierarchy | maxDepth? | 返回完整的节点树结构 |
list_scenes | -- | 查询项目中所有 .fire 场景文件 |
cocos_node
| 操作 | 参数 | 说明 |
|---|
create | name, parent?, x?, y?, width?, height?, scaleX?, scaleY?, rotation?, anchorX?, anchorY?, opacity?, color?, active?, zIndex? | 创建新节点,默认挂载到 Canvas 下 |
delete | uuid / path / name | 删除指定节点 |
get_info | uuid / path / name | 返回节点完整属性和组件列表 |
find_by_name | name | 按名称搜索节点 |
find_by_path | path | 按路径定位节点(如 "Canvas/Panel/Button") |
set_property | uuid/path/name, property, value | 修改属性:x, y, width, height, scale, rotation, opacity, active, color 等 |
get_all | maxCount? | 返回场景中所有节点摘要 |
reparent | node*, parent*, keepWorldTransform? | 移动节点到新父节点 |
batch_modify | modifications[] | 批量修改多个节点 |
mount_script | uuid/path/name, scriptName | 挂载脚本组件 |
remove_script | uuid/path/name, scriptName | 移除脚本组件 |
cocos_component
| 操作 | 参数 | 说明 |
|---|
add | uuid/path/name, componentType, properties? | 添加组件(支持 "Sprite" 或 "cc.Sprite") |
remove | uuid/path/name, componentType | 移除组件 |
get_info | uuid/path/name, componentType | 获取组件详情 |
set_property | uuid/path/name, componentType, property, value | 修改组件属性 |
list | uuid/path/name | 列出节点上所有组件 |
list_available | -- | 列出 31 个可用内置组件 |
cocos_composite
| 操作 | 说明 |
|---|
create_button | 创建完整按钮:节点(Sprite+Button) + Label 子节点 |
create_scrollview | 创建 ScrollView > view(Mask) > content(Layout) |
create_toggle | 创建 Toggle + Background + checkmark |
create_progressbar | 创建 ProgressBar + bar Sprite |
create_editbox | 创建文本输入框 |
create_panel | 创建全屏面板(Widget 四边拉伸 + BlockInputEvents) |
batch_create | 批量创建节点,type 可选: node, label, sprite, button |
setup_widget | 配置 Widget 对齐属性 |
cocos_label
| 操作 | 说明 |
|---|
create | 创建带 Label 组件的节点 |
set_text | 修改文本内容 |
set_font_size | 修改字号 |
set_color | 修改颜色 |
set_alignment | 修改对齐(水平: LEFT/CENTER/RIGHT, 垂直: TOP/CENTER/BOTTOM) |
cocos_sprite
| 操作 | 说明 |
|---|
create | 创建带 Sprite 组件的节点 |
set_size_mode | 尺寸模式: CUSTOM / TRIMMED / RAW |
set_type | 渲染类型: SIMPLE / SLICED / TILED / FILLED |
cocos_animation
| 操作 | 说明 |
|---|
play | 播放动画(可指定 clipName, wrapMode, speed) |
stop | 停止动画 |
pause | 暂停 |
resume | 恢复 |
get_clips | 获取节点上所有动画片段信息 |
get_state | 获取当前播放状态 |
cocos_prefab
| 操作 | 说明 |
|---|
list | 列出项目中所有 .prefab 文件 |
get_info | 获取预制体元数据 |
instantiate | 实例化预制体到场景 |
cocos_asset
| 操作 | 说明 |
|---|
query | 按 URL 模式搜索资源 |
find_by_type | 按类型列出资源(sprite-frame, prefab, scene 等) |
get_info | 获取资源元数据 |
get_url | UUID 转 URL |
get_path | UUID 转文件路径 |
cocos_editor
| 操作 | 说明 |
|---|
project_info | 获取项目名称和路径 |
save_scene | 保存当前场景 |
open_scene | 打开指定场景 |
refresh_assets | 刷新资源数据库 |
cocos_builder
| 操作 | 说明 |
|---|
query_build_options | 查询可用构建平台 |
open_build_panel | 打开构建面板 |
start_preview | 启动浏览器预览 |
cocos_validate
| 操作 | 说明 |
|---|
validate_scene | 综合校验(空节点、过深嵌套等) |
check_references | 检查缺失引用 |
check_layout | 检查布局问题 |
find_by_component | 按组件类型搜索节点 |
cocos_knowledge
| 操作 | 说明 |
|---|
component_info | 获取组件完整属性定义和使用提示 |
list_all | 列出所有已收录组件 |
node_info | cc.Node 属性参考 |
patterns | 常用 UI 模式 |
search | 关键词搜索 |
cocos_do
| 操作 | 说明 |
|---|
| (默认) | 自然语言描述意图,自动匹配工具和操作 |
架构
AI 客户端 (Claude / Cursor / Gemini CLI)
| HTTP POST /mcp (JSON-RPC 2.0)
v
main.js --- HTTP 服务器 (Electron 主进程)
|
v
src/tools/*.js --- 15 个工具模块
|
v
ipc-bridge.js --- Editor.Scene.callSceneScript (Promise 化)
|
v
scene-walker.js --- 场景脚本 (渲染进程, cc 全局可用)
|
v
Cocos Creator 2.x 引擎 API
两条执行路径:
- 场景操作(节点、组件、动画等)通过
Editor.Scene.callSceneScript 进入场景进程 - 编辑器操作(资源查询、场景保存、构建等)直接在主进程调用
Editor.assetdb 等 API
目录结构
cocos2x-mcp/
package.json # Cocos Creator 2.x 扩展清单
config.json # 服务器配置(端口、自动启动等)
main.js # 扩展入口:HTTP 服务器 + 生命周期
scene-walker.js # 场景脚本:所有引擎操作的实现
panel/
index.js # 设置面板 UI
src/
mcp-server.js # MCP JSON-RPC 协议处理器
tools/
index.js # 工具注册中心
scene-tools.js # cocos_scene
node-tools.js # cocos_node
component-tools.js # cocos_component
composite-tools.js # cocos_composite
label-tools.js # cocos_label
sprite-tools.js # cocos_sprite
animation-tools.js # cocos_animation
prefab-tools.js # cocos_prefab
asset-tools.js # cocos_asset
editor-tools.js # cocos_editor
builder-tools.js # cocos_builder
validate-tools.js # cocos_validate
view-tools.js # cocos_view
knowledge-tools.js # cocos_knowledge
do-tools.js # cocos_do
utils/
ipc-bridge.js # Promise 化的 callSceneScript
node-resolver.js # 节点查找(UUID/路径/名称)
component-map.js # 31 个内置组件名称映射
param-validator.js # 参数校验
测试
# 自动化测试(需要 MCP 服务器运行中)
bash run_tests.sh
# 手动健康检查
curl http://localhost:3000/mcp
# 列出所有工具
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
已知限制
- 大资源查询 — 项目资源量极大时,
cocos_asset 查询可能超时 - 预制体创建 — 当前仅支持实例化已有预制体,不支持从节点创建新预制体
- SpriteFrame 加载 — 创建 Sprite 时无法直接指定图片资源(需通过 UUID 加载后赋值)
扩展开发
添加新工具
- 在
src/tools/ 下创建 xxx-tools.js,导出 { definition, handler } - 在
src/tools/index.js 中 register() 注册 - 如需场景操作,在
scene-walker.js 中添加对应方法 - 重载扩展后生效
场景脚本方法格式
// scene-walker.js 中添加
myNewMethod: function (event, args) {
// cc 全局可用
var result = { /* ... */ };
event.reply(null, result); // 必须调用 event.reply
}
从工具层调用场景脚本
var ipcBridge = require('../utils/ipc-bridge');
ipcBridge.callSceneScript('myNewMethod', { param1: 'value' })
.then(function (result) { /* ... */ });
License
MIT