编辑器插件
godot_mcp 编辑器插件把你正在运行的 Godot 编辑器连到服务器上。有了它,MCP 客户端可以读取编辑器持有的场景,并以普通、可撤销的编辑器操作修改它,同时服务器照常执行它的日志、策略和恢复规则。它需要 editor 或 full profile。
安装插件
| 工具 | 作用 |
|---|---|
editor.addon.status | 逐个文件比较 addons/godot_mcp/ 与内置插件,并说明安装、更新或移除会做什么 |
editor.addon.install | 写入插件及其归属清单,拒绝任何已被占用的路径;设置 enable 时还会启用插件 |
editor.addon.update | 替换你没有改过的文件,补上缺失的文件;你改过的文件会作为备份保留在新文件旁边 |
editor.addon.remove | 删除仍与安装时一致的文件并停用插件;你改过的文件会保留 |
编辑器在启用了插件的情况下启动时会加载它,或者在 项目设置 → 插件 里启用它时加载。
编辑器怎样连接
当项目在 editor 或 full 下被绑定时,服务器监听一个临时的回环端口,并在项目的 .godot-mcp/ 目录里写一个会合文件:端点、一个全新的 256 位密钥和项目的标识,只有你的用户能读。插件读取这个文件,连接端点,并证明自己读过这个文件;不带密钥的回环连接会被拒绝。一次只服务一个编辑器;服务器重启后,插件会自己找到它和它的新密钥。
editor.status.get 报告是否有编辑器连接、它的 Godot 和插件版本、打开的场景、正在编辑的场景、选择以及撤销历史。没有编辑器连接时,其他编辑器工具都答复 unavailable 并指明缺的是编辑器。
它能做什么
| 工具 | 作用 |
|---|---|
editor.scene.tree.get | 编辑器持有的当前场景,包括未保存的改动,附带语义摘要 |
editor.types.get | 这个确切 Godot 版本定义的某个引擎类,或按 class_name 指定的项目类 |
editor.scene.open | 打开一个场景并把它设为正在编辑的场景 |
editor.selection.set | 替换当前选择 |
editor.undo、editor.redo | 通过编辑器自己的撤销和重做,在当前场景的历史里撤销或重做 |
editor.addon.reload | 重新加载插件,编辑器随后重新连接 |
读取从不改变编辑器状态:不打开任何东西,不选择任何东西,不把任何东西标为未保存,也不往撤销历史里添加任何东西。
修改已打开的场景
scene.batch.apply 无论以哪种方式执行,接受的请求都一样。当场景在已连接的编辑器里打开时,这批改动会在编辑器里执行:编辑器里的副本必须与文件一致,每个操作都作用于编辑器持有的场景,成功后整批改动是一次撤销操作,场景随之保存。对编辑器占着的文件做无窗口写入会以 conflict 被拒绝,所以编辑器和服务器永远不会互相覆盖。
答复丢失时
每次编辑器改动的结果只有三种:committed、not_started 或 unresolved。unresolved 指请求已经到达编辑器却没有收到答复,这时答复是 uncertain,这次改动永远不会再发送一次,无论是重试还是编辑器重新连接之后。可能已经保存过文件的这类改动会阻止后续写入,直到它被解决(见恢复)。