loading…
Search for a command to run...
loading…
A headless MCP server that enables AI to create complete 2D/3D games in Cocos Creator without opening the editor or writing TypeScript code, featuring 184 tools
A headless MCP server that enables AI to create complete 2D/3D games in Cocos Creator without opening the editor or writing TypeScript code, featuring 184 tools for scene building, physics, UI, and automated testing.
无头 Cocos Creator 3.8 MCP 服务器 —— 让 AI 不打开编辑器、不写一行
.ts代码,30 分钟内交付一个能跑能玩的完整 2D / 基础 3D 小游戏。
🔐 商业授权项目 · 源码闭源 需要试用 / 合作 / 定制:📧 [email protected] 旧版本(≤v1.1.0)以 MIT 开源,现版本起转闭源。
.scene / .prefab / .meta JSON,不依赖编辑器 GUI;业界唯一add_dialog_modal / add_main_menu / add_hud_bar 一次搭完整 UI 块仓库为私有仓库。先联系作者获取访问权限(邮箱:
[email protected])。
# 1. 克隆(用你的访问凭证)
git clone https://gitee.com/csbcsb/cocos-mcp.git ~/.claude/mcp-servers/cocos-mcp
# 2. 装依赖
cd ~/.claude/mcp-servers/cocos-mcp
uv venv .venv --python 3.12
source .venv/bin/activate
uv pip install .
# 3. 注册到你的 MCP 客户端(见下方 Client Configuration)
然后重启客户端,直接说:
"做一个贪吃蛇游戏" "做一个带物理碰撞的平台跳跃" "把这个角色 prefab 在场景里实例化 10 个" "打包成微信小游戏,
levels/走分包"
一行命令注册:
claude mcp add -s user cocos-mcp -- bash ~/.claude/mcp-servers/cocos-mcp/run.sh
重启 Claude Code 生效。
编辑配置文件(macOS:~/Library/Application Support/Claude/claude_desktop_config.json;Windows:%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"cocos-mcp": {
"command": "bash",
"args": ["/Users/YOU/.claude/mcp-servers/cocos-mcp/run.sh"]
}
}
}
编辑 ~/.cursor/mcp.json:
{
"mcpServers": {
"cocos-mcp": {
"command": "bash",
"args": ["/Users/YOU/.claude/mcp-servers/cocos-mcp/run.sh"]
}
}
}
编辑 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cocos-mcp": {
"command": "bash",
"args": ["/Users/YOU/.claude/mcp-servers/cocos-mcp/run.sh"]
}
}
}
在项目根或 ~/.vscode/settings.json 里:
{
"mcp": {
"servers": {
"cocos-mcp": {
"type": "stdio",
"command": "bash",
"args": ["/Users/YOU/.claude/mcp-servers/cocos-mcp/run.sh"]
}
}
}
}
Windows 用户:把
bash /path/to/run.sh换成cmd /c /path/to/run.bat,或直接用python server.py启动(需先激活 venv)。
已经装过的用户拉新版本(以默认安装路径 ~/.claude/mcp-servers/cocos-mcp 为例):
cd ~/.claude/mcp-servers/cocos-mcp
git pull
uv pip install --python .venv/bin/python . # 同步依赖(pyproject 可能新增包)
然后 完整重启 MCP 客户端(Claude Code / Desktop / Cursor / ...)。 理由:MCP server 是常驻子进程,Python 代码已加载进内存;不重启客户端就还在跑旧版本。
快速校验本地安装没坏:
~/.claude/mcp-servers/cocos-mcp/.venv/bin/python -c "import cocos, server; print('import OK')"
Windows 用户:把
.venv/bin/python换成.\.venv\Scripts\python.exe。
启动时 stderr 会打印实际注册数量:
cocos-mcp: N tools registered…
new_uuid / compress_uuid(生成 23 字符短形式)/ decompress_uuidlist_creator_installs / init_project / get_project_info / list_assetsadd_script / add_image / add_audio_file / add_resource_file / upgrade_image_meta / set_sprite_frame_border(9-slice)/ get_sprite_frame_uuid / constantscreate_scene / create_node / move_node / delete_node / duplicate_node / set_node_position/scale/rotation/active/layer / find_node_by_name / list_scene_nodesadd_uitransform / add_sprite / add_label / add_graphics / add_widget / add_component(通用)add_rigidbody2d + 3 种 Collider(Box / Circle / Polygon)set_physics_2d_config(重力 / 睡眠阈值 / 子步数)add_rigidbody_3d + 8 种 Collider(Box / Sphere / Capsule / Cylinder / Cone / Plane / Mesh / Terrain)+ 2 种 CharacterController + set_physics_3d_config + create_physics_materialadd_directional_light / add_sphere_light / add_spot_light / add_mesh_renderer / add_skinned_mesh_rendererERigidBodyType.DYNAMIC=1 / STATIC=2 / KINEMATIC=4 这类 bitmask 都有 regression testadd_dialog_modal / add_main_menu / add_hud_bar / add_card_grid / add_toast / add_loading_spinner —— AI 一次搭完整 UI 块make_fullscreen / anchor_to_edge / center_in_parent / stack_vertically / stack_horizontally —— 告别 Widget bitmaskadd_styled_text_block —— 标题 + 副标题 + 分割线 + 正文add_fade_in / add_slide_in / add_scale_in / add_bounce_in / add_pulse / add_shakeset_ui_theme(5 内置:dark_game / light_minimal / neon_arcade / pastel_cozy / corporate)/ get_ui_tokens / list_builtin_themes / hex_to_rgbacocos_lint_ui —— 8 条规则(touch target / 长文本剪字 / UI layer / WCAG 对比度 / 按钮重叠 / 字号框 / 按钮多无 Layout / 嵌套 Mask)让 AI 真正能"玩"自己做的游戏:
cocos_click_preview / cocos_press_key_preview / cocos_drag_previewcocos_fill_preview(文字输入)cocos_read_state_preview(读任意 JS 表达式,如 window.game.score)cocos_wait_preview / cocos_run_preview_sequence(序列批执行)cocos_screenshot_preview_diff(纯 Pillow 视觉回归,不依赖 Playwright)Playwright 是可选依赖(~200 MB chromium),没装时工具返回明确的 install hint。
生成 canonical .ts 模板,返回压缩 UUID 直接挂节点:
scaffold_input_abstraction —— WASD + 方向键 + 触屏统一成 InputManager 单例scaffold_score_system —— 当前/最高分 + localStorage + Label 自动渲染scaffold_player_controller —— 4 kinds:platformer / topdown / flappy / click_onlyscaffold_enemy_ai —— 3 kinds:patrol / chase / shootscaffold_spawner —— 2 kinds:time 定时 / proximity 靠近触发scaffold_game_loop —— menu / play / over 状态机scaffold_audio_controller / scaffold_camera_follow / scaffold_ui_screen所有模板字段都走 @property 让 Inspector 可调;numeric 字段带 { tooltip } 注解。
generate_asset(CogView-3-Flash / Pollinations,SHA-256 缓存)/ create_sprite_atlascreate_prefab / instantiate_prefab(带 fileId 唯一化)/ save_subtree_as_prefabvalidate_scene / audit_scene_modules(组件 vs 引擎模块一致性)/ get_object / get_object_count / list_scene_nodesbatch_scene_ops:一次 read/write 跑多个 op;27 种 op 类型;实测 200 工具调用 4293ms → 33ms(130x)set_ambient / set_skybox / set_shadows / set_fog(LINEAR / EXP / EXP² / LAYERED)cocos_build:headless 构建 web-mobile / wechatgame / ios / android,带 source_maps / md5_cache / skip_compress_texture / inline_enum / mangle_propertiescocos_start_preview / stop_preview / preview_statusregister_post_build_patch / list / remove / apply —— 声明式 json_set / regex_sub / copy_from,cocos_build 成功后自动应用,跟着 git 走set_native_build_config(iOS/Android 包名/签名/朝向/icon)/ set_bundle_config / set_wechat_subpackages(4 MB 主包分包)get_engine_modules / set_engine_module(开关 physics-2d-box2d / spine / video 等)仓库自带 3 个一键运行的演示项目:
.venv/bin/python examples/flappy-bird/build_flappy.py /tmp/flappy --port 8080
.venv/bin/python examples/click-counter/build_click_counter.py /tmp/click --port 8081
.venv/bin/python examples/breakout/build_breakout.py
运行后打开 http://localhost:8080 即可玩。
# 1. 初始化 + 开启 3D 物理(默认 gravity = -10 m/s² 不是 -320 像素)
cocos_init_project("/tmp/roll3d")
cocos_set_physics_3d_config("/tmp/roll3d", gravity_y=-9.8)
# 2. 造个有摩擦系数的物理材质
ice = cocos_create_physics_material("/tmp/roll3d", "ice", friction=0.02, restitution=0.3)
# 3. 场景:Ball + Ground + 方向光
scene = cocos_create_scene("/tmp/roll3d/assets/scenes/game.scene")
canvas = scene["canvas_node_id"]
sun = cocos_create_node(scene_path, canvas, "Sun")
cocos_add_directional_light(scene_path, sun, illuminance=65000, shadow_enabled=True)
ball = cocos_create_node(scene_path, canvas, "Ball", lpos=[0, 5, 0])
cocos_add_rigidbody_3d(scene_path, ball, body_type=1) # DYNAMIC=1(bitmask)
col = cocos_add_sphere_collider_3d(scene_path, ball, radius=0.5)
cocos_set_uuid_property(scene_path, col, "_material", ice["uuid"])
# 4. 雾 + release 构建
cocos_set_fog(scene_path, enabled=True, fog_type=1, density=0.05) # EXP
cocos_build("/tmp/roll3d", debug=False, md5_cache=True)
cocos_set_native_build_config(
project, "android",
package_name="com.foo.game",
orientation="landscape",
android_min_api=21, android_target_api=33,
android_use_debug_keystore=False,
android_keystore_path="/keys/release.jks",
android_keystore_password="…",
android_keystore_alias="prod",
android_keystore_alias_password="…",
android_app_bundle=True, # 出 .aab
)
# 把 assets/levels/ 标记成 Bundle,运行时 cc.assetManager.loadBundle('levels')
cocos_set_bundle_config(project, "assets/levels",
compression_type={"web-mobile": "merge_dep", "wechatgame": "subpackage"})
cocos_set_wechat_subpackages(project, [
{"name": "level1", "root": "assets/levels/world1"},
{"name": "audio", "root": "assets/audio"},
])
Cocos 每次构建都会重新生成 build/<platform>/,手动改的 style.css / project.config.json 全被刷掉。通过声明式补丁登记一次,之后每次构建自动应用:
cocos_register_post_build_patch(project, patches=[
# ① JSON 精准 key 覆盖(解决 WeChat appid 被重置)
{"platform": "wechatgame", "file": "project.config.json",
"kind": "json_set", "path": "appid", "value": "wx000000000000demo"},
# ② 正则替换
{"platform": "web-mobile", "file": "style.css",
"kind": "regex_sub",
"find": r"background:\s*#[0-9a-fA-F]{3,6}",
"replace": "background: #1c2833"},
# ③ 整文件覆盖
{"platform": "web-mobile", "file": "index.html",
"kind": "copy_from", "source": "custom/index.html"},
])
安全阀:regex 编译预检 + 路径注入防御(拒绝 .. / 绝对路径)+ drift 保护(正则不匹配报错而非静默跳过)+ dry_run=True 预检。
| 旋钮 | 默认 | 效果 |
|---|---|---|
cocos_batch_scene_ops |
— | 一次 read/write 跑多个 op;200 工具调用 4293ms → 33ms(130x) |
| 场景读缓存 | on | 按绝对路径 + st_mtime_ns LRU(8) 缓存;外部写盘自动失效 |
| Creator 安装缓存 | on | list_creator_installs 走 functools.lru_cache,session 内不重复扫 |
COCOS_CREATOR_PATH |
— | 指定 Creator 版本目录,优先级最高(CI / Docker) |
COCOS_CREATOR_EXTRA_ROOTS |
— | 追加扫描路径(POSIX : / Windows ; 分隔) |
COCOS_MCP_SCENE_COMPACT=1 |
off | scene 写盘 compact JSON(500 对象 -41% 大小) |
| Pillow lazy-import | — | 不触发图片操作的工具不需要 Pillow |
cocos_build 失败返回 {error_code, hint},9 种类型(BUILD_TYPESCRIPT_ERROR / BUILD_MISSING_MODULE / BUILD_ASSET_NOT_FOUND / BUILD_TIMEOUT / ...)BuildResult 带 ts_errors: [{file, line, col, code, message}],AI 直接 Read+Editaudit_scene_modules 扫组件 vs engine.json,返回可复制的 cocos_set_engine_module 命令链COMPONENT_REQUIRES_MODULE(30+ 条)add_script 接受 23 / 36 字符 UUID,re-add 保持 UUID 不变BuildResult / ValidationResult / BatchOpsResult 8 个 TypedDict,改字段忘同步自动失败默认扫描 /Applications/Cocos/Creator (macOS) 或 %LOCALAPPDATA%\Programs\CocosDashboard\resources\.editors (Windows)。如果路径非标:
export COCOS_CREATOR_PATH=/custom/path/to/CocosCreator.app
# 或追加扫描目录
export COCOS_CREATOR_EXTRA_ROOTS=/opt/cocos:/shared/editors
首次构建 Creator 要 import 所有资源,可能超过默认 5 分钟。显式传 timeout:
cocos_build(project, timeout_sec=900)
多半是组件需要的引擎模块没启用。跑:
cocos_audit_scene_modules(scene_path)
# → { ok: false, disabled: ["physics-2d"], actions: [...] }
把 actions 里的命令复制粘贴跑一遍即可。
Creator 每次重写 project.config.json。用构建后补丁:
cocos_register_post_build_patch(project, patches=[
{"platform": "wechatgame", "file": "project.config.json",
"kind": "json_set", "path": "appid", "value": "wx000000000000demo"},
])
跟着 git 走,换机器 / 队友不会丢。
mypy cocos/ 0 errorsruff check 0 errorssys.executable / socket / tempfile.gettempdir()generate_asset 默认走 CogView-3-Flash 国内免费 API;可切 Pollinations 或本地模型cocos-mcp/
├── server.py # MCP 入口(60 行 FastMCP + tools.register_all)
├── run.sh / run.bat
├── cocos/
│ ├── tools/ # MCP 工具薄包装,10 模块
│ ├── scene_builder/ # 场景 JSON 构造(physics / ui / ui_patterns / prefab ...)
│ ├── project/ # 资源导入 / UI token / 构建后补丁
│ ├── scaffolds/ # 9 个游戏逻辑 .ts 模板
│ ├── build.py # CLI 构建 + 跨平台预览
│ ├── interact.py # Playwright 闭环反馈
│ ├── gen_asset.py # AI 生图(CogView / Pollinations + 缓存)
│ ├── errors.py / types.py / uuid_util.py / meta_util.py
├── examples/ # 3 个一键 demo
├── tests/ # 741 pytest
└── .github/workflows/test.yml
Proprietary · All Rights Reserved · Copyright © heitugongzuoshi
未经书面授权,不得复制、修改、分发、二次发布或将本项目用于任何商业用途。 仅授权给已被邀请的协作者用于内部评估、试用与开发。
旧版本(≤v1.1.0)以 MIT 协议发布,相关分发已停止。本仓库当前版本(1.2-dev)起转为闭源。
服务内容:
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"cocos-mcp": {
"command": "npx",
"args": []
}
}
}