← 返回博客
Apr 21, 2026指南作者 Funplay AI

Funplay Godot MCP 的 execute_code 工具深度讲解与使用场景

Funplay Godot MCP 把 execute_code 当作 105 个工具里的"主入口"——当一段 GDScript 能一次性把事做完时,AI 助手不需要串联多个窄口径工具。它是 Godot 4.2+ 编辑器扩展里的通用逃生门,覆盖编辑器时态和运行时态两种执行上下文。

工具定位

Funplay MCP for Godot 当前版本 0.4.0,是该四仓库家族中的旗舰(工具数量最多)。工具被拆成 corefull 两档,默认 core 只暴露高信号子集。服务绑定在本地 http://127.0.0.1:8765/,若被占用会自动回退到下一个可用端口,并把值写入 user://funplay_mcp_settings.cfg

execute_code 的独特之处在于它和 Godot 的语言策略耦合:在 GDScript 项目里它运行 GDScript,在 Godot .NET(C#)项目里暴露 .NET 相关工具,混合项目两边都给。语言感知是 0.4.0 明确新增的——同一段提示在不同语言项目里会得到正确的脚本语境。

什么场景用它

  • 场景结构化操作:一句话搭建 HUD——create_ui_root + create_control + create_label 是狭义工具,但当需要根据条件分支批量创建 Control 树、统一应用 theme override、再连接一堆 signal 时,execute_code 里一段 GDScript 循环更直接。
  • 运行时断言:0.4.0 新增的 assert_node_existsassert_node_propertyassert_signal_connected 是断言型窄工具,但组合成"进入 Play → 发多个 simulate_action → 读 get_console_logs → 一次性判断一组条件"时,execute_code 里用 await + get_tree().create_timer() 写更干净。
  • 项目初始化ProjectSettings / InputMap / autoload 管理在 0.4.0 加入了底层工具,但批量填写 10 个 input action、配合 key 绑定和 rumble 阈值,写成一段脚本比串联 20 次调用更可维护。

一段示例

# 批量注册平台跳跃游戏的输入动作
var actions := {
    "move_left":  KEY_A,
    "move_right": KEY_D,
    "jump":       KEY_SPACE,
    "attack":     KEY_J,
}
for name in actions:
    InputMap.add_action(name)
    var ev := InputEventKey.new()
    ev.keycode = actions[name]
    InputMap.action_add_event(name, ev)

这段在 execute_code 里一次跑完,等价于调用 8 次狭义工具。

什么时候不该用

execute_code 是最大功率档。以下情况优先选窄工具:写单个节点属性(用 set_node_property)、查找节点(find_nodes)、创建 AnimationPlayer(create_animation_player)。窄工具返回结构化 payload,方便 AI 助手接续推理;execute_code 的返回是自由格式文本,需要额外解析。

另外它不是沙箱,一段错误代码可能让编辑器陷入不一致状态——重的操作建议先在分支场景里试一次。

安装与延伸

addons/funplay_mcp 目录拷进你的 Godot 项目 res://addons/ 下,启用插件后即获得编辑器 dock。项目主页 funplay-godot-mcp。兄弟仓库 funplay-unity-mcpfunplay-cocos-mcp 用相同设计哲学覆盖 Unity 与 Cocos。更多内容见 gamebooom.ai/zh/blog/

继续阅读

在你的项目里试试。四个仓库都在 github.com/FunplayAI——挑你在用的引擎,看对应 README。
Funplay Godot MCP 的 execute_code 工具深度讲解与使用场景 | funplay mcp