工具
AI 代理在 Godot 編輯器中使用的 Godot MCP 工具:以 RQL 查詢節點、場景與資源,處理 C# 與 GDScript 腳本、螢幕擷取與遊戲內工具。
Godot MCP 內建 9 個系列、共 24 項工具。多數編輯器工作都經由三個 RQL 工具完成,因此代理能用同一套查詢語言處理節點、場景、資源、檔案與編輯器狀態,而不必動用數十個各自獨立的工具。本頁說明每個系列及其適用時機。含有參數與範例提示詞的可搜尋清單請見 Godot tools catalog。
工具系列
| 系列 | 工具 | 用途 |
|---|---|---|
| rql | rql-query、rql-mutate、rql-schema | 讀取並變更執行中的編輯器:節點、Godot 屬性、場景、資源、檔案、專案設定、輸入對應、autoload、群組、訊號與編輯器狀態。 |
| script | script-read、script-create、script-update、script-delete、script-attach-to-node、script-validate、script-build、script-execute | C# 與 GDScript 檔案、附加腳本、驗證 GDScript、建置 C# 專案,以及在編輯器中執行 C#。 |
| screenshot | screenshot-viewport、screenshot-camera、screenshot-isolated | 編輯器視埠、攝影機,或單獨算繪的節點所產生的 PNG 影像。 |
| console | console-get-logs、console-clear-logs | 執行中遊戲的日誌。在編輯器中則使用 RQL 的 console 來源。 |
| reflection | reflection-method-find、reflection-method-call | 在執行中的遊戲裡尋找並呼叫 C# 方法。在編輯器中則使用 RQL 的 call。 |
| runtime-errors | runtime-errors-get、runtime-errors-clear | 執行中遊戲內部產生的錯誤。預設關閉。 |
| ping | ping | 就緒狀態探測。系統工具,不會顯示給代理。 |
| skills | godot-skill-create、godot-skill-generate | 撰寫新的工具檔案、重新產生 skill 檔案。系統工具。 |
| session | session-close | 儲存並結束由 godot-cli 啟動的編輯器。系統工具。 |
系統工具是透過伺服器的 /api/system-tools/ 路由存取(例如使用 godot-cli run-system-tool ping),不會列給 AI 代理。console、reflection 與 runtime-errors 系列則是服務你自己連線的執行中遊戲;請參閱 Custom tools。
RQL:編輯器的單一查詢語言
RQL(Reflection Query Language)是編輯器工具的資料層。查詢從一個來源開始,以 | 分隔的各個階段對其進行篩選與塑形,而在 rql-mutate 中則以 set 或 call 結尾。以下是代理可能送出的幾個範例:
nodes | where class == "OmniLight3D" | select name props["light_energy"]
nodes | where name starts-with "Enemy" | set Visible = false
root | call AddChild("Node3D", "Props")
project | call AddInputAction("jump", ["Key:Space"])
files | sort size desc | first 5 | select path size importedSize
editor | call SaveScene()rql-query為唯讀,會傳回精簡的資料列。rql-mutate會變更內容。每個目標與值都會先經過檢查,因此失敗的查詢不會造成任何變更。dry_run可預覽變更結果。每次呼叫都是一個復原步驟(在編輯器中按 Ctrl+Z)。rql-schema會列出編輯中場景的來源、函式與節點類別,或某一型別的成員、方法與 Godot 屬性。加上擴充功能名稱時,會印出該擴充功能的指南。
來源包括 nodes、root、selection、scenes、files、folders、classes、console、editor、project、settings、inputActions、autoloads、groups、layers 與 tools。Godot 屬性可用 C# 成員(Position、Visible)存取,或在 props["snake_name"] 中以 Godot 名稱存取,其中也包含 GDScript 變數。RQL 同樣能處理訊號、群組、TileSets、Themes、ShaderMaterial 參數與 MeshLibraries。
編輯器呼叫涵蓋場景與檔案相關工作:NewScene、OpenScene、SaveScene、SaveAllScenes、ReloadScene、CreateResource、MoveResource、DeleteResource、CreateFolder、DeleteFolder、Reimport、Undo、Redo、PlayScene 與 StopScene。gameLog 來源可讀取從編輯器啟動的遊戲所輸出的內容。
場景編輯會把場景標記為未儲存,就像你自己動手編輯一樣。被編輯的資源檔案與 project.godot 會立即儲存。
腳本:C# 與 GDScript
script-read、script-create、script-update、script-delete可處理.cs與.gd檔案。script-attach-to-node會將腳本附加到節點上。script-validate會傳回 GDScript 檔案的剖析與編譯診斷資訊;若未提供路徑,則檢查res://下的所有.gd檔案。script-build會執行dotnet build(Debug),讓新的 C# 腳本得以載入。接著 Godot 會重新載入 C# 組件,外掛也會重新連線,而建置結果(警告或錯誤)會在重新載入後送達。script-execute會使用 Roslyn 在編輯器中編譯並執行 C#。撰寫單純的陳述式;最後一個運算式就是結果。它會傳回該值以及程式碼所印出的內容。程式碼片段預設會在 30 秒後逾時(最多 4 分鐘),而無窮迴圈會傳回逾時錯誤,不會讓編輯器凍結。
你也可以從終端機呼叫 script-execute:
godot-cli exec 'EditorInterface.Singleton.GetEditedSceneRoot()?.Name' --path ./MyGodotProject螢幕截圖
螢幕截圖工具會傳回模型可以檢視的 PNG 影像:screenshot-viewport 會擷取編輯器視埠,screenshot-camera 會從攝影機節點算圖,而 screenshot-isolated 會從選定的角度單獨算繪一個節點。在進行視覺變更後要求截圖,讓代理程式能檢查自己的成果。
遊戲內工具
console-*、reflection-* 和 runtime-errors-* 是在你的遊戲內執行,而不是在編輯器中。除非你的程式碼選擇加入並建立連線,否則遊戲不會公開任何內容;runtime-errors-get 還需要 WithRuntimeErrorCapture()。它會擷取 GDScript 執行階段錯誤、push_error 和 push_warning、著色器錯誤(Godot 4.5 及更新版本)以及未處理的 C# 例外狀況,讓代理程式能執行遊戲並查看實際損壞的地方。設定方式:自訂工具。
選擇代理程式能看到哪些工具
每個工具在 dock(MCP features, Tools, Open)以及 godot-cli configure 中都有一個 Visible 開關。隱藏工具會把它從代理程式的工具清單中移除,可節省 context,但不會封鎖它。請參閱設定。
更多工具
- 擴充功能 讓 RQL 認識 AnimationPlayer、CSG、GridMap、導覽、粒子、TileMapLayer,以及 Beehave、Dialogic、Phantom Camera 和 Terrain3D 外掛。
- 自訂工具 說明如何用 C# 撰寫你自己的工具。
- Godot 最佳實務 提供能妥善運用這些工具的提示詞模式。