使用说明
English | 中文
Cocos MCP Extension
讓 AI 助手(Claude Code、Cursor、Windsurf 等)透過標準 MCP(Model Context Protocol) 協議控制 Cocos Creator 編輯器。
- 基於官方
@modelcontextprotocol/sdk與官方編輯器 API(@cocos/creator-types)實作 - 支援 Cocos Creator 3.8.4 與 3.8.8,版本差異由內建 adapter 層自動吸收,工具行為一致
- 9 個工具、76 個 actions:場景、節點、組件、資源、prefab、場景視圖、編輯器操作
架構
MCP 客戶端(Claude Code / Cursor / Windsurf)
│ stdio(標準 MCP)
▼
Sidecar — MCP server(系統 Node ≥ 18,官方 SDK)
│ HTTP(127.0.0.1 + token,內部通道)
▼
編輯器擴展 Bridge(編輯器主進程)
│ Editor.Message.request(...)
▼
Cocos Creator 編輯器
採用 sidecar 分離式的原因:3.8.4 編輯器內建 Node 14.16,無法執行 MCP SDK(需 Node ≥ 18);sidecar 跑在系統 Node 上,使兩個編輯器版本的連接方式完全一致,協議層問題也不會影響編輯器進程。
安裝
- 將本目錄複製到 Cocos 專案的
extensions/下 - 在編輯器中啟用:擴展 → 擴展管理器 → 已安裝,啟用
cocos-mcp-extension - 系統需求:Node.js ≥ 18(sidecar 執行用;編輯器內部分無額外需求)
即開即用:
dist/(編輯器端)與dist-sidecar/(sidecar,已用 esbuild 連同@modelcontextprotocol/sdk打包成單一自帶相依檔)皆已預編譯入庫,複製進專案即可使用,不需npm install、也不需 build。安裝相依與編譯只在修改原始碼時需要(見最下方「開發」)。唯一仍需手動的,是把面板上那條「一鍵設定」指令在終端機執行一次。
連接 AI 客戶端
-
開啟編輯器,選單 擴展 → Cocos MCP 開啟面板,確認狀態為
● Running(預設自動啟動) -
複製面板上的 「一鍵設定」指令,在終端機執行一次:
- 使用
--scope user,所有專案通用、只需設定一次 - 指令不含任何固定路徑:執行時從客戶端的工作目錄「同層或向下」尋找帶有本擴展的 Cocos 專案,換電腦、換專案、交給其他人都是同一條指令
- 面板會依作業系統自動顯示對應版本:macOS(zsh/bash)腳本用雙引號、外層單引號包;Windows(PowerShell)腳本用單引號、外層雙引號包(PS 5.1 會吃掉傳給原生指令的內嵌雙引號,故 Windows 必須用此版)。直接複製面板上那條即可。舊式 cmd.exe 不支援,請用 PowerShell 或改用手動 JSON 設定(亦顯示於面板)
- 使用
-
在專案資料夾(或多專案的上層資料夾)開啟 Claude Code,
/mcp應顯示cocos已連線
多開支援:同時開多個編輯器與多個 AI 客戶端時,每個客戶端會連到自己工作目錄對應的專案;開在多專案上層時自動挑「編輯器正在運行」的專案(多個運行中取最新啟動者)。編輯器尚未開啟時工具會回報明確錯誤,開啟後自動恢復、無需重啟客戶端。
工具一覽
| 工具 | actions | 內容 |
|---|---|---|
project |
7 | 專案/編輯器/引擎資訊、專案設定與偏好設定讀寫、預覽伺服器資訊 |
scene |
9 | 場景開/存/關、dirty/ready/bounds 查詢、軟刷新 |
node |
14 | 節點樹查詢(深度控制)、建立(支援資源實例化+掛組件)、刪除、改名、變換(position/rotation/scale/active/layer)、換父層、複製、貼上、排序、任意屬性讀寫 |
component |
8 | 組件列表/可用類別查詢、增刪、屬性讀寫(支援資源引用/顏色/enum)、重置、方法執行 |
asset |
17 | 資源查詢/建立/匯入/覆寫/複製/移動/刪除、meta 讀寫、uuid/url/路徑轉換、依賴查詢 |
prefab |
3 | 實例化(官方 create-node + assetUuid 流程)、還原、實例查詢 |
scene_view |
10 | gizmo 工具/基準/座標系、2D/3D 切換、網格、icon gizmo、相機對焦/對齊 |
editor |
8 | 選取控制、面板開啟、Console 日誌查詢/清空、場景腳本執行、編輯器事件輪詢(實驗性) |
dev |
1 | 工具熱重載(開發用) |
所有工具都採用合併式設計:一個工具一個 action 參數,呼叫形如 { "action": "create", "name": "Enemy", ... }。
使用範例(對 AI 助手說)
- 「在場景裡建一個叫 Player 的節點,掛上 Sprite,位置 (100, 50)」
- 「列出場景樹,然後把所有名字含 Enemy 的節點搬到 EnemyRoot 底下」
- 「查一下這個材質被哪些資源引用」
- 「把 Label 的文字改成 Hello,顏色改紅色」
- 「讀取編輯器 console 裡最近的錯誤訊息」
開發
npm install # 安裝開發相依(typescript / esbuild / 型別定義)— 僅開發者需要
npm run build # 編譯:tsc 編輯器端 + esbuild 打包 sidecar(連同相依,產出自我完整單檔)
npm test # 自動化測試(不需開編輯器,49 項)
node test/verify-3b.mjs # 實機驗證:核心工具(需編輯器開啟)
node test/verify-3c.mjs # 實機驗證:周邊工具(需編輯器開啟)
-
產物入庫、即開即用:
dist/、dist-sidecar/已預編譯入庫,一般使用者免裝免編。npm install與npm run build只有改原始碼的開發者需要。build:sidecar用 esbuild 把 sidecar 連同@modelcontextprotocol/sdk打包成單一dist-sidecar/index.js(不依賴node_modules);build:editor用 tsc 編輯器端(零第三方相依)。改完原始碼記得重 build 並把產物一起 commit。 -
修改工具層代碼(
source/tools/、source/adapters.ts)後:build 完呼叫dev工具的reload_tools即可熱載入,不需重啟編輯器;修改main.ts/bridge//scene.ts才需要重啟 -
API 開發依據:docs/api-reference/(官方 3.8.4/3.8.8 完整 API 目錄、版本差異、實測陷阱)
-
測試指南:docs/testing.md
已知限制
scene.save_as/scene.close(未存檔時)會觸發編輯器原生對話框,自動化流程建議改用scene.save+asset.copyeditor.events_poll為實驗性功能(依賴編輯器內部 broadcast API)- 「節點 → prefab 資產」(create prefab)官方 3.8.4 無公開 API,暫未提供
asset.query_users/asset.query_dependencies在 3.8.4 屬 protected API(可用,但官方不保證穩定)- 專案設定/偏好設定讀寫只對「有註冊 profile 的套件」有效(如 project、engine、device)
版本相容
| 3.8.4 | 3.8.8 | |
|---|---|---|
| 編輯器內建 Node | 14.16(Electron 13) | 20.15(Electron 31) |
| 支援狀態 | ✅ 完整實機驗證 | ✅ 完整實機驗證 |
跨版差異(如 create-node 回傳型別、query-components 結構、protected message 遷移)全部集中在 source/adapters.ts 與版本能力表(project.info 可查看當前能力旗標)。