Godot MCP Enhanced
Summary: The Godot MCP Enhanced server lets an AI client fully read, write, run, and verify Godot 4.x game projects through 46 tools (271 actions) spanning headless CLI, editor WebSocket, and live game bridge layers.
Runtime control — launch the editor, run/stop projects, capture debug output, run GUT tests, record/replay input, and check Godot version.
Screenshot & vision — capture game viewports, hand images to a vision model, and pixel-diff two PNGs or route images to Groq for text descriptions.
Project management — search/create projects, read configs, scaffold 2D/3D/VN templates, generate CI workflows, and install CLAUDE.md/AGENTS.md rules.
Scene editing — read/create/merge scenes, add/batch nodes, edit/remove nodes, instance scenes, and run TileSet/TileMap batch operations.
Scripting — read/write/edit GDScript, execute arbitrary GDScript in headless mode, generate GUT tests, and bulk project-wide search/replace.
Validation — run-and-verify with error analysis, compile-check scripts, validate project resources, verify Delivery gates, GDDs, and chain-of-verification.
Documentation lookup — query Godot ClassDB docs for classes, methods, inheritance, and search.
Audio, material & shader — play/stop/param audio, and read/write materials and shaders at runtime.
Game bridge — install a TCP bridge into the running game to query state, simulate input, write properties, call methods, freeze/step for deterministic playtests, and monitor signals/properties.
Workflows — run dev loops, snapshot scenes, batch-validate scripts, and save session state.
Animation & IK — control AnimationPlayer, AnimationTree state machines, and create/configure IK modifiers.
Particles, signals & physics — create particle systems, connect/emit signals, run raycasts, query physics bodies, and overlay collision shapes.
Profiling & UI — profile FPS/memory/frames, discover UI elements, click buttons, build layouts, manage themes.
QA automation — run structured test suites with async/nightly modes, diff regression reports, and cancel runs.
Static analysis — map project signals and assess change impact before editing.
Asset & translation utilities — manage Godot 4.4+ UIDs, read/write CSV/PO translations, generate GDExtension C++ scaffolds, and do procedural 3D asset creation.
Context & audit — fetch session panoramas, query tool docs, and read or roll back an operation audit log.
Safety — path whitelists, sandbox scanning, confirmation tokens, and a
confirm_and_executetool for gated operations.
Provides tools for executing Blender Python scripts in headless mode to create and export 3D assets (GLB) for use in Godot.
Provides tools for interacting with Godot Engine projects, including scene editing, script management, running and debugging games, physics queries, and asset management.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Godot MCP EnhancedFix the jump bug in my player script and verify by running the game."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Godot MCP Enhanced
免费 · 开源 · 安全 —— Godot MCP 赛道里少见提供 「系统化安全防护 + 三层架构 + 运行时控制」的开源方案。
给 AI(Claude Code、Cursor、CodeBuddy 等 MCP 客户端)一个能真正读、写、跑、验证 Godot 项目的 工具层:46 个 MCP 工具(merged,共 271 个 action;完整清单见 capability-matrix)覆盖场景/脚本/UI/动画/物理/粒子/导航/音频/测试/导出/3D 参数化资产(asset:11 shape + 路径阵列 + batch 原子 undo),三层架构 (headless + editor + game bridge)+ 路径白名单 / 注入防御 / sandbox 安全体系。 赛道竞品普遍押注「生成」(authoring),本项目押注「验证」(verification)——QA 编排、回归 diff、操作审计与确定性 playtest 共同构成 AI 游戏开发的持续验证管线(CI for AI-assisted game development)。
English · 工具描述为简体中文,服务中文 Godot 开发者社区;欢迎 i18n PR。
小白上手:不用打开 Godot 编辑器也能做游戏
不懂引擎、不想学编辑器?装好 Godot 后,把需求用一句话告诉 AI(「做一个 2048」「给我的角色加二段跳」),读、写、跑、验证全部由 AI 通过本工具完成,全程可以不打开 Godot 编辑器:
说需求 — AI
create_project建项目、quick_scene/write_script写场景与脚本;看效果 —
run_and_verify真跑一遍并做结构化错误分析,screenshot(actioncapture)截图给你看现在的样子;迭代 — AI
edit_script改完自动过validate_scripts逐脚本编译验证;你只管提意见;验收 —
qa用结构化测试套件起真游戏跑断言(playtest.seed锁随机,同输入可复现);verify_delivery交付门禁检查场景树完整性 + 脚本健康 + 性能;出错不慌 — editor 层操作全进 Godot 原生 undo 栈,AI 改错一步,打开编辑器一步 Ctrl+Z 即回。
连 Godot 都没装? 一条命令自动安装(官方 GitHub releases,SHA512 同源校验,零预装):
npx godot-mcp-enhanced install # 默认 latest stable;可加版本 tag 如 4.7.2-stable装到 ~/.godot-mcp/godot/<version>/ 并自动登记进搜索链与路径白名单;setup 在检测不到 Godot 时也会交互式引导安装。
直接生成一个能玩的游戏? 内置可玩模板(四件套:可玩 demo + GDD + qa 确定性套件 + CSV 调参表):
npx godot-mcp-enhanced init my-game --template=2048 # 或 snake(贪吃蛇)/ breakout(打砖块)
cd my-game
npx godot-mcp-enhanced qa run qa/2048.qa.md --project . # 真跑游戏跑确定性断言零外部资产(色块占位美术),零编辑器预打开即可运行;改玩法 = 编辑 tuning/*.csv → csv_to_resources 重导 .tres → 重启生效;design/gdd/ 内置 8 段游戏设计文档(过 validate_gdd 校验),AI 拿着它继续迭代。
一条命令把游玩过程录成 demo GIF(分享给朋友/发社区):
npx godot-mcp-enhanced gif . --seconds 8 --fps 4 # 默认方向键;breakout 加 --keys left,rightbridge 定频截图 + 按键时间线注入,零依赖自写 GIF89a 编码器(≤256 色精确直通/中位切分量化);产物默认落项目内 dist/demo.gif,项目外路径需 y/N 确认。
导出成网页,浏览器直接玩(分享链接前先本地试玩):
npx godot-mcp-enhanced web . # 自动装 export templates(首次 ~1GB)→ 导出 → 起本地服务器headless --export-release 官方路径导出 + 127.0.0.1 防穿越静态服务器,打印 http://127.0.0.1:<port>/ 即可浏览器游玩;之后可用 web --serve-only <导出目录> 直接重玩。
已在用 Claude Code Game Studios 工作室模板?见 CCGS × 本项目集成指南——它管设计流程,本项目管真实运行验证。
不知道从哪开始? 一条龙向导 skill(game-wizard):四档分诊(没想法/模糊/清晰/已有项目)→ 阶段机(环境→造→改玩法→qa 硬门→导出→分享),每个 gate 以 qa 退出码为准——「不问文档写了吗,问游戏跑通了吗」:
npx godot-mcp-enhanced skills install # 装入 game-wizard(及另外 6 个技能)后对 AI 说「帮我做一个能玩的游戏」路线图:一条龙六批(分发声量/install/模板/GIF/Web/向导)已全部落地;后续方向见 ROADMAP。
Related MCP server: Gear
与同类方案对比
本项目不追求"工具数量第一"。 赛道里,godot-mcp-pro 有 175 个工具但闭源收 $15; 免费的 Coding-Solo 仅 13 个。真正稀缺的不是工具数量,而是「免费 + 开源 + 系统化安全防护」——安全维度在赛道内几乎无人设防。 数据截至 2026-06-27(stars / 工具数 / 价格均可能变化,详见各项目仓库)。
维度 | 本项目 | godot-mcp-pro | GDAI MCP | Coding-Solo/godot-mcp | yanhuifair/Godot-MCP p4 |
价格 | 免费 | $15 买断 p1 | $19 买断 p2 | 免费 p3 | 免费 p4 |
开源 | ✅ MIT | ❌ server 预编译闭源 p1 | ❌ p2 | ✅ p3 | ✅ p4 |
工具数 | 46 (matrix) | 175 p1 | ~30 p1 | 13 p1 | 386 p4 |
安全特性 | ✅ 路径白名单 / 注入防御 / sandbox / 确认令牌 / 输出防伪 | — | — | — | 部分(TCP token) p4 |
架构 | 三层 headless + editor + bridge | 单 editor WS p1 | stdio p1 | headless CLI p1 | TS server + 编辑器插件 TCP p4 |
运行时控制(engine-level) | ✅ game bridge:读运行时状态 / 输入模拟 / 录制回放 / frame-verify | ❌ 仅文件·编辑器层 | ❌ | ❌ | ✅ 11 个 runtime 工具 p4 |
确定性 playtest(冻结/单帧/随机锁定) | ✅ freeze / step_until 条件步进 / | — | — | — | |
Godot 4.5–4.7 兼容矩阵 | ✅ | — | — | — | —(仅声明 4.x)p4 |
中文工具描述 | ✅ | — | — | ❌ | ❌ |
"—" 表示该项目公开 README 未披露相应能力,不代表必然缺失;欢迎 PR 修正。
不只是文件级 bridge,而是 engine-level 运行时控制。 赛道里多数方案(含闭源商业 SaaS)只能让 AI 读写项目文件,看不到、控不了一个正在运行的游戏。 本项目的 Game Bridge 通过 TCP 连接运行中的游戏:读运行时节点树与属性、GPU viewport 真实截图、属性采样、信号监听、输入模拟、录制回放,外加
frame-verify反作弊验证——让 AI 真正闭环「改 → 跑 → 验证」,而非停在改文件。
「确定性」分级:帧步进 ≠ 真确定性。 赛道里 "deterministic" 一词正被挪用(有项目把 freeze / 固定帧数 step 标注为 Deterministic,却无 RNG 锁定——同输入不同随机状态,结果仍不可复现)。确定性测试其实分三层:
级别
能力
含义
L1 帧步进
freeze / 固定帧 step / 截图
能「暂停下来逐帧看」
L2 输入时序
帧定时输入时间线(
send_input_sequence)锁定「玩家第 N 帧做了什么」
L3 真确定性
playtest.seedRNG 锁定 +fixed_delta物理步长锁定 +step_until条件步进 +snapshot/restore状态恢复同输入 + 同 seed ⇒ 跨 run 可复现
本项目三层齐备。截至 2026-08-20,已知竞品最高仅达 L1(freeze/固定帧 step,无 RNG 锁定)或 L2(帧定时输入,无暂停、无 seed)。「AI 测试 AI 写的游戏」要可复现,至少需要 L3。
从 Coding-Solo/godot-mcp 升级? 见 迁移指南 —— 核心能力零丢失,获得三层架构 / 安全 / 验证门禁 / 跨版本矩阵增强。
安全体系
截至 2026-06-27 调研,Godot MCP 赛道内少见提供系统化安全特性的方案。本项目内置多层防护, 适合对可信边界有要求的开发场景:
路径访问控制 —
ALLOWED_PROJECT_PATHS白名单(deny-by-default),防 junction / 符号链接绕过Godot 二进制白名单 —
GODOT_MCP_ALLOWED_GODOT_PATHS(分号分隔,realpath 归一)在godot --version签名校验之上加硬隔离,防 AI 可控的godot_path工具参数/项目 override/env 指向任意二进制被 spawn(任意代码执行)。空 env = back-compat 放行(本地信任场景,签名校验仍兜底);多用户/不可信环境显式列可信路径GDScript 注入防御 — 危险 API 模式扫描 + 字符串拼接绕过检测
危险操作确认令牌 — 删节点等操作需显式确认
输出标记防伪造 — 每次执行随机标记,防 GDScript 伪造 MCP 输出
本地运行 — 无远程暴露,无第三方数据上传(注:启动时 update-checker 会查 npm registry,详见下方「匿名遥测」段)
以上是防误操作层,不是不可绕过的安全边界。GDScript 拥有完整系统访问权限,
沙箱可被间接方式绕过(call() 动态分派、多步变量构造 API 名、字符串拼接构造 API 名(如 "cu"+"rl"、str("OS")+".execute()")等)。
需真正隔离:容器 / VM +
GODOT_MCP_ALLOW_UNSAFE=false关闭扫描:
GODOT_MCP_SANDBOX=disabled(仅开发)本工具仅限本地可信环境,不提供远程认证或加密
匿名遥测(默认关闭)
opt-in,默认零外传。仅当显式设 GODOT_MCP_TELEMETRY=true 时启用,且阶段 0 endpoint 默认空 = 不发任何数据出进程。
收集什么:tool 名 + success bool + duration_ms + 错误分类(经白名单脱敏,非原始文本)+ 加盐 sha256 项目 hash(不可逆推原路径)
绝不收集:源码 / 场景内容 / 文件路径 / 项目名 / editor 日志 / 邮箱 IP 账号
install UUID 存哪:
~/.godot-mcp/telemetry-uuid.txt(POSIX 0o600)CI 强制关闭:
CI=true时即使 opt-in 也忽略,防 CI 触发合成事件
⚠️ 诚实披露 update-checker 外传点:本仓库每次 MCP server 启动时,
src/core/update-checker.ts的fetch(REGISTRY_URL)会被动 fetchhttps://registry.npmjs.org/godot-mcp-enhanced/latest(24h 缓存)。此行为与遥测无关但涉及「数据离开本机」。v0.25.7 起支持GODOT_MCP_UPDATE_CHECK=false(或0/no/off,大小写不敏感)关闭启动外传;self_updatecheck action 经force:true短路此门控,且 risk='read' 不经确认令牌,AI 可自主调用触发外传(IP/UA 泄漏 npmjs.org)。严格零外传需防火墙或 readOnly 模式拒整工具。CLI 下载链(install/web的 GitHub releases 下载,用户主动触发)是另一独立出网点,详见docs/telemetry.md。代理环境变量(实测口径):Node 原生 fetch(undici)默认不读
HTTP_PROXY/HTTPS_PROXY/NO_PROXY环境变量(Node ≥24 可设NODE_USE_ENV_PROXY=1启用)。实测设必拒代理端口后 fetch registry.npmjs.org 仍直连 200。企业代理环境下更新检查实际直连(可能被防火墙静默拦截);NO_PROXY不是零外传的有效手段。详见docs/telemetry.md代理环境变量节。⚠️ 诚实披露 vision-router 外传点:
screenshotanalyze action 设vision_route=true+GODOT_MCP_VISION_KEY时,截图 base64+prompt 外传到https://api.groq.com(groq 视觉模型)。双重 opt-in 默认零外传(不传vision_route或不设 key → fallback 本地 detail 分层,零外传)。可设GODOT_MCP_VISION_BASE_URL指向自建/ollama/国内中转避免外传到 groq。详见docs/telemetry.md。
Blender 建模(execute_bpy)安全模型
execute_bpy 通过 headless blender --background 跑 AI 写的 bpy 片段。bpy 是全功能 Python,
无语言层沙箱,威胁面 = 宿主 RCE(读/删任意文件、执行任意命令、网络)——高于 execute_gdscript
的 GDScript 沙箱一个量级(GDScript 语言层有约束,逃逸才到宿主)。
诚实边界:
glb 导出落点硬约束:
export_path经resolveWithinRoot,仅约束 godot-mcp 注入的 export 行 filepath,不约束 bpy 代码内部的open()/os.remove()/os.system()。本地单用户信任模型 + 响应附
[SECURITY]warning。不做 bpy 语法沙箱(正则防不住动态构造 = 假绿),列 backlog。
对比 BlenderMCP:不是"我们防住了它们没防住的",而是"我们显式声明 fail-model + glb 落点硬约束 + 本地信任模型,BlenderMCP 既无约束也无声明"。
核心能力
三层架构 — 静态编辑 / 实时调试 / 运行时验证
不是单一连接,而是按场景分工的三层(自动检测,互不冲突):
层 | 连接方式 | 适用场景 |
Headless CLI | 独立 Godot 进程 | 文件读写、批量创建、一次性验证(默认) |
Editor WebSocket | 连接运行中的编辑器 | 实时操作当前场景、Undo、场景树同步 |
Game Bridge | TCP 连接运行中的游戏 | E2E 测试、运行时调试、输入模拟、状态验证 |
editor 层全部写操作注册进 Godot 原生 undo 栈(10 个生产命令文件、53 处 action 注册,递归含
commands/asset/ 子目录,核查命令 grep -rc "create_action" addons/godot_mcp_server/commands/ | grep -v ":0")——AI 改错任何一步,编辑器里一步 Ctrl+Z 即回;undo 覆盖面为同赛道最宽。
动态 GDScript 执行
execute_gdscript 让 AI 在 headless 模式执行任意 GDScript:代码片段模式(自动包装 extends SceneTree)、结构化输出(_mcp_output)、超时控制、Autoload 上下文(load_autoloads=true)、结构化错误(类型/文件/行号/修复建议)。
AI 开发闭环 — 不只是工具堆砌
read_scene / read_script → 理解结构 → write_script / edit_script
→ run_and_verify(错误分析)→ validate_scripts → verify_delivery(交付门禁)verify_delivery— 端到端交付门禁:场景树完整性 + 脚本健康 + 性能 + 自定义断言validate_scripts— 逐脚本执行 Godotload()编译验证(非项目级完整编译,后者用npm run check:gdscript),捕获 headless 遗漏的 Parse Errordev_loop— 执行 → 验证 → 截图一体化,支持 acceptance 验收标准
闭环示例:AI 用 read_scene 理解 → write_script 改 → run_and_verify(capture_tree=true) 跑+分析 → validate_project 查资源 → batch_add_nodes 批建 → import_resources 注册 → 有问题回到改脚本。
批量操作与资源管理
batch_add_nodes— 一次调用添加多个节点,只在最后做一次 pack+save,避免每个节点启停 headless Godotvalidate_project— 静态扫描缺失资源、无效preload()/load()路径、孤立.import文件import_resources— 扫描目录批量注册资源(图片/音频/字体/3D 模型),自动生成.import
结构化开发流程(带 checklist)
对标 agentic skills 方法论(如 obra/superpowers),本项目不止堆工具,还提供 AI 可遵循的结构化开发流程(setup_project_rules 生成到 .claude/rules/godot-mcp-workflow-*.md):
Bridge E2E 流程 — install → run(wait_for_bridge) → ping → 操作+wait → 截图/frame-verify 留证
改→跑→验证闭环 — read → edit → run_and_verify → validate_scripts → verify_delivery
安全编辑流 — search_and_replace 优先 / 改后 validate / 防覆盖 / 确认令牌
每个流程带 checklist + 常见偏离提示,让 AI 少踩坑、按纪律走。
工具一览
共 46 个 MCP 工具(merged tool definition,共 271 个 action),以下按 action 逐项展开全部操作;权威清单见 capability-matrix。
关于「工具数」:本项目用 merged tool 架构——每个顶层 MCP 工具(如
scene)聚合多个 action(如read_scene/add_node/save_scene)。顶层工具数:46(tools/list返回条目数,与 capability-matrix 一致);action 总数:271(matrix 的 risk 聚合 read 133+write 112+destructive 10+process 16)。对比竞品统一用「顶层工具数」口径。两个数字均由npm run build-matrix从代码自动生成,CI 漂移检测守护。
执行工具
工具 | 说明 |
| 启动 Godot 编辑器 GUI |
| 以调试模式运行项目(自动超时) |
| 停止运行中的项目,返回结构化输出 |
| 获取分类调试输出(错误/警告/打印) |
| 截图三件套: |
| 运行 GUT 单元测试并解析结果 |
| 获取 Godot 引擎版本 |
验证工具
工具 | 说明 |
| 一键 headless 运行并返回结构化错误/警告分析。支持 |
| 重新分析 Godot 输出文本,提供修复建议 |
| 对每个脚本执行 Godot |
动态执行工具
工具 | 说明 |
| 在 headless 模式下执行任意 GDScript 代码。支持代码片段模式(自动包装)和完整类模式。设置 |
| 加载场景并查询运行时节点树,返回解析后的实际属性值。 |
| 深度检查节点:所有属性、信号连接、子节点,支持递归深度控制。 |
项目工具
工具 | 说明 |
| 搜索目录中的 Godot 项目 |
| 项目元数据 + 文件统计 |
| 列出文件(支持扩展名/子目录过滤) |
| 解析 project.godot 为结构化 JSON |
| 创建完整 Godot 项目结构 |
| 一键配置项目规则(hooks + CLAUDE.md),建议首次使用时运行 |
| 检查缺失资源、无效脚本引用、孤立 .import 文件 |
| 扫描目录批量生成 .import 文件(图片/音频/字体/3D模型) |
场景工具
工具 | 说明 |
| 解析 .tscn 为节点树 JSON,含属性类型解析(ExtResource/Color/Vector2/Vector3/NodePath/数组/字典/数字/字符串) |
| 创建新场景 |
| 向场景添加节点 |
| 一次调用添加多个节点(比重复 |
| 保存场景更改 |
| 加载纹理到精灵节点 |
| 编辑节点属性(位置/缩放/旋转/自定义属性) |
| 从场景移除节点(需确认令牌) |
| 快速创建场景 + 可选脚本(一步到位) |
| 实例化 .tscn 场景到目标父节点 |
| 从场景树分离实例节点 |
| 比较两个 .tscn 场景文件差异 |
| .tscn 冲突解决(三方合并,ExtResource/SubResource ID 重映射) |
脚本工具
工具 | 说明 |
| 读取 .gd/.cs 文件(含元数据) |
| 写入/覆盖 .gd 文件 |
| 按行范围编辑 .gd 文件。支持 |
| 分析 .gd 文件并生成 GUT 测试脚本 |
| 创建 GUT 测试运行器场景 |
| 全项目批量搜索替换(CRLF 安全) |
运行时操作工具
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。如需持久化场景修改,请使用
add_node+save_scene。
工具 | 说明 |
| 连接两个节点的信号。仅影响当前执行上下文。 |
| 断开信号连接。仅影响当前执行上下文。 |
| 发射节点信号,参数仅支持基础类型(string/number/bool/null)。仅影响当前执行上下文。 |
| 列出节点上可用的信号。 |
| 执行 3D 射线检测,返回碰撞点、法线、碰撞体信息。 |
| 获取物理体的碰撞形状、AABB、碰撞层/掩码信息。 |
| 运行时创建 3D 节点(支持 16 种白名单类型)。headless 创建不持久化。 |
| 查询 3D 导航路径,支持指定 NavigationRegion3D 或自动回退。 |
音频播放控制工具(运行时)
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。
工具 | 说明 |
| 播放音频资源。支持 AudioStreamPlayer、AudioStreamPlayer2D、AudioStreamPlayer3D 三种节点类型。 |
| 停止指定音频播放器的播放。 |
| 设置音频参数:音量 dB、音调缩放、总线路由。 |
| 查询播放状态(播放中/暂停/停止)、当前播放位置、总线信息。 |
| 诊断物理体碰撞状态(含 ConcavePolygonShape3D 陷阱检测)。 |
| 空间区域查询:碰撞体距离排序,支持碰撞掩码过滤。 |
| 创建碰撞形状彩色线框叠加(StaticBody=蓝/CharacterBody=绿/RigidBody=红/Area=黄)。 |
TileMap 编辑工具(运行时)
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。如需持久化 TileMap 修改,请使用
execute_gdscript写入 .tscn 或在编辑器中操作。同时支持 TileMap(旧版)和 TileMapLayer(Godot 4.3+ 新版)两种节点类型。
工具 | 说明 |
| 读取 TileMap/TileMapLayer 的 cell 数据,返回指定区域内的 tile 坐标、source_id、atlas_coords、alternative_tile。 |
| 设置单个 tile 的源图集和坐标。 |
| 擦除单个 tile(设为空)。 |
| 批量填充矩形区域内的所有 tile。 |
| 清空 TileMap/TileMapLayer 的所有 tile。 |
| 复制指定区域为模板(内部缓存),用于后续粘贴。 |
| 将已复制的模板粘贴到目标位置。 |
| 设置 tile 的翻转/旋转变换(水平翻转、垂直翻转、Transpose)。 |
所有运行时工具支持可选 load_autoloads 参数(默认 true),可在完整 Autoload 上下文中执行。
API 文档工具
工具 | 说明 |
| 获取类的方法、属性、信号、常量 |
| 按名称/描述搜索类 |
| 查找方法详情(含继承链) |
| 获取完整继承链 |
材质与着色器工具(运行时)
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。
工具 | 说明 |
| 读取节点材质属性和 shader uniform 列表 |
| 设置材质参数、创建/附加/保存材质(.tres) |
| 读写着色器代码、加载 .gdshader、应用模板、编译诊断 |
Game Bridge 工具
工具 | 说明 |
| 安装 MCP Bridge autoload 到项目(TCP 服务端,NDJSON 协议,仅 127.0.0.1) |
| 卸载 MCP Bridge autoload |
| 查询运行中游戏状态(场景树/节点属性/性能/视口) |
| 向运行中游戏发送输入事件(键盘/鼠标/文本) |
| 在 timeout 窗口内轮询等待游戏状态条件(节点出现/属性值变化),支持 |
工作流工具
工具 | 说明 |
| 开发循环:执行 GDScript → 验证 → 捕获输出,支持 save_state 文件即记忆 |
| 场景树快照,用于前后对比检测变更 |
| 批量验证多个 GDScript 文件 |
动画工具(运行时)
工具 | 说明 |
| 查询、播放、编辑动画。支持 list_players、get_info、get_details、get_keyframes、play、stop、seek、create、delete、update_props、add/remove_track、add/remove/update_keyframe 等子操作 |
性能分析工具(运行时)
工具 | 说明 |
| 性能分析:快照(FPS/内存/绘制调用/物理统计)、采样分析、活跃进程检测、信号连接审计 |
3D 空间工具
工具 | 说明 |
| 获取 Node3D 空间信息:transform、AABB、bounds、区域查找 |
测试与导出工具
工具 | 说明 |
| 断言场景树状态:node_exists、property_equals、signal_connected、node_count |
| 压力测试:重复创建/销毁节点检测内存泄漏 |
| 列出项目导出预设 |
| 获取导出预设详情 |
| 执行导出构建 |
粒子系统工具(运行时)
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。
工具 | 说明 |
| 创建 GPU 粒子节点(GPUParticles2D / GPUParticles3D) |
| 设置发射参数:形状(point/sphere/box/ring)、半径、方向、扩散 |
| 设置处理参数:重力、速度、爆炸性、生命周期、阻尼 |
| 加载预设效果:fire / smoke / rain / snow / sparkle / explosion |
| 创建或重置 ParticleProcessMaterial |
导航工具(运行时)
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。
工具 | 说明 |
| 创建 NavigationRegion3D 并可选烘焙导航网格 |
| 烘焙导航网格(长时间操作) |
| 创建 NavigationAgent3D 并设置寻路参数 |
| 设置导航代理参数(10 个可配置字段:radius、height、max_speed 等) |
| 创建 NavigationLink3D 连接点(支持双向) |
AnimationTree 工具(运行时)
注意: 运行时操作仅在 headless 执行上下文中生效,不持久化到 .tscn 文件。
工具 | 说明 |
| 创建 AnimationTree 节点(支持 AnimationNodeStateMachine / BlendTree / BlendSpace2D) |
| 向状态机添加动画状态(AnimationNodeAnimation) |
| 在状态间添加转换(含交叉淡入淡出时间和条件) |
| 设置混合参数(float 用于 BlendTree,Vector2 用于 BlendSpace) |
| 切换到目标状态(通过 playback.travel) |
IK 框架工具(运行时)
工具 | 说明 |
| 创建 IK 修改器节点(TwoBoneIK3D / FABRIK3D / CCDIK3D / SplineIK3D / JacobianIK3D) |
| 读取 IK 修改器属性 |
| 设置 IK 参数(active、influence、bone_name、target、magnet) |
| 列出 Skeleton3D 骨骼 |
验证交付工具
工具 | 说明 |
| 端到端交付验证:场景树完整性 + 脚本健康 + 性能 + 自定义断言 + GDD 标准合规 |
游戏设计工具
工具 | 说明 |
| 验证游戏设计文档是否符合 8 章节标准(概述、玩家幻想、详细规则、公式、边界情况、依赖、调优旋钮、验收标准) |
| Chain-of-Verification 自我质疑引擎:对审查结论生成 5 个挑战性问题,防止盲点和过度自信 |
代码模板工具
工具 | 说明 |
| 列出可用代码模板(内置 + 用户自定义) |
| 应用代码模板到指定脚本(支持变量替换) |
UI 布局工具(运行时)
工具 | 说明 |
| 创建 UI Control 节点 |
| CSS Flexbox/Grid 翻译层,从声明式布局描述构建 Godot Container 树 |
| 设置 Control 节点布局属性(锚点/偏移/最小尺寸) |
| 查询 Control 节点布局信息 |
| 应用锚点预设(full_rect/center/top_wide 等 16 种) |
| 设置/创建/保存/加载 Theme |
| 向 Container 添加子 Control 节点 |
| 声明式绘图操作(rect/circle/line/arc/polygon/string) |
| 创建空 Theme 或从节点提取 Theme |
| 设置 Theme 属性(font/color/constant/stylebox) |
录制工具
工具 | 说明 |
| 开始录制输入事件(键盘/鼠标) |
| 停止录制并返回事件数据 |
| 保存录制到 JSON 文件 |
| 加载录制文件 |
| 回放录制的输入事件 |
编辑器同步工具
工具 | 说明 |
| 启动场景树实时监听(推送 node_added/node_removed 事件) |
| 停止场景树监听 |
资源管理工具(UID / 翻译)
工具 | 说明 |
| 扫描项目内全部资源文件的 UID 状态(Godot 4.4+ |
| 查询文件 UID(单个/批量, |
| 写 |
| 扫描文本资源中的 |
| 读 CSV(Godot 国际化表格)/ PO(gettext)翻译条目(语言 + 键值对,支持截断) |
| 写/创建 Godot 兼容 CSV 翻译表( |
| 把 |
⚠️ 运行时工具(物理 / 动画 / UI / 粒子 / TileMap / 材质等)仅在 headless 执行上下文生效, 不持久化到 .tscn;需持久化用
add_node+save_scene。
MCP 资源(Resources)
AI 客户端可通过 godot:// URI 方案发现和读取项目上下文,无需显式工具调用。
静态资源
URI | 说明 |
| 项目元数据 + 文件统计(JSON) |
| 原始 |
资源模板
URI 模式 | 说明 |
| 读取 |
| 读取 |
| 读取项目中任意文本文件 |
安全限制
路径必须在项目根目录下(禁止
../遍历).godot/、.import/、node_modules/目录被阻止.import、.uid、.godot文件扩展名被阻止
使用示例
Client: ListResources → 发现所有场景和脚本
Client: ReadResource("godot://project/info") → 项目配置 + 统计
Client: ReadResource("godot://scene/scenes/main.tscn") → 节点树摘要
Client: ReadResource("godot://script/scripts/player.gd") → GDScript 源码快速开始
1 分钟配置(推荐)
Claude Code — 全局安装(所有 Godot 项目自动可用)
claude mcp add -s user godot -- npx -y godot-mcp-enhanced为什么用
-s user? Godot MCP 是个人开发工具,你会在多个 Godot 项目中使用它。-s user(user scope)将配置写入~/.claude.json顶层,所有项目自动连接,无需每个项目重复安装。详见 Claude Code MCP 文档。
如果你只想在当前项目使用(不推荐,切项目会丢失):
claude mcp add godot -- npx -y godot-mcp-enhanced # local scope,仅当前项目Cursor / Cline / Windsurf / 其他
在项目的 .cursor/mcp.json 或 MCP 配置中添加:
{
"mcpServers": {
"godot": {
"command": "npx",
"args": ["-y", "godot-mcp-enhanced"]
}
}
}腾讯 CodeBuddy(国内用户)
CodeBuddy 文档(2026-06-27 实测)支持外部 stdio MCP Server:设置 → MCP 标签 → Add MCP,粘贴与上面相同的 json。也可从其 MCP Market 一键安装(上架后)。
✅ 端到端已验证(2026-07-01):CodeBuddy IDE 内
read_scene读main_3d.tscn成功(返回完整场景结构),stdio MCP 接入跑通。解锁 MCP Market 上架(#10)。
Warp
Warp 终端 原生支持 MCP。Settings → Agents → MCP servers → + Add → CLI Server,粘贴与上面相同的 json(command: npx、args: ["-y", "godot-mcp-enhanced"]);也可写入 ~/.warp/.mcp.json,或开启「Auto-spawn servers from third-party agents」直接复用上面的 Claude Code 配置(零额外配置)。
✅ 协议层实测通过(46 工具全发现、inputSchema 完整、无 integer 参数兼容风险);⚠️ Warp GUI 端到端待补(本机未装 Warp)。完整步骤、兼容性核对表、env /
working_directory说明见 使用指南-Warp。
ZCode(智谱 GLM-5.2 ADE)
ZCode 原生支持 MCP。设置 → MCP 服务器 → 新建(stdio,command: npx、args: ["-y", "godot-mcp-enhanced"]),或写入 <项目根>/.zcode/config.json / .agents/mcp.json。关键:ZCode 不读 CLAUDE.md,只读 workspace 根 AGENTS.md——运行 setup_project_rules(默认双写)生成 AGENTS.md 让 godot 规则生效。
完整步骤、三种配置方式、env / 权限矩阵 / AGENTS.md 注入说明见 使用指南-ZCode。
一键配置
npx godot-mcp-enhanced setup
# 自动检测:Godot 路径 + AI 客户端 + 写入配置
npx godot-mcp-enhanced configure warp
# 定向配置单个客户端(--list 列出全部 14 个,--force 越过未检测闸)
npx godot-mcp-enhanced skills install
# 打包的 6 个 Claude Code skills(路由器/安全编辑/验证闭环/bridge E2E/截图留证/Tween 审计)
# 一条命令装入 ~/.claude/skills/(--target <目录> 装项目级,--force 覆盖),
# 指导 AI 更好地调用 godot-mcp 工具——安装摩擦低于手工 MCP 配置,配合 configure 使用首次使用
连接 Godot 项目后,建议立即运行以下工具一键配置项目规则:
setup_project_rules(project_path="你的项目路径")这会自动生成:
.claude/settings.json:PostToolUse hook,每次编辑.gd文件后自动提醒 AI 运行validate_scripts验证语法CLAUDE.md:项目级规则,包含 GDScript 验证规则和发版门禁(verify_delivery检查)
如果已有配置想更新,使用 force=true 覆盖。如只需其中一项,用 hooks=false 或 claude_md=false 跳过。
环境变量
变量 | 说明 | 默认值 |
| Godot 可执行文件路径 | 自动搜索(PATH/注册表/Scoop/Downloads) |
| 默认项目路径 | 自动检测 cwd(向上搜索 project.godot) |
| 额外 Godot 搜索目录(分号分隔) | 无 |
| Godot 二进制路径白名单(分号分隔,realpath 归一)。空=回落 | 空(回落 config) |
| game bridge 起始监听端口(被占自动递增避让至 +9;多实例并存安全,实际端口写入实例 registry,ping 响应带 pid/project 指纹) |
|
|
|
|
| 启用详细日志 |
|
| game bridge 起始监听端口(被占自动递增避让至 +9;多实例并存安全,实际端口写入实例 registry,ping 响应带 pid/project 指纹) |
|
|
|
|
| 匿名遥测 opt-in(默认关闭,详见 docs/telemetry.md) |
|
| CLI | 未设(latest) |
| 工具 profile(basic/lite/minimal/full/bridge_dev/3d_dev 或逗号组名)。默认 basic(BREAKING from full;lite 9 组省 ~60% context,RCE action 经 action-gate 默认 gated)。回退全量: |
|
⚠️ BREAKING(G7):默认 profile 从
full改basic(对齐 GoPeak compact,省 AI context window)。升级后 tools/list 只暴露 basic(lite 9 组:core/bridge/animation/audio/signal/visual/code/test/profiler)。回退全量 46 工具:GODOT_MCP_PROFILE=full;或 AI 运行时manage_tools activate <groups>动态扩容(无需重启)。RCE action(execute_gdscript 等)始终经 action-gate gated,需GODOT_MCP_PRIVILEGED_GROUPS=code-execution解锁。
注意: 项目路径有 30 秒缓存。切换项目后等待 30 秒或重启 MCP server 使新路径生效。
多版本 Godot 支持
如果你使用 godots 等版本管理器管理多个 Godot 版本,可以为每个项目单独指定 Godot 二进制路径。
优先级:工具参数 godot_path > 项目配置 > GODOT_PATH 环境变量 > PATH > 平台搜索
方式一:项目配置文件(推荐)
在项目目录下创建 .godot/mcp-godot.json:
{
"version": 1,
"godot_path": "/path/to/Godot_v4.6.3-stable_macos.arm64"
}方式二:project.godot 配置段
在 project.godot 末尾添加:
[godot_mcp]
godot_path=/path/to/Godot_v4.6.3-stable_macos.arm64方式三:工具参数
在 MCP 工具调用时传入 godot_path 参数(如 run_project、execute_gdscript 等 10 个核心工具均支持)。
方式四:godots 版本管理器自动检测
在项目根目录创建 .godot-version 文件(内容为版本号,如 4.6.3),MCP server 会自动在 ~/.godots/versions/ 中查找对应版本。
手动配置(高级用户)
git clone https://github.com/wgt19861219/godot-mcp-enhanced.git
cd godot-mcp-enhanced
npm install && npm run build在 MCP 配置中指向 build/index.js,并设置所需环境变量。
致谢
godot-mcp — 原始项目,本项目基于其二次开发(Copyright (c) 2025 Solomon Elias,MIT,见 LICENSE)
Hastur Operation Plugin — 动态 GDScript 执行和结构化输出的灵感来源
Claude Code Game Studios — 借鉴了以下功能概念(在用 CCGS?见 集成指南):
Hooks + Rules 体系 →
setup_project_rules自动生成.claude/settings.json(PostToolUse hook 自动验证 GDScript)和CLAUDE.md(项目编码标准)Gate-check / verify →
verify_delivery端到端交付验证(场景树完整性 + 脚本健康 + 性能 + 自定义断言 + GDD 合规)Workflow pipeline →
dev_loop执行→验证→截图一体化工作流,支持acceptance验收标准和save_state会话记忆GDScript Lint →
validate_scripts内置的静态 lint 层(L015 行级扫描 + 字符串/注释过滤,独立于 load() 编译检查),对标 CCGS 的validate-commit.shGDD 标准 →
validate_gdd8 章节游戏设计文档结构校验,对标 CCGS 的design/gdd路径规则Chain-of-Verification →
chain_verify自我质疑引擎,防止审查盲点代码模板 →
list_templates/apply_template模板系统,对标 CCGS 的 41 个文档模板
系统要求
Godot Engine 4.x(已测试 4.7;4.6/4.5 向后兼容)
Node.js >= 18
GUT 插件(用于
run_tests工具)
screenshot(action capture)根据平台使用不同的渲染策略:
平台 | 模式 | 说明 |
Windows | 窗口模式(默认) | Headless 模式下 viewport 纹理返回 null,必须使用 GPU 上下文 |
Linux | Headless → 窗口模式降级 | Headless + OpenGL3 取决于 GPU 驱动是否支持 |
macOS | Headless → 窗口模式降级 | 与 Linux 相同 |
内置 screenshot_capture.gd 使用 process_frame 信号模式和 call_deferred() 确保场景加载和帧捕获的可靠性。
测试提示: 仓库的 E2E 测试(
test/e2e-*.test.ts)依赖真实 Godot 二进制。设置GODOT_PATH指向本地 Godot 以运行它们;未设置时这些测试被静默跳过(控制台打印[E2E-SKIP]告警),CI 默认不验证真实 Godot 集成——npm test的"全部通过"仅覆盖 TS/GDScript 逻辑,不含真实 Godot 子进程行为。
许可证
MIT — 含上游 Coding-Solo/godot-mcp 版权(Copyright (c) 2025 Solomon Elias)。
路线图
项目方向与里程碑(M1 定位与声量 / M2 健壮性 P0 / M3 安全 P1 / M4 功能补齐 P2)见 ROADMAP.md。
更新日志
完整变更记录见 CHANGELOG.md。
版本 | 日期 | 要点 |
v0.33.1 | 2026-09-13 | 竞品启发加固批(2026-09-01 完成延迟合并):①monitor 输出可解释性(对标 satelliteoflove)——properties 返回过滤后实际监控列表+ |
v0.33.0 | 2026-09-13 | 全仓功能审查修复批(patch→minor 口径归位):4 分域审查代理+主审横扫 46 工具/271 action(报告 |
v0.32.21 | 2026-09-12 | P10 批(多人状态同步):game 工具新增 sync_state(masteryee 移植裁剪)——快照/比对两段式:GD 侧 collect_state 收集 |
v0.32.20 | 2026-09-12 | P9 批(DAP 断点调试):新增第 46 个顶层工具 dap——MCP server 作为 DAP client 直连 Godot editor 自带 DAP server(默认 127.0.0.1:6006,引擎官方调试协议),18 action 全会话流(initialize→launch→set_breakpoint→configuration_done→断点命中后 stack_trace/step_over/continue/pause→disconnect);TS 侧 node:net 直连(无 GD 改动,LuoxuanLove 791 行 GD 移植的架构偏离:frame 编解码缩到 ~40 行);三段状态机+断点簿记全量重发(512×256 上限)+SENSITIVE_KEYS 双层清洗(防调试输出泄漏 secret)+loopback 强制;SSOT 审计器首战抓出 3 个未声明键(防线自证);已知边界:只 GDScript/attach 有限/e2e 用 mock DAP server(真 editor 手动路径文档化)。46 工具/270 action。 |
v0.32.19 | 2026-09-12 | P8 批(热加载状态机/参数 SSOT 双防线):P8-1——mcp_commands 自定义命令热加载(LuoxuanLove 移植):运行中改/增/删 .gd 自动重载无需重启(mtime+300ms debounce),quiesce 语义(调用中不换实例),失败回滚旧版本继续服务(reload_failed+last_error),重名先注册者赢, |
v0.32.18 | 2026-09-11 | P6+P7 批(tokenizer 沙箱/语义观察层):P6——GDScript tokenizer 结构化扫描整文件移植(432 行,成员链合并/字符串归一化/首参三分类)+ scanGdscriptSandbox Phase 3 非字面量 load/preload 拦截(堵正则盲区)+ executeGdscriptRuntime 三通道分层(15 runtime 工具只跳 Phase 3 保留 Phase 1/2 防线;架构判断不移植 Erodenn 三级 tier——execute_gdscript 已 100% 确认令牌,Tier 2 重复建设且降级是安全回退)。P7——语义观察层(gua 移植,经独立审查 BLOCKING 清偿后全覆盖):观察通道 observation_profile 参数(debug 直通/player 投影;env 三态门禁:单值 player=host 强制档防 agent 自降级绕过,多值=请求级可选)+ 可见性级联(agent_exposure=private/visible_to_player=false 沿祖先链整藏子树,不可观察节点报 not found 存在性不泄露)+ 字段策略五模式(agent_field_rules meta:omit/redact/replace/quantize/keep,坏规则 fail-closed 降级 redact,运行中改 meta 即时生效)+ 审查 B-1 清偿四读出口全覆盖(get_tree 整枝剪除/wait exists 与 match 基于投影值/report 搭车与 conditions 同语义/call_method get 投影+结构枚举方法 -22+snapshot·restore -23 保真拒绝)+ near×投影联动(P5 钩子清偿:position 有规则的锚点 -11/候选排除,防距离差分反推)+ find_ui_elements 输出 role/label 语义字段(12 类控件适配表,全档位)。45 工具/252 action。 |
v0.32.17 | 2026-09-11 | P5 发现批(discover 评分/near 空间查询):manage_tools 新增 discover action(关键词在全量 45 工具×action 名×schema 属性描述上五维加权评分——工具名×5>action×4>组名×3>属性描述×2>顶层描述×1,返回匹配/所属组/激活态/激活指引;默认 basic 只 ships 25 工具,未激活组的能力可见性由此补全,token 经济学最后一块);find_nodes 新增 near_node+max_distance 近邻查询(gua 移植简化:锚点 Node2D/3D,同维度节点距离升序含 distance 字段,锚点排除,引擎侧计算)。45 工具/252 action。 |
v0.32.16 | 2026-09-11 | P4 效率批(描述瘦身/失焦降速/inflight 报丧):game 工具描述瘦身三巨点(schema 8198→5800B,总 -3.5KB,解释性文本删/结构形状保,被删细节承接进规则文档;尽调边界结论:scene/workflow 的 schema 膨胀是结构形状不可砍);editor 失焦降速对抗(beckett 轻量版,有 MCP 流量时 clamp 进程级 sleep 至 60fps,空闲 10s 恢复,不碰机器级 EditorSettings);inflight 孤儿记录(工具调用 per-pid 登记,进程被杀后下个 server 启动 stderr 报丧"死亡时仍在执行什么",BuildersGate 取消经济学);SLIM_CONFIG 口径勘误(阈值判断在变换前,slim 对 ui 实际生效);check:budget totalSum warn 90→95KB(瘦身后转绿,回弹即警)。45 工具/251 action。 |
v0.32.15 | 2026-09-11 | P3 能力扩展批(弱网注入/真点击验证/项目本地命令/profile 价格标签):network_conditioner 弱网注入(masteryee MultiplayerPeerExtension 装饰器移植,包装多人 peer 出向注入 latency/loss/jitter,多人联机测试独特能力);click_button real_event 真实输入事件路径(press/release 注入 viewport 走完整引擎管道,修复 emit_signal 不切 button_pressed 状态类 bug,响应带信号计数验证);custom_command 项目本地命令目录(游戏开发者丢 .gd 进 res://mcp_commands/ 即扩展 bridge 命令面,custom. 前缀 default deny,regiellis 模式);manage_tools list_groups 加 per-profile 实测 bytes 价格标签(beckett doctor 模式)。新增 fixture 1 组 + 测试 3 文件 27 用例(单元 14/真引擎探针 5/e2e 8)。45 工具/251 action。 |
v0.32.14 | 2026-09-11 | P2 批:函数级 profiling + report 搭车 + freeze 竞争 + 三加固项:函数级 profiling(Erodenn 整文件移植 1056 行,run_project(profiling) + capture_functions 一次调用,函数级热点+最慢帧 top30,真引擎 e2e 过);report 结构化搭车(step/step_until 响应自带终态读数省观察往返,{path,property} 结构化防 RCE);freeze 竞争上报(unfreeze 报 frozen_for_ms/contested_reasserts);.uid 清理+orphan autoload 前置自愈;CLI 退出码单一注册表+CI 静态扫描;drive-relative 路径形态显式拒(实测抓洞)。新增 3 文件 19 测试。45 工具/249 action。 |
v0.32.13 | 2026-09-11 | P1 安全批(输出侧防注入/自资产保护/心跳保活/声明制白名单):nonce 信封输出侧防注入(读回项目内容包随机 nonce 信封+scrub 防伪造,4 读通道 6 接点,六层防御后第一个管"出"的层);FileGuard 插件自资产写保护(拒写 addons/godot_mcp_server/** 与任意位置同名 mcp_bridge.gd,6 守卫点防自毁攻击);心跳保活(长工具每 20s progress 心跳防客户端 idle 杀的"白花钱取消",BuildersGate 取消经济学);GDA_CALLABLE per-node 声明白名单(call_method 第三授权通道,零执行静态枚举 default deny,BLOCKLIST 三通道硬底线,双副本同步触发 bump)。新增 4 文件 18 测试(含真跑 Godot 行为探针)。45 工具/248 action。 |
v0.32.12 | 2026-09-11 | P0 修复批(42 仓深挖尽调三坑,规则模板 bump):callv 参数预检(强转不可达组合——个数不足/超出、String→int 非数字、Dictionary→Object、typed Array——调用前显式拒绝 code -10,防 callv 静默失败返回 null 被误读为成功;严格转换表来自 aigengame 真引擎验证表);.pc 日志 rotate race 双 key 防护(7 fixture + create_project/init 模板关文件日志, |
v0.32.11 | 2026-08-21 | 反馈四坑收口 + 端口竞态缓解落地 + CI e2e 并行竞态修复:bridge 反馈三坑(find_nodes 消费 root 参数限子树搜索(无效 root 报结构化错)、install_override 插 [autoload] 段末尾(游戏单例之后 _ready 直达,免 await 兜底)、call_method 协程双模式(默认返 |
v0.32.10 | 2026-08-21 | 审查修复批三批合入(2026-08-20 六专项审查 17 条全处置,master plan 批 1/2/4;批 3 CLI 参数双形式已随 v0.32.9 七维度批等价合入,分支废弃):批 1 测试基建(弱断言门禁 860→732 恢复 128 预防,e2e workflow 全 skip 假绿 gate,mock 工厂 satisfies+typecheck:helpers CI 门禁);批 2 GD 对称性( |
v0.32.9 | 2026-08-21 | 架构审查修复批 + 七维度全面审核修复批(报告 |
v0.32.8 | 2026-08-20 | 确定性完全体批(护城河研究 H1+叙事正名):bridge 新增 |
v0.32.7 | 2026-08-20 | 分发优先批(竞品横扫行动,除 P0-1 网页提审全项): |
v0.32.6 | 2026-08-19 | tilemap 可选 scene_path(外部贡献 PR#36,thefireKS):tilemap 八个 action 新增可选 |
v0.32.5 | 2026-08-19 | 债务清理批收尾:screenshot_capture 空白检测采样退化修复(线性步进整除视口退化最左单列→10×10 网格分层采样,800×600 类视口不再误报 BLANK);gdEscape→escapeForGdLiteral 转义类闭类三批(纯字面量上下文含 % 路径/值不再被双写,唯一 % 格式串上下文维持 gdEscape);PR-4 终审 Minor 清账(M-1/M-2/M-5,M-4 executor timeout 30s 决策维持);README 口径三处修复+README.en 同款+check-tool-count 防复发(20→24 处);spec §10.5 两决策输入落答(flow FILL h=39 根因=float32 比例锚点残差+HBoxContainer FILL 子高度整数截断;flow 容差维持 2)。43 工具/241 action。 |
v0.32.4 | 2026-08-18 | 原型翻译层单 spawn 合成(PR-4):ui_import_prototype 内部链 build→persist→reload→measure 由两次 Godot spawn(~6s)合成单 spawn——reload 用 |
v0.32.3 | 2026-08-18 | 原型翻译层像素终验(ui_pixel_verify,PR-3):ui 工具新 action——对已构建场景( |
v0.32.1 | 2026-08-18 | 原型翻译层 verify 层(style_verify + flow_verify,PR-2): |
v0.32.0 | 2026-08-17 | 原型翻译层 StyleBox 通道(StyleBox PR-1,bg 为 BREAKING): |
v0.31.4 | 2026-08-17 | QA 断言四件套 + 应用级异步长跑(QA 深化 PR-1a/PR-1b):qa 套件 +4 控制步骤(watch/monitor start |
v0.31.3 | 2026-08-16 | QA 编排收尾 + 双副本 STRICT 门禁 + 原型小修批:B |
v0.31.2 | 2026-08-16 | final review 修复波:规则 4 透明壳收窄——只对推断布局壳 Panel 设 self_modulate,自带视觉控件(ProgressBar/Button/任何显式 type)豁免,修复 HP 条被误设透明壳而 diff 假绿(集成补 HpBar 落盘断言+负例验证);parent_path 根级参照系限制 schema 声明+非 root 时 build_warnings 提示;坏图可区分性实测证据(好图对 0.1762 vs 下半消失合成坏图 0.4797≈2.7 倍,双副本改基线口径);screenshot threshold 显式 null 落默认 0.12 + action 提示补 diff;ui.md 双副本历史 drift 顺带归零。 |
v0.31.1 | 2026-08-16 | 原型翻译层 + 视觉验收: |
v0.30.0 | 2026-08-15 | AI QA 编排 + 理解层 + 协议债(方向拍板 B/C/D,零 GDScript 改动纯 TS 批次):B |
v0.29.0 | 2026-08-15 | 2026-08-14 六批次审查 findings 全量修复(P0×1 + P1×10 + P2/P3,43 commits,双波终审):P0 editor 重连链死修复(编辑器重启后自动恢复)+ 安全面(write_script 沙箱 4 旁路入口封堵/deny-list 拼写/load_skill 白名单/nonce symlink)+ audit 工具复活(生产 bug,0.28.3 特性此前不可见)+ playtest 六项(永久暂停/owner 互斥/paused 保存等)+ 属性写入 no-op 假成功三路对齐 + bridge 订阅断线恢复 + ⚠️ autoload 键名迁移(Breaking,旧项目重跑 game_bridge_install 自动迁移)+ debug/undo GD 修复 + 测试债(debug e2e 首跑/GD 套件/dispatcher 审计 9 场景)+ 披露对齐。发版门禁全绿(verify_delivery 3/3 + e2e L2 真跑 75 passed)。 |
v0.28.3 | 2026-08-13 | 战略批收尾(14 竞品路线图 G1/G3/G7):G3 操作级审计日志(audit.jsonl appendFile 原子追加,危险操作可追溯/回放)+ G1 deterministic playtest control 层(freeze/unfreeze/step_until 结构化条件,规避 RCE)+ G7 能力 profile(basic=9 组/advanced/full,BREAKING:默认 profile 从 full 改 basic,schema 79KB→~30KB 省 ~60% context)。路线图全完成(G2/G3/G1/G7/G8 ✅,G6 实测已有移除)。 |
v0.28.2 | 2026-08-12 | 安全加固 + 威胁模型 + 可观测性 + 审查修复:G2 trace_id + 结构化错误分类 + PII 护栏(速赢批)+ S-1/S-2 bpy-sandbox 双 opt-in + spawn 清单 + S-3 |
v0.28.1 | 2026-08-11 | 安全加固批次 C + 测试质量:批次 C 安全加固(deny-list/symlink/path/debug.evaluate RCE 多点)+ instance_registry 目录权限 Linux 0o700(P2-4)+ 弱断言精确化与接线守护批次(P1-3~P1-5/P2-1/P2-2)+ MULTI_INSTANCE 接入 godot-matrix(P1-2)+ 全批次第三方审查文档。 |
v0.28.0 | 2026-08-09 | CMP-14 debug Phase 2/3 + 后续批次:debug 工具组从 3 action 扩到 10(完整交互式调试器:栈帧/变量/表达式求值/step 控制/继续/暂停/热重载)+ 新建 EditorDebuggerPlugin 子类(debugger_bridge)+ handle_debug_async 异步路由 + 自动打开脚本(修 Phase 1 限制)+ CMP-16-B advanced-proxy 真动态化 + CMP-16-C drift 映射表扩到全 64 method + CMP-9 confirm gate 守护测试。 |
v0.27.0 | 2026-08-08 | CMP-9 双通道通用方法调用 + CMP-16 live schema(竞品 regiellis/godot-mcp-go 深度对标):CMP-9-A editor |
v0.26.0 | 2026-08-08 | P1+P2 批次修复(18 项审查 finding 闭环):GD-R1 |
v0.25.11 | 2026-08-08 | 实时 ClassDB 内省:新增 |
v0.25.10 | 2026-08-08 | debug 组 Phase 1 断点管理:新增 |
v0.25.9 | 2026-08-08 | 竞品 godot-mcp-go 深度对标产出:CMP-1 editor 项目匹配检查(连接建立后校验 project_path,mismatch 拒绝降级,防跨项目误操作;覆盖首次连接 + rebuild + 自动重连三条路径 + junction realpath fallback)+ CMP-2 game bridge runtime error 捕获( |
v0.25.8 | 2026-08-07 | 5 批审查修复闭环:批次1 GDScript 假成功(save_scene/load_sprite/screenshot 失败补 quit(1) + _cmd_playtest_restore Resource 反向转换 + _cleanup_peer_state 漏清 snapshot)+ 批次2 TS 可靠性(resetBridgeState 清 push 子系统 + STARTUP_CLEANUP.finally + health-monitor degraded 不被心跳过早清除 + playtest owner_pid 多 peer)+ 批次3 安全纵深(FileAccess READ 非 Godot 协议拦 + 网络回连 API 进沙箱 + stripLiterals 扩 user://)+ 批次4 测试缺口(P3-6 socket 竞态并发测试 + C# 回滚测试 + 4 CI 守门脚本)+ 批次5 文档收尾(update-checker 门控语义健壮化 + 文档漂移修正)。4534 测试。 |
v0.25.7 | 2026-08-06 | P3 选做三批(审查 SHIPPED WITH NITS):P3-1/P3-2 版本同步收口(server.json/Dockerfile 纳入 version-sync,根治分发产物漂移)+ P3-7 C# 阶段一收尾(project_replace 白名单/read using/edit 验证回滚)+ P3-6 subscriptions/listen(bridge 事件主动推送,watch/monitor push 模式三层改造)+ P2 第三方审查 B-1/I-2/I-3 修复。4517 测试。 |
v0.25.6 | 2026-08-06 | P2 Wave2:P2-4 确定性 playtest 四原语(seed/fixed_delta/step/snapshot/restore)+ P2-5 SEP-2133 extensions 声明(runtime-bridge 发现性)。 |
v0.25.5 | 2026-08-06 | P2 Wave1:P2-1 overrides 注入 autoload(启动前注入调试脚本)+ P2-6 recipe 验证闭环 + P2-2 validate_scripts autoload 纠偏 + P2-3 nodeType RCE 审计白名单收尾。 |
v0.25.4 | 2026-08-05 | P0(6/6)+ P1(7/7)协议层升级:SDK v1→v2( |
v0.25.3 | 2026-08-01 | 全天审查收尾(SHIPPED):P2-12 二期 async 改造引入的 arena 前缀碰撞 BLOCKING 根治(方案 B |
v0.25.2 | 2026-08-01 | P2-12 McpTestSuite 移植(editor 路线,关闭 P1-5):AI 可写标准化 GDScript 测试套件( |
v0.25.1 | 2026-07-31 | 竞品对比批①-④ 落地(审查 SHIPPED WITH NITS):工具数口径修正(21 处漂移 28/29/33/130+→35/203,含 rule-templates 独立副本同步防下游污染)+ |
v0.25.0 | 2026-07-30 | A-RCE 安全批次(headless instantiate_class 白名单堵 |
v0.24.1 | 2026-07-27 | 文档同步修复: |
v0.24.0 | 2026-07-25 | self-update 机制(Godot AI 追赶 3/3:npm 启动检查 + self_update MCP 工具 addon 检查/更新)+ 5 批审查全闭环(A 安全 RCE class_path/路径穿越/symlink + B 可靠性降级链路/资源写原子化17处 + C 正确性协议契约/undo/参数校验 + D 工具治理 asset/android TOOL_GROUPS + E 测试缺口加固10/10)+ batch F 测试覆盖深度(6 task 假绿修复/纯函数单测/安全动态断言/防回归契约/skip 可见化)+ CI Godot 4.6.3/4.7.1 版本矩阵 + ZCode 深度支持/AGENTS.md + orphan 扫描会话隔离 + editor key 多实例误删修复 + take_screenshot null guard,4030 测试 |
v0.23.0 | 2026-07-13 | 安全 CRITICAL(零确认 RCE 复合链 |
v0.22.0 | 2026-07-08 | asset 工具集新工具(11 shape + 路径阵列 discrete/continuous + batch 原子 undo + save 预制件 + 10 材质预设;方案 A 阻塞 continuous ramp 待上游)+ capability-matrix 33 + LICENSE 致谢 AssetForge/Tripo3D |
v0.21.0 | 2026-07-06 | csv_to_resources 新工具(CSV→Godot 资源批量导入,双轨 TS+GDScript)+ ToolAnnotations hints(actionRisks 派生 readOnly/destructive)+ 多轮独立审查核实修复(RCE/ipc/data-import/综合审查 editor 路由 -32601 回退+guard 接线+heartbeat 暂停语义)+ editor 4.7 兼容(EditorInterface/super() 回归/Safe save)+ capability reviewer 设施 + e2e L2 opt-in |
v0.20.0 | 2026-06-30 | cpp GDExtension 脚手架(scaffold_gdextension 生成 8 文件 C++ 工程骨架)+ 全工具验证靶子(real-project 三层 L1/L2/L3 自动化,28 工具正路径)+ 工具行为修复(default-null 统一/run_project isError/timeout race)+ R3/安全审查修复 |
v0.19.1 | 2026-06-27 | 版本元数据同步(manifest/plugin.cfg/README/使用指南)— 功能无变化,补 v0.19.0 npm 元数据漂移 |
v0.19.0 | 2026-06-27 | R2 审查响应链 — editor 4 模块 undo_manager(nav/particle/animtree/ui Ctrl+Z 撤销) + super() IMP-4 + IMP-11 touch 双侧契约 + 安全同源 4 点(UI/audio/instance) + @748 detach 双 parent fix + 阶段1b 守卫,2894 测试 |
v0.18.2 | 2026-06-18 | 安全加固 — 沙箱绕过组 + 防御深度 + 注入收敛,2670 测试 |
v0.18.1 | 2026-06-14 | 功能验证审查 3 CRITICAL 修复 — parseTscn 属性/头部解析(read_scene 现正确返回结构化属性)+ game_wait 轮询等待(pollWaitCondition),2597 测试 |
v0.18.0 | 2026-06-10 | 工具合并(39→27 MCP 工具)+ LEGACY 兼容模式 + manage_tools 迁移 + notifyToolsChanged |
v0.17.1 | 2026-06-08 | 五维审查 P0+P1 全量修复 — tscn 死代码删除 527 行 + core/tools 解耦 + animation-ops +38 测试 + EditorExecutor +16 测试 + 安全加固,2252 测试 |
v0.17.0 | 2026-06-07 | 审查修复 9 项(4C+5I/A)— tscn 编辑正确性 + 确认令牌截断保护 + 字符串 UID + 安全加固,2023 测试 |
v0.16.0 | 2026-05-31 | 审查驱动质量提升 — ToolDispatcher 提取 + 87 次提交 + merge_scene + 项目脚手架 + 智能类型转换 + 1638 测试 |
v0.15.1 | 2026-05-27 | Godot 4.6 editor plugin 兼容性修复 |
v0.15.0 | 2026-05-27 | 6 代理并行审查(14 CRITICAL 修复)+ deny-by-default 安全 + Bridge 录制 + ESLint + 1509 测试 |
v0.14.0 | 2026-05-24 | 7 轴全维度审查(8 CRITICAL 修复)+ IK 框架 MVP + Vitest 迁移 1257 测试 |
v0.13.0 | 2026-05-23 | Bridge 安全加固 20 项 + requestId 取模 + CSS Grid + EditorConnection 重连上限 |
v0.12.0 | 2026-05-23 | 迭代 URL 解码防路径遍历 + verify_delivery 4 维度验证 + dev_loop acceptance |
v0.11.1 | 2026-05-22 | Bridge TCP 绑定 127.0.0.1 + 密钥文件读后即删 + opsErrorResult isError 修复 |
v0.11.0 | 2026-05-22 | CSS Flexbox 布局翻译层 + GDScript Lint 规则引擎 + 路径遍历防护增强 |
v0.10.1 | 2026-05-21 | Bridge TCP 绑定本地地址 + 密钥文件生命周期管理 + opsErrorResult 修复 |
v0.10.0 | 2026-05-19 | 场景实例化 + 编辑器实时同步 + 代码优化重构(124 工具) |
v0.9.0 | 2026-05-16 | 批量工具 + UI 工具 + 录制系统 + 确认令牌 + Read-Only/Lite 模式(118 工具) |
v0.8.0 | 2026-05-13 | 双模式架构 + 测试框架 + 粒子/导航/AnimationTree(96 工具) |
v0.7.0 | 2026-05-08 | 安全加固 + 输入转义 + 类型安全 + tscn-parser 修复 |
v0.6.0 | 2026-05-03 | 音频播放控制 4 工具 + TileMap 编辑 8 工具 |
v0.5.0 | 2026-05-02 | 信号控制 + 物理查询 + 3D 创建 + 导航寻路(8 工具) |
v0.4.0 | 2026-05-01 | 版本检测 + validate_scripts + search_and_replace + 截图稳定性 |
v0.3.0 | — | edit_script + batch_add_nodes + validate_project + import_resources |
v0.2.0 | — | read_scene + read/write_script + query_scene_tree + MCP Resources |
v0.1.0 | — | 项目管理 + 场景操作 + 执行控制 + 截图 + execute_gdscript |
https://github.com/youichi-uda/godot-mcp-pro README(含其自带竞品对比表),抓取 2026-06-27
↩GDAI MCP,数据转引自 godot-mcp-pro 对比表,2026-06-27
↩https://github.com/Coding-Solo/godot-mcp,抓取 2026-06-27
↩https://github.com/yanhuifair/Godot-MCP,抓取 2026-08-19(工具数 386 为
↩grep -c "registry.register(" src/tools/register.ts实测)该仓库 README 声称「freeze/step/screenshot No other public Godot MCP does this」——与事实不符:本项目的
↩playtest.freeze/step_until(结构化条件步进)与 satelliteoflove/godot-mcp(2025-12 起)的 deterministic playtesting 均早于该声明,供读者自行核对。
Available Tools
26 toolsanalysisARead-onlyIdempotent
理解层静态分析(零 Godot 依赖)。action=signal_map 列全项目信号连接(.tscn [connection] 声明 + .gd 代码 connect/emit 引用,两来源分开标注);action=impact_check 改动前影响面评估——改信号列出全部连接方/发射方/监听方,改脚本列出引用它的场景与节点,改场景列出其连接/脚本/被实例化处。盲区诚实标注:运行时动态信号名/autoload 间连接不可见。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 每列表截断上限(默认 200) | |
| scene | No | signal_map: 场景路径子串过滤(如 scenes/ui) | |
| action | Yes | signal_map=信号连接全景;impact_check=改动影响面 | |
| signal | No | 信号名过滤(signal_map 精确匹配;impact_check 必填三选一) | |
| scene_path | No | impact_check: 场景路径(res:// 或绝对) | |
| script_path | No | impact_check: 脚本路径(res:// 或绝对) | |
| project_path | Yes | 项目路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: it is static analysis with zero Godot dependency, it labels blind spots honestly (runtime dynamic signal names and autoload-to-autoload connections are invisible), and it indicates that declaration/emit sources are labeled separately. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: core positioning first, then the two action modes, then the honest blind-spot note. There is no filler, each sentence carries operational meaning, and the action-based structure makes it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-mode static analysis tool with seven parameters and no output schema, the description gives enough operational context: it defines each action, lists the relevant parameter dimensions, and describes what the results cover. The remaining gap is a lack of explicit description of output shape/truncation behavior at the semantic level, but the schema already documents limit/default, and the blind-spot statement prevents most false expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all parameters (100% coverage), so the bar is at baseline 3. The description adds value by connecting actions to parameter semantics and outputs: signal mode selects connectors/emitters/listeners; script mode references; scene mode connections/scripts/instantiation sites. This gives the agent real semantic grounding beyond the schema's individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states concrete verbs and resources: signal_map lists all project signal connections, impact_check evaluates the impact surface before a change. It enumerates exactly what is covered (.tscn [connection] declarations, .gd connect/emit references) and distinguishes the two modes, making it easy for an agent to tell this tool apart from generic 'analysis' and sibling signal/project/runtime tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for each action: signal_map for a full signal-connection panorama, impact_check for pre-change assessment, with three explicit scenarios (signal, script, scene). It does not explicitly name sibling tools to avoid, and it doesn't state when not to use this static analysis in favor of runtime or validation tools, so it falls just short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animationADestructive
查询、控制和编辑动画。查询: list_players, get_info, get_details, get_keyframes。播放: play, stop, seek, blend。编辑: create, delete, update_props, add_track, remove_track, add_keyframe, remove_keyframe, update_keyframe。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | 方法参数 | |
| step | No | 关键帧对齐步进值 | |
| time | No | 关键帧时间(秒) | |
| type | No | IK:IK 类型 | |
| limit | No | IK:最大返回数量 | |
| speed | No | 播放速度,默认 1.0(blend) | |
| value | No | 关键帧值 | |
| action | Yes | 操作类型 | |
| length | No | 动画长度(秒) | |
| parent | No | IK:父节点路径 | |
| update | No | 跳转后立即更新节点(seek) | |
| seconds | No | 跳转位置(秒)(seek) | |
| from_end | No | 从末尾开始播放(play) | |
| bone_name | No | IK:骨骼名 | |
| insert_at | No | 轨道插入位置,-1 为末尾(add_track) | |
| loop_mode | No | 循环模式 | |
| node_path | No | AnimationPlayer 节点路径(除 list_players 外必填) | |
| root_path | No | 搜索起始节点路径(list_players) | |
| blend_time | No | 混合过渡时间(秒)(blend) | |
| keep_state | No | 停止时保持状态(stop) | |
| properties | No | IK:属性键值对 | |
| track_path | No | 轨道路径,如 "Sprite2D:frame"(add_track) | |
| track_type | No | 轨道类型(add_track) | |
| transition | No | 过渡曲线,1.0=线性 | |
| method_name | No | 方法名(method 轨道) | |
| track_index | No | 轨道索引 | |
| custom_blend | No | 自定义混合时间,-1 为默认(play) | |
| custom_speed | No | 播放速度,默认 1.0(play) | |
| library_name | No | 动画库名称(create/delete) | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| animation_name | No | 动画名称 | |
| keyframe_index | No | 关键帧索引 | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) | |
| target_nodepath | No | IK:目标节点路径 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and readOnlyHint=false; the description adds important context that operations are runtime-only and non-persistent, and that persistence requires .tscn editing. It aligns with the annotations and also lists destructive actions like delete and remove.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with a clear categorization of actions in three short sentences. Every sentence serves a purpose, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 34 parameters and 21 actions, but no output schema. The description provides categories and runtime/persistence guidance, yet it omits the IK-related actions from the schema and does not explain return values or differences among query actions, leaving clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% parameter description coverage, so the baseline is 3. The description groups actions but adds no per-parameter semantics beyond what the schema already provides, so there is no need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as querying, controlling, and editing animations, and enumerates specific action names grouped by category. It is more specific than the bare name 'animation', though it does not explicitly differentiate from the sibling tool 'animation_track'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear breakdown of actions (query, playback, edit) and gives practical usage context: operations are runtime-only and affect only the current execution context, with persistence requiring .tscn editing. It does not explicitly mention alternative tools, but the persistence note serves as a meaningful exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animation_trackADestructive
动画轨道与关键帧操作。轨道: add_track, remove_track。关键帧: add_keyframe, remove_keyframe, update_keyframe。曲线: set_curve。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | 关键帧时间(秒)(add_keyframe 时必填) | |
| value | No | 关键帧值(add_keyframe/update_keyframe) | |
| action | Yes | 操作类型 | |
| in_handle | No | 入控制柄坐标(set_curve) | |
| insert_at | No | 轨道插入位置,-1 为末尾(add_track 时可选) | |
| node_path | No | AnimationPlayer 节点路径 | |
| out_handle | No | 出控制柄坐标(set_curve) | |
| track_path | No | 轨道路径,如 "Sprite2D:frame"(add_track 时可选) | |
| track_type | No | 轨道类型(add_track 时必填) | |
| transition | No | 过渡曲线,1.0=线性 | |
| track_index | No | 轨道索引 | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| animation_name | No | 动画名称 | |
| keyframe_index | No | 关键帧索引(remove_keyframe/update_keyframe/set_curve 时必填) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint and readOnlyHint=false, so the destructive nature is known. The description adds value by revealing that operations only affect the current execution context and are not persisted, which is beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, efficiently front-loaded with the main purpose, then categorically listing operations, and ending with a critical boundary note. Every sentence earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters and no output schema, the description gives a high-level map of operations and the essential runtime-vs-persistence distinction. It does not cover return values or error handling, but these are not required given the rich schema and annotations, so it's adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides comprehensive descriptions for all 15 parameters, including enums and conditional requirements. The description adds no extra param-level semantics, so it scores baseline 3 for a fully schema-covered tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool handles animation tracks and keyframes, enumerating all action categories (track, keyframe, curve). It distinguishes itself from persistent file editing by noting runtime-only scope, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence '运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件' explicitly tells when to use the tool (runtime) and when not (for persistence), naming the alternative (editing .tscn). This is clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animtreeA
查询、控制和编辑 AnimationTree。支持创建节点、添加状态、添加转换、设置混合参数、播放状态、编辑状态属性。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | AnimationTree 节点名称(animtree_create 时使用) | |
| value | No | 参数值(float 用于 blends,{x,y} 用于 blend spaces) | |
| action | Yes | 操作类型:animtree_create 创建 AnimationTree 节点;animtree_add_state 添加状态;animtree_add_transition 添加转换;animtree_set_blend 设置混合参数;animtree_play 播放状态;animtree_state_edit 编辑状态属性 | |
| parent | No | 父节点路径(animtree_create 时使用,默认 root) | |
| position | No | 位置 {x, y} | |
| to_state | No | 目标状态名称(animtree_add_transition 时使用) | |
| animation | No | 关联的 Animation 名称(animtree_add_state 时使用) | |
| node_path | No | AnimationTree 节点路径 | |
| conditions | No | 转换条件列表(animtree_add_transition 时使用) | |
| from_state | No | 源状态名称(animtree_add_transition 时使用) | |
| state_name | No | 状态名称 | |
| sub_action | No | animtree_state_edit 的子操作:set_position 设置状态位置(需 state_name + position);set_blend 设置混合参数(需 parameter_name + value) | |
| xfade_time | No | 交叉淡入淡出时间(秒,animtree_add_transition 时使用) | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) | |
| parameter_name | No | 参数名称 | |
| tree_root_type | No | 根节点类型(animtree_create 时使用,默认 AnimationNodeStateMachine) | |
| animation_player_path | No | AnimationPlayer 的 NodePath(animtree_create 时使用) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations that only show readOnlyHint=false, idempotentHint=false, and destructiveHint=false, the description adds meaningful behavioral context: operations are runtime-only and do not persist unless the user separately edits .tscn files. This prevents the agent from assuming scene changes are permanent. It does not disclose every side effect, but the persistence boundary is the most important behavior and is clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a concise list of supported operations and then the key scoping note about runtime-only behavior and persistence. The list of operations overlaps with the action enum in the schema, but remains a helpful summary without excessive redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 18 parameters and action-dependent field usage, the description does not explain which parameters are required or how they combine for each action. It identifies broad capabilities and runtime scope, but the agent must rely entirely on schema parameter descriptions and enums to construct correct calls. There is also no output schema or return behavior description, which is a notable gap for a complex orchestration tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description mostly restates operation names and general capabilities, providing little beyond the parameter descriptions themselves. It does not add new semantics such as default behaviors, required parameter clusters, or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb set ('查询、控制和编辑') with an explicit resource (AnimationTree) and enumerates concrete capabilities: creating nodes, adding states and transitions, setting blend parameters, playing states, and editing state properties. This distinguishes it from generic 'animation' or 'scene' tools by scoping it to AnimationTree runtime manipulation and explicitly separating persistence to .tscn files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that this is a runtime operation that only affects the current execution context, which tells the agent when to use it. It also gives a clear when-not/alternative: if persistence is needed, edit the .tscn file instead. This is actionable guidance beyond the input schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audioA
音频操作。play: 播放(支持 AudioStreamPlayer/2D/3D)。stop: 停止。set_param: 设置参数(volume_db/pitch_scale/bus)。query: 查询播放状态。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | play/set_param: 音频总线名称 | |
| param | No | set_param: 参数名 | |
| value | No | set_param: 参数值(number for volume_db/pitch_scale, string for bus) | |
| action | Yes | 操作类型 | |
| node_path | No | 音频节点路径 | |
| volume_db | No | play: 音量(dB,-80 到 24) | |
| pitch_scale | No | play: 音调缩放(0.01 到 100) | |
| stream_path | No | play: 音频资源路径(res://...),不传则播放已配置的 | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| from_position | No | play: 从指定位置开始播放(秒) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it states that operations are runtime-only and do not persist, which is useful for the agent. While annotations indicate the tool is mutable and non-idempotent, the description enhances this with the temporary-scope trait. It doesn't fully detail side effects, but the annotation coverage lowers the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the action list using a clean, consistent format. Each sentence earns its place, and there is no wasted text. The structure makes scanning easy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 11 parameters and 4 actions, the description covers the action semantics and runtime scope, which is sufficient given the absence of an output schema. It doesn't elaborate on generic parameters (project_path, load_autoloads) but these are common across sibling tools and not critical to the audio-specific behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% parameter coverage, so the baseline is 3. The description adds value by grouping parameters with actions (e.g., 'set_param: volume_db/pitch_scale/bus' and 'play: volume_db/pitch_scale') which helps the agent map parameters to the intended action. This goes slightly beyond the schema but remains consistent with it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '音频操作' (audio operations) and lists four specific actions (play, stop, set_param, query) with their target resources (AudioStreamPlayer/2D/3D). This is a specific verb+resource structure that distinguishes it from sibling tools like animation or physics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that these are runtime operations affecting only the current execution context, and advises editing the .tscn file for persistence. This provides clear when-to-use and when-not-to-use guidance, effectively serving as an alternative to sibling tools for persistent changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auditARead-onlyIdempotent
操作审计日志查询(G3)。action=get_log 读 {project}/.godot/mcp_audit.jsonl 统计回放(操作计数/风险高亮/最近条目/时间范围);action=suggest_rollback 对指定条目给诚实回滚建议(create 类可删/project.godot before_values/其余靠 Git)。write/destructive 操作经 audit after middleware 自动落盘(changed_files 为项目相对路径,PII 护栏)。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | get_log:取末尾 N 条(默认全部) | |
| since | No | get_log:ISO 时间过滤(只看此后) | |
| action | Yes | get_log=读统计回放;suggest_rollback=对指定条目给回滚建议 | |
| entry_index | No | suggest_rollback:条目序号(从 get_log entries[].index) | |
| project_path | No | 项目路径(默认 resolveProjectPath 自动解析) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnlyHint, idempotentHint, and destructiveHint annotations. It discloses the exact data source path, the type of output (operation counts, risk highlights, recent entries, time range), and the honest limitations of rollback suggestions (create-class deletion, project.godot before_values, and Git reliance). It also mentions that write/destructive operations are auto-persisted via middleware with PII guardrails, providing a complete behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but compact, packing the core action, sub-actions, output summary, and middleware logging behavior into meaningful semicolon-separated segments. It is not overly long, and every sentence provides value, though clearer line breaks or bullet-like separation would improve scanability slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the five parameters, no output schema, and the already detailed input schema, the description provides comprehensive context: path, action-specific behavior, rollback limitations, and persistence expectations. An agent can correctly invoke both actions and understand the implications of the results without requiring additional missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all 5 parameters with descriptive comments, including action-specific meanings such as 'get_log:取末尾 N 条' and 'suggest_rollback:条目序号'. The tool description reinforces the actions but does not need to add much parameter meaning beyond the schema. This matches the baseline for a schema with 100% description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with '操作审计日志查询' (operation audit log query), clearly identifying a query action on a specific audit log resource. It further distinguishes two sub-actions: get_log for statistics and suggest_rollback for rollback suggestions, making the tool's purpose concrete and distinct from sibling categories like qa or validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use each internal action: get_log for reading stats/history with time/count filters, and suggest_rollback for advising on specific logged entries. It also mentions that write/destructive operations are logged automatically, which hints at when audit data is available. It does not explicitly name alternative tools, but no sibling is a direct substitute, so this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_and_executeA
Execute a previously blocked tool using a confirmation token. Use this when a tool returns a confirmation_token.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Confirmation token from the blocked tool response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It states the action (execute a blocked tool) but gives no details about side effects, reversibility, permissions, token validity, or failure modes. For a tool that performs an execution, this lack of transparency is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no redundancy. The first sentence states the purpose; the second gives the usage trigger. Every word earns its place, and it is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers purpose and usage condition. However, there is no output schema and the description does not explain what happens after successful execution (e.g., whether it returns the original tool's result) or any caveats like token expiration. This leaves some ambiguity for the agent, though the core behavior is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes the only parameter (token) with a clear description, and schema coverage is 100%. The tool description also references the token, but adds no additional semantic detail beyond what the schema provides. This is a baseline 3 per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Execute a previously blocked tool using a confirmation token.' The verb 'execute' and resource 'previously blocked tool' are specific and distinguish it from all sibling tools, none of which mention confirmation or token handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says explicitly 'Use this when a tool returns a confirmation_token,' providing a clear condition for when to use it. While it does not mention when not to use it or list alternatives, no sibling tool serves a comparable purpose, so the guidance is sufficient for this context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cppAIdempotent
GDExtension (C++) 脚手架生成。scaffold_gdextension: 在 project_path 下生成完整可编译的 godot-cpp GDExtension 工程骨架(src/类.cpp/.h + register_types + SConstruct + .gdextension + .gitignore + README),不联网/不编译,对齐 godot-cpp 官方 example。
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | 目标已存在且非空时是否覆盖(默认 false) | |
| action | Yes | 操作类型 | |
| class_name | No | 主类名(PascalCase,默认 Example) | Example |
| parent_class | No | 父类(Godot 内置类白名单,默认 Node) | Node |
| project_path | Yes | GDExtension 工程生成根目录(须在 ALLOWED_PROJECT_PATHS 内) | |
| godot_version | No | Godot 版本(4.4–4.7。决定 godot-cpp clone ref 与 SConstruct api_version、.gdextension compatibility_minimum;4.6/4.7 走 godot-cpp master(v10)+api_version(无 godot-4.x-stable ref),4.4/4.5 用 godot-4.x-stable 分支。默认 4.7) | 4.7 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (write-side effect, idempotent, non-destructive), the description adds important behavioral detail: it explicitly says '不联网/不编译' (no network, no compile), so the agent knows the output is a source skeleton only, not a built extension. It also names the expected generated files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the key purpose, followed by the artifact list and constraining behavior. There is no filler. Slightly long, but each clause carries meaning. It could be split into a clearer, structured layout, but it remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is largely sufficient for a scaffolding tool, especially considering a fully schema-documented input. It covers the output scope, generated files, and non-network/non-compile behavior. The force/overwrite semantics are handled by the schema itself. It could add a sentence about choosing between this and the other generation-related tools, but that is a relative weakness rather than a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, including enums, defaults, and parameter-level comments for all 6 parameters. The description itself only reinforces that project_path is the generation root. It does not need to add much more, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific operation ('scaffold_gdextension') with a specific verb ('生成') and resource (godot-cpp GDExtension project skeleton), and lists concrete artifacts. It clearly differentiates from generic sibling tools such as script or project via the C++/GDExtension scope, though it never names alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool to scaffold a C++ GDExtension project. It does not explicitly state when to use it versus the sibling script/project tools, nor does it mention exclusions. The 'C++ GDExtension' framing gives a defensible context but leaves comparison to alternatives implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
docsBRead-onlyIdempotent
Query Godot class documentation: get_class_info, search_classes, find_method, get_inheritance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results for search_classes (default: 20) | |
| query | No | Search query (required for search_classes) | |
| action | Yes | Operation type | |
| class_name | No | Godot class name (required for get_class_info, find_method, get_inheritance) | |
| method_name | No | Method name to find (required for find_method) | |
| include_inherited | No | Include inherited members (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds no further behavioral context such as return format, pagination, or error behavior, which is acceptable given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately conveys the tool's purpose and lists its operation types. Every word earns its place, and there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters and four operation variants, the description is minimal but the schema and annotations fill in critical context. It does not explain return values or distinguish action-specific behaviors, which is a gap given there is no output schema, yet the tool's core purpose is clear enough for simple documentation queries.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all six parameters. The description only repeats the action names already present in the enum, adding no additional meaning beyond what the input schema provides, thus meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries Godot class documentation and lists the four supported actions (get_class_info, search_classes, find_method, get_inheritance). This distinguishes it from sibling tools by naming the specific resource and verb, though it does not elaborate on what each action does individually.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor how to choose among the four listed actions. The description does not mention any conditions, prerequisites, or competing tools, leaving the agent to infer usage solely from the action names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gameA
游戏桥接操作。安装/卸载: game_bridge_install, game_bridge_uninstall。P2-1 overrides 注入: install_override/uninstall_override (启动游戏前注入任意调试脚本到项目 autoload,如日志钩子/状态快照)。查询: game_query (ping, get_tree, find_nodes, get_node_properties, get_performance, get_viewport_info, take_screenshot)。写入: game_write (set_node_property, call_method)。输入: game_input (send_key, send_mouse_click, send_mouse_move, send_text, send_touch, send_drag, send_input_sequence 帧定时输入时间线)。等待: game_wait (wait_for_node, wait_for_property)。P2-4 确定性 playtest: game_playtest (playtest.seed 锁随机, playtest.fixed_delta 锁步长, playtest.step 单步推进, playtest.snapshot/restore 状态快照)。G1 control 层: playtest.freeze (冻结游戏循环,bridge 仍响应), playtest.unfreeze (解冻), playtest.step_until (条件满足/帧尽/wall 超时即停,结构化条件 {path,property,op,value}[] AND)。监控: monitor_start/stop/poll (属性时间线采样)。信号: watch_start/stop/poll (信号事件记录)。UI: find_ui_elements/click_button (UI元素发现+按钮点击)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | click_button: 按钮节点路径(和 text 二选一) | |
| port | No | game_bridge_install: 期望的起始监听端口(实际端口由游戏侧 env GODOT_MCP_BRIDGE_PORT 设起点,被占自动递增避让;此参数不影响行为,保留兼容)。实际端口见 ping 响应与实例 registry | |
| push | No | P3-6 watch_start/monitor_start: 启用 push 模式(事件/采样产生时主动推送 MCP notification,无需 poll)。client 需订阅 resources/subscribe 才能收到 | |
| text | No | click_button: 按钮文字(和 path 二选一) | |
| type | No | find_ui_elements: 按类型过滤(如 "Button"、"Label") | |
| limit | No | find_ui_elements: 最大返回数(默认 200,上限 500) | |
| action | Yes | 操作类型 | |
| method | No | game_query/game_write/game_input/game_wait/game_playtest 的具体方法。game_query: ping, get_tree, find_nodes (支持 root 参数限定子树搜索范围,推荐绝对路径如 /root/Main;节点不存在时报错非静默全树), get_node_properties, get_node_layout, get_performance, get_viewport_info, take_screenshot, get_errors (查询游戏运行时错误,支持 since_seq 增量 + clear 读即焚), clear_errors (清空错误 buffer)。game_write: set_node_property, call_method (协程方法默认 fire-and-forget,返 {coroutine:true} 标记+说明;传 params.await_completion=true 走延迟响应等待返回值,长协程注意调大 timeout)。game_input: send_key, send_mouse_click (button 支持 int 1-9/left/right/middle), send_mouse_move, send_text, send_touch, send_drag, send_input_sequence (帧定时时间线,延迟响应)。game_wait: wait_for_node, wait_for_property。game_playtest: playtest.seed (锁全局 RNG,仅覆盖 randi/randf), playtest.fixed_delta (锁 physics 步长,delta=1/hz), playtest.step (单步推进 N 帧,走 coroutine 延迟响应), playtest.snapshot (快照场景树属性,不保信号/物理/已free节点), playtest.restore (从快照恢复属性)。G1 control 层: playtest.freeze (冻结 tree.paused), playtest.unfreeze (解冻), playtest.step_until (推进至 conditions 满足/帧尽/wall 超时,结构化条件 {path,property,op,value}[] AND,不引入 Expression) | |
| params | No | 方法参数。game_query: 因方法而异。get_errors {since_seq?:int(默认0,只返回 seq>since_seq 的), clear?:bool(默认false,查询后清空 buffer)}。game_write: set_node_property {path, property, value}, call_method {path, method, args}。call_method 默认只读白名单(get/has_*/get_meta 等),env GODOT_MCP_BRIDGE_EXTRA_METHODS=method1,method2 可扩展(含写方法如 take_damage);EXTRA_METHODS_BLOCKLIST(free/queue_free/set_script/call/emit_signal 等)是不可覆盖硬底线。args 按方法声明类型自动强转(传 [1,2,3] 给 Vector3 参数会正确转换)。方法不存在时返回 did-you-mean 建议。response 含 undoable=false(call 不可 undo)。game_input: send_key {key, pressed}, send_mouse_click {x, y, button, pressed}, send_mouse_move {x, y}, send_text {text}, send_touch {x, y, pressed, index}, send_drag {x, y, index, relative, speed}, send_input_sequence {timeline:[{at_frame:1-600(开窗后第N帧),type:action|key|mouse_click|mouse_move|touch|drag,...事件参数}], settle_frames?:int(0-600), wall_budget_ms?:int(1000-50000), 事件≤256}(action 字段 name/pressed/strength?,其余 type 字段同各 send_*;frozen 下自动开窗播放+完成 refreeze)。game_wait: wait_for_node {path}, wait_for_property {path, property, value}。game_playtest: playtest.seed {seed:int}, playtest.fixed_delta {hz:int}, playtest.step {frames:int(1-60)}, playtest.snapshot/restore 无参数。G1 control: playtest.freeze/unfreeze 无参数, playtest.step_until {conditions:[{path:String,property:String,op:String(==/!=/</>/<=/>=),value:标量/几何}], max_frames?:int(1-600,默认600), wall_budget_ms?:int(1000-50000,默认30000)} | |
| pattern | No | find_ui_elements: 名称/文字匹配模式(Godot match 语法) | |
| timeout | No | game_query/game_write/game_input/game_wait: 超时时间(毫秒,默认 10000)。game_wait 的 timeout 用作整个轮询窗口的总预算(在窗口内反复探测直到条件成立)。send_input_sequence 延迟响应,timeout 自动放宽至 wall_budget+10s(上限 65000) | |
| node_path | No | monitor_start: 要监控的节点路径(如 /root/Player) | |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| max_events | No | watch_start: 最大记录事件数(默认 1000,最大 5000) | |
| properties | No | monitor_start: 要监控的属性名列表(如 ["position", "health"]) | |
| interval_ms | No | game_wait 专用:轮询探测间隔(毫秒,默认 200,范围 50-2000)。仅 wait_for_node/wait_for_property 生效 | |
| signal_name | No | watch_start: 要监听的信号名(如 "pressed"、"health_changed") | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| visible_only | No | find_ui_elements: 仅返回可见元素(默认 true) | |
| interval_frames | No | monitor_start: 采样间隔帧数(默认 10,最小 1,最大 300) | |
| source_script_path | No | install_override/uninstall_override: 源调试脚本绝对路径(必须在 ALLOWED_PROJECT_PATHS 白名单内,拷贝到项目根注册为 MCPOVERRIDE_<basename> autoload;插入 [autoload] 段末尾=在游戏 autoload 之后加载,脚本 _ready 可直接访问游戏单例,无需 await <Singleton>.ready) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing concrete behavior: read-only method whitelist, blocklist for dangerous methods, did-you-mean suggestions, fire-and-forget coroutine semantics, snapshot limitations, freeze/unfreeze behavior, push-mode notifications, and how the bridge remains responsive. This gives agents substantial behavioral context that annotations alone would not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and highly structured: it is quickly previewed, then organized by operation category. It packs a lot of information into a single continuous block without much filler. Line breaks or bullet structuring would improve readability, but every sentence/genuinely contributes to explaining the tool's surface.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 21 parameters, nested objects, and 17 action variants, the description covers all major operation families, important side effects, constraints, and method characteristics. It falls short of fully specifying the output/return contract for every method, since there is no output schema; however, the action names and parameter details are mostly self-evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents every parameter and its per-action meaning in detail. The description does summarize action-method relationships, but it does not add much semantic value about parameters beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it is a '游戏桥接操作' tool and enumerates the major operation families (install/uninstall, query, write, input, wait, playtest, monitoring, signals, UI). This is clear about the resource and scope, but the tool is an umbrella for many subactions rather than a single specific verb, and it does not differentiate itself from sibling tools like scene, screenshot, or runtime.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear category labels for when to use each internal subaction: 查询, 写入, 输入, 等待, 监控, etc. However, it never says when to prefer this tool over sibling tools, nor gives explicit 'when not to use' guidance. The context is mainly an internal index, not a decision guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
godot_get_contextARead-onlyIdempotent
一次返回会话全景(模式/项目/连接/场景快照/最近调用统计/工具组/推荐 workflow/规则/性能),减少反复探路。headless 模式 scene=null。
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No | 项目路径(可选;传了补 project/rules 字段,没传降级 null/[]) | |
| include_scene | No | 是否采集场景快照(默认 true;headless 恒 null) | |
| include_performance | No | 是否采集性能(默认 true;仅 bridge 有效) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds valuable behavioral context beyond the schema: headless mode returns scene=null, project_path fallback behavior, and performance only being valid via bridge. These disclose important edge cases and parameter-dependent behavior, which is more than the minimal date-range scoping in the calibration example. However, it stops short of describing the complete return structure or potential side effects (though read-only makes that less critical).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the main purpose and lists contents; the second adds a specific caveat about headless mode. There is zero padding, and every word contributes to understanding. This is exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the burden of explaining what the tool returns. It lists the major categories (mode, project, connection, scene snapshot, stats, tool groups, workflows, rules, performance) and notes the headless edge case. This is sufficient for an agent to know what to expect, though it does not provide detailed structure or nested field information. Given the tool's complexity, this is a solid overview but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters, so the schema already fully explains each parameter's meaning and behavior. The description does not add new parameter semantics beyond what is in the schema; it only reiterates the headless and bridge nuances already present in the schema descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a comprehensive session panorama, listing specific components (mode, project, connection, scene snapshot, stats, tool groups, workflows, rules, performance). This is a specific verb+resource that distinguishes it from sibling tools like godot_list_instances or godot_select_instance, which have more targeted purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '减少反复探路' (reduce repeated exploration) implies using this tool to get an overview before diving into more specific operations. This provides clear context, though it does not explicitly name alternatives or state when not to use it. No exclusions are given, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
helpARead-onlyIdempotent
获取任意工具的完整文档。可用工具名:analysis, android, animation, animation_track, animtree, asset, audio, audit, blender, confirm_and_execute, cpp, csv_to_resources, debug, docs, editor, engine, game, godot_advanced_tool, godot_get_context, godot_list_dynamic_routes, godot_list_instances, godot_select_instance, help, load_skill, manage_tools, material, nav, particles, physics, profiler, project, qa, runtime, runtime_assert, scene, screenshot, script, self_update, signal, testing, tilemap, translation, ui, uid, validation, workflow。传 tool_name 获取该工具的详细用法、参数、action 列表。拼写纠错自动提示最接近的工具名。
| Name | Required | Description | Default |
|---|---|---|---|
| tool_name | Yes | 要查询的工具名 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and non-destructive traits. The description adds further behavioral context beyond that by explaining that the tool returns complete documentation and action lists, and that it can suggest close tool names for misspellings. No hidden or surprising behavior is apparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is functional and direct, but it repeats the entire 46-item enum that already exists in the schema. While the list makes the scope obvious, it adds length without adding value for an agent that already has schema access. Structurally it is readable but somewhat redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only help tool with full enum coverage in the schema, the description is largely complete. It explains the purpose, expected input, what information will be returned, and one useful edge behavior. Lacking an output schema is negligible here because the output is itself documentation for other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter schema already fully defines tool_name with type, description, and an enum of all 46 allowed values. The description adds only a brief restatement of '传 tool_name 获取该工具的详细用法、参数、action 列表', which is useful but does not meaningfully extend per-parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action and resource: '获取完整文档' for any tool, and lists accepted tool names. It is not a tautology and is informative enough for an agent to understand what help does. It does not explicitly distinguish itself from the similarly naming sibling 'docs', so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to pass tool_name and states what will be returned: detailed usage, parameters, and action list. It also notes automatic spelling correction. It does not provide when-not-to-use or alternate tool comparisons, but for a meta help tool the usage context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_skillA
从本地知识库(GodotPrompter/gd-agentic 等)按关键词检索 SKILL.md。两级检索:name/description 高精度→全文 fallback。返回带来源标注(source/path)和相关性 score 的匹配。缺失库进 missing_libraries 不报错。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 返回上限(默认 10) | |
| query | Yes | 检索关键词(必填) | |
| libraries | No | 知识库目录绝对路径数组。省略时读 GODOT_SKILL_LIBRARIES 环境变量(逗号分隔) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (all false), the description discloses meaningful behavioral traits: the two-stage retrieval pipeline, the return of source/path and relevance score, and the non-error handling of missing libraries. It does not directly contradict the annotations, though the readOnlyHint=false could be seen as inconsistent with the read-only nature implied, but the description never claims any write behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence containing all essential information without fluff. It is reasonably structured with a colon and semicolon, making it readable despite the density. No word is wasted, though it could be split into clearer sentences for improved scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description adequately explains the return format (source/path and score) and error handling for missing libraries. It also describes the fallback algorithm. Combined with the schema, it covers the essential aspects for a search tool, though it does not mention pagination or empty-result behavior, which are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has full coverage for all three parameters (query, limit, libraries) with descriptions. The tool description does not add additional parameter-level semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (search/retrieve), the target resource (SKILL.md from local knowledge base), and the method (two-level retrieval with high-precision then full-text fallback). This distinguishes it from sibling tools focused on other domains and leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it is used to search for skill definitions by keyword, with a documented fallback strategy. It also explains behavior for missing libraries, guiding the agent on what to expect. However, it does not explicitly name alternatives or describe when not to use this tool, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
materialA
Material and shader operations. Read: read. Write: set_params, create, save, load. Shader: shader_read, shader_write, shader_load_file, shader_save_file, shader_list_templates, shader_apply_template. 运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | shader_write/shader_save_file: shader code | |
| action | Yes | Operation type | |
| params | No | set_params: parameter key-value pairs | |
| file_path | No | shader_load_file/shader_save_file: file path | |
| node_path | No | Scene tree node path | |
| shader_path | No | create: shader resource path | |
| project_path | No | Godot project directory path | |
| material_type | No | create: material type | |
| resource_path | No | save/load: resource path | |
| template_name | No | shader_apply_template: template name | |
| load_autoloads | No | Load Autoload context (default true) | |
| material_index | No | Material index (optional, default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds valuable context beyond annotations: all operations are runtime-only and non-persistent. However, it does not disclose potential side effects of specific actions like write/save/load, or any authorization requirements, so transparency is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably compact, but the enumeration of action names duplicates the schema enum. The grouping and runtime note add value, making it efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, 11 actions) and lack of output schema, the description provides only high-level context and runtime behavior. It doesn't explain differences between save/load and shader_save_file, nor return formats, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes all parameters with 100% coverage, so the description adds limited param-specific meaning. It groups actions into read/write/shader categories, helping interpret the 'action' parameter, but does not clarify individual parameters further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as managing material and shader operations and lists action categories, distinguishing it from sibling tools focused on other domains (e.g., scene, script, physics). However, it lacks a single precise verb like 'manage' or 'manipulate', instead relying on a listing of actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states operations are runtime-only and affect only the current execution context, and advises editing the .tscn file for persistence. This provides clear when-to-use and when-not-to-use guidance, though it does not reference sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
particlesAIdempotent
创建 GPUParticles2D/3D 节点、设置发射/处理参数、加载预设效果、设置粒子材质。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | 节点名称(particles_create) | |
| action | Yes | 操作类型 | |
| amount | No | 发射数量(正整数) | |
| parent | No | 父节点路径(默认 root) | |
| preset | No | 预设效果名称 | |
| spread | No | 扩散角度(0-180 度) | |
| damping | No | 阻尼 | |
| gravity | No | 重力 {x,y,z} | |
| lifetime | No | 粒子生命周期(秒) | |
| position | No | 位置。3D 用 {x,y,z},2D 用 {x,y} | |
| direction | No | 发射方向 {x,y,z} | |
| node_path | No | 粒子节点路径 | |
| node_type | No | 粒子节点类型(particles_create) | |
| randomness | No | 随机性(0-1) | |
| speed_scale | No | 速度缩放 | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| explosiveness | No | 爆发性(0-1) | |
| material_type | No | 材质类型(ParticleProcessMaterial) | |
| emission_shape | No | 发射形状 | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) | |
| emission_box_extents | No | 盒体发射范围 {x,y,z}(emission_shape=box 时有效) | |
| emission_sphere_radius | No | 球体发射半径(emission_shape=sphere 时有效) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds the crucial behavioral trait that operations are runtime-only and non-persistent, which is not fully captured by the annotations. It doesn't contradict annotations; it reinforces the non-destructive, session-scoped nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The second sentence is a verbatim repeat of the first: '运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。' This duplication is unnecessary and wastes space. While the description is short, the redundancy means not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 22 parameters and five action types, the schema provides thorough parameter documentation, and the description adds high-level runtime/persistence context. It lacks a mention of return values or prerequisites, but given the schema's richness, the description is sufficiently complete for a well-structured tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description's generic phrases like '设置发射/处理参数' add no additional meaning beyond the schema's detailed descriptions, which already document parameter relationships (e.g., emission_box_extents only for box shape).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states multiple specific actions: creating GPUParticles2D/3D nodes, setting emission/process parameters, loading presets, and setting materials. This clearly identifies the resource domain and distinguishes the tool from broader scene or material manipulation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says '运行时操作,仅影响当前执行上下文' (runtime operation, only affects current execution context) and directs users to edit .tscn files for persistence. This provides clear guidance on when to use the tool vs. persistent scene edits, though it doesn't explicitly name an alternative particle-specific tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profilerARead-onlyIdempotent
性能分析工具。snapshot: 快照(FPS/内存/绘制调用/物理统计)。start/stop: 开始/停止分析会话。get_data: 收集帧级数据,含多维度采样、p99百分位、趋势退化检测、内存趋势、渲染统计。get_active_processes: 遍历场景树查找有 _process/_physics_process 的节点。get_signal_connections: 列出子树所有信号连接。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 操作类型 | |
| node_path | No | 子树根节点路径(get_active_processes/get_signal_connections,默认 root) | |
| dimensions | No | 采样维度列表(get_data,默认 ["process"])。有效值: process, physics, nav_process | |
| target_fps | No | 目标帧率,用于帧预算分析(get_data,默认 60) | |
| frame_count | No | 采样帧数(get_data,默认 60) | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) | |
| leak_threshold_mb | No | 内存泄漏嫌疑阈值 MB(get_data,默认 2.0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable context by clarifying that operations affect only the current execution context and that no persistent changes are made, reinforcing the read-only nature without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, listing actions with brief explanations and ending with a crucial limitation. Each sentence contributes useful information without redundancy, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers all actions and the types of data collected (FPS, memory, draw calls, p99 percentile, trends, etc.) for a tool with several parameters and no output schema. It could elaborate on the return format of get_data, but the current level is sufficient for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter thoroughly documented including enums and defaults. The description's mention of multi-dimensional sampling and frame-level data aligns with the schema but does not add significant extra meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a '性能分析工具' (performance analysis tool) and enumerates specific actions (snapshot, start/stop, get_data, get_active_processes, get_signal_connections) with explicit purposes. This distinguishes it from sibling tools by focusing on runtime profiling and scene introspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states that operations are runtime-only and affect only the current execution context, explicitly noting that persistence requires editing .tscn files. This provides a clear when-not-to-use condition, though it does not explicitly name alternative tools for persistent changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projectC
搜索 Godot 项目、获取项目信息、列出文件、读取配置、创建项目、设置项目规则。
| Name | Required | Description | Default |
|---|---|---|---|
| ci | No | 生成 GitHub Actions CI workflow(默认 false) | |
| key | No | 配置键(write_config,如 "application/config/name") | |
| tag | No | 模板:按标签过滤 | |
| force | No | 覆盖已有配置(默认 false) | |
| hooks | No | 创建 .claude/settings.json 的 PostToolUse hook(默认 true) | |
| value | No | 配置值(write_config) | |
| action | Yes | 操作类型 | |
| renderer | No | 渲染器:"forward_plus"(默认)、"mobile"、"gl_compatibility" | forward_plus |
| template | No | 项目脚手架模板:2d-platformer / 3d-fps / visual-novel(默认空) | |
| agents_md | No | 创建/追加 AGENTS.md 项目规则(ZCode/Codex/Cursor 等遵循 AGENTS.md 标准的客户端读取,默认 true) | |
| claude_md | No | 创建/追加 CLAUDE.md 验证规则(默认 true) | |
| max_depth | No | 最大搜索深度(默认 3,钳制上限 10) | |
| variables | No | 模板:变量覆盖 | |
| applies_to | No | 模板:按适用类过滤 | |
| extensions | No | 按扩展名过滤(如 [".gd", ".tscn"]) | |
| rules_mode | No | 规则文件 reconcile 模式:check(默认,只检测报告)/ update(覆盖版本过时且未动过的文件,保留用户动过的)/ overwrite(全覆盖含本地修改) | check |
| search_dir | No | 搜索目录(list_projects) | . |
| script_path | No | 模板:目标脚本路径 | |
| template_id | No | 模板:模板 ID(如 T008) | |
| project_name | No | 项目名称(默认取文件夹名) | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| subdirectory | No | 限定子目录 | |
| godot_version | No | CI 中使用的 Godot 版本(默认 4.7) | 4.7 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
annotations 提供 readOnlyHint=false、idempotentHint=false、destructiveHint=false,信号非常弱,描述承担了行为透明化的主要责任。描述虽提到创建项目、设置项目规则等副操作,但未透露 write_config 的写操作,也未说明 setup_project_rules/create_project 可能创建文件(包含 hooks、AGENTS.md、CLAUDE.md 等副作用)。当前描述未与 annotations 矛盾,但行为透明度不足。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述以一句紧凑的动词列表呈现,没有无关冗余,做到了简洁。但对一个拥有 9 个 action 和 23 个参数的复杂工具来说,单行列表虽简单但无法承载足够的信息,缺少数层化/分点式结构。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
工具复杂度高(9 个 action、23 个参数、嵌套对象),且没有输出 schema,因此描述需要尽可能说明操作和边界,但它只列出部分操作,遗漏 write_config、list_templates、apply_template。没有提及返回格式、副作用或与兄弟工具的取舍关系,整体不够完整。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
input schema 对全部 23 个参数都有中文描述,覆盖率为 100%,包括默认值、枚举、示例和特定 action 归属(如 write_config)。因此描述本身无需再重复参数语义;基线 3 合理。描述没有在 schema 之外增加参数含义,但 schema 已足够充分。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb+resource pairs(搜索、获取、列出、读取、创建、设置,均指向 Godot 项目或项目内容),使代理能够识别这是项目级工具。但它只描述了 6 种动作,遗漏了 action 枚举中的 write_config、list_templates、apply_template,因此区分能力不完全覆盖所有功能。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
描述没有说明何时使用该工具而不是使用诸如 scene、script、game、runtime 等兄弟工具。没有提供“不使用此工具”的排除条件或指向替代工具的提示,使用时机只能从项目相关关键词中隐含推断。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qaA
QA 测试套件编排:结构化测试规范 → 自动安装 bridge → 运行游戏 → 逐步执行 → 聚合报告 + 回归 diff。步骤类型:input/wait/wait_frames/freeze/unfreeze/step_until/snapshot/restore/set/call/watch_start|stop/monitor_start|stop/assert/screenshot/sleep;断言 8 种与各字段语义见 schema 字段 description。run 支持 mode:async 后台执行(qa status/cancel 管理)。报告落 ~/.godot-mcp/qa-reports/.{json,md}。
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | run: sync=同步等完整结果;async=立即返回 run_id 后台执行(用 qa status 轮询/qa cancel 取消)。默认:未显式指定时,客户端声明 MCP tasks 能力则自动 async,否则 sync | |
| spec | No | run: inline 套件 spec 对象。步骤为 discriminated union(type 字段决定形态):input(method+params,bridge 原生参数)、wait(wait_for_node/wait_for_property 轮询)、wait_frames(1-60 帧确定性推进)、freeze/unfreeze、step_until(结构化条件{path,property,op,value}[],规避 RCE)、snapshot/restore、set(写节点属性)、call(bridge 只读白名单方法,写方法需 GODOT_MCP_BRIDGE_EXTRA_METHODS)、watch_start(node_path+signal_name,单套件单 watch)、watch_stop、monitor_start(node_path+properties[],单套件单 monitor)、monitor_stop、screenshot(证据落报告目录)、sleep。步骤带 label 便于 diff 对齐 | |
| action | Yes | run=执行套件;report=读报告;diff=对比两份报告找回归;status=查运行注册表(进度/终态);cancel=取消进行中的 run | |
| run_id | No | status/cancel: 目标 run_id(status 省略=列出全部注册 run) | |
| base_path | No | diff: 基线报告(默认 prev) | |
| head_path | No | diff: 对比报告(默认 latest) | |
| spec_path | No | run: spec 文件路径(.json 或含 ```qa-spec 围栏的 .md),大套件建议用文件避免 token 截断;须在 ALLOWED_PROJECT_PATHS 白名单内 | |
| report_path | No | report: 报告路径或 run_id;latest=最新,prev=次新 | |
| project_path | No | run: 项目路径(覆盖 spec 内的 project_path;spec 未写时必填) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the all-false annotations, the description discloses meaningful side effects: it auto-installs the bridge, runs the game, executes state-mutating steps (set/call/watch/monitor), and writes report files to ~/.godot-mcp/qa-reports/. It also notes the call-method whitelist (GODOT_MCP_BRIDGE_EXTRA_METHODS) and the RCE-avoidance design of step_until. Missing an explicit overview of what the sync run returns, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then methodically enumerates step types, assertion guidance, async mode, and report location. It is dense but stays on-topic; the single run-on enumeration of step types is the only minor structural weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, nested objects, multiple actions, and no output schema, the description covers the orchestration flow well, but it does not say what a sync 'run' returns beyond the existence of report artifacts, nor the result shapes of status/report/diff. With no output schema to fill that gap, this is a noticeable completeness deficiency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already fully documented and the baseline for this dimension is 3. The description adds only a high-level step-type list and pointers to 'schema 字段 description' rather than new semantic value beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (编排/orchestrate) and resource (QA test suites), and lays out a clear end-to-end pipeline: spec → bridge install → run game → step execution → report + regression diff. This makes it unmistakably distinguishable from sibling tools like validation or screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides real operational context: async background execution managed via status/cancel, and an implicit hint that large suites should go through spec_path rather than inline spec. However, it never explicitly states when to choose this tool over alternatives (e.g., 'use this when you need automated multi-step game testing, not one-off assertions'), leaving usage as largely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtimeC
启动编辑器、运行/停止项目、获取调试输出、运行测试、获取 Godot 版本。
| Name | Required | Description | Default |
|---|---|---|---|
| speed | No | 录制:回放速度倍率(默认 1.0) | |
| action | Yes | 操作类型 | |
| timeout | No | 自动停止秒数(默认 30。游戏冷启动 >30s 的项目传更大值如 120;wait_for_bridge 时自动取 max(bridge_timeout+10, timeout) 防与 bridge 就绪 race) | |
| file_name | No | 录制保存:始终自动命名 recording_YYYYMMDD_HHmmss.json(file_name 入参被忽略);但 file_name 须匹配 recording_*.json 格式(否则 INVALID_FILE_NAME),禁止含 / \\ .. | |
| quit_flag | No | run_tests 的 GUT 退出标志。默认 gquit(GUT ≤9.5);GUT 9.6+ 移除 -gquit(报 Unknown arguments: -gquit)时切 gexit | gquit |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| events_json | No | 录制:JSON 格式的事件序列字符串 | |
| test_script | No | 测试脚本或目录路径(默认 res://test/) | res://test/ |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| bridge_timeout | No | wait_for_bridge 轮询总预算(秒,默认 10) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) | |
| wait_for_bridge | No | true 时 spawn 后轮询 bridge 就绪(默认 false,向后兼容) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden of behavioral disclosure. It merely lists actions in imperative form and does not disclose that run_project spawns a process, stop_project terminates it, or record_save writes a JSON file. The schema parameter hints capture some of this later on, but the tool-level description adds very little behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence and is easy to skim. It is concise without padding, but the brevity comes at the cost of omitting the recording-related actions and overall dispatch nature of the tool, so it loses one point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 12-parameter dispatcher with 11 possible actions, no output schema, and no description of the return behavior or the overall orchestration pattern. The description excludes six of the action enum values entirely and does not explain how wait_for_bridge, timeout, and autostart interact. A tool can be used in a variety of configurations here, and the description is too incomplete to fully support an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is well explained with enum values, defaults, and practical notes such as timeout edge cases and the GUT -gquit compatibility issue. The description text contributes no additional parameter explanation beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists specific verbs tied to a concrete resource: launching the editor, running/stopping the project, fetching debug output, running tests, and getting the Godot version. This makes the main intent clear. It does not distinguish itself from siblings or mention the recording actions, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus closely related siblings such as project, game, script, or runtime_assert. The description only enumerates capabilities and gives no exclusion criteria or conditions that would help an agent route between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runtime_assertARead-onlyIdempotent
运行时断言:在运行中的游戏上验证节点状态/场景结构/屏幕文本/性能/截图对比。agent 可任意时刻调用,不必走 workflow.dev_loop。全部依赖 game-bridge(需先 game_bridge_install + 游戏运行中)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | node_state: 节点路径(如 /root/Main/Player) | |
| text | No | screen_text: 要查找的文本 | |
| nodes | No | scene_structure: 期望的节点列表 | |
| action | Yes | 断言类型 | |
| expect | No | node_state: 期望的属性键值对(如 {"health": 100, "position": {"x": 0}}) | |
| present | No | screen_text: true=断言文本存在(默认),false=断言不存在 | |
| baseline | No | perf: 期望的性能基线(如 {"fps": 60}) | |
| reference | No | screenshot_diff: 参考截图路径(res://、项目相对或绝对路径;须在白名单内) | |
| threshold | No | screenshot_diff: 像素差异容忍阈值(0-1,默认 0.12)。per-pixel 归一化 RGB 距离严格大于此值才计为差异像素;值越小越严格 | |
| tolerance | No | node_state/perf: 数值容差(默认 0,精确匹配) | |
| project_path | No | 项目路径(screenshot_diff 必填:解析 user:// 截图落盘位置) | |
| max_diff_ratio | No | screenshot_diff: 允许的差异像素占比上限(0-1,默认 0.05)。严格像素回归传 0;常规视觉回归建议以同布局好图对校准(本仓实测同布局好图对 ≈0.176,勿低于该量级) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
注解已声明 readOnlyHint=true、idempotentHint=true、destructiveHint=false,描述有需要补充的只是运行依赖和前置条件,该描述确实补充了 game-bridge、安装步骤和游戏运行要求。这些信息对调用时机和准确使用有价值,且没有注解矛盾。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
描述紧凑,两句话即完成:先给功能摘要,再给调用时机和前置条件,没有冗余或重复 schema 内容。每句话的信息密度都足够,结构便于 agent 快速理解。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
该工具复杂度中等偏高:5 种 action、12 个参数、嵌套对象且无输出 schema。描述已覆盖调用范围、路径边界和依赖前提,sctype+annotations 也清晰;唯一明显缺口是未说明断言失败时的返回形式或行为,但整体仍足以支持 agent 正确发起调用。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
信号显示 schema 参数描述覆盖率为 100%,12 个参数已包含较充分的字段级说明,包括 action 枚举、screenshot_diff 的 threshold/max_diff_ratio 语义等。描述对参数增加的意义不大,因此按高覆盖率基线给 3 分。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
描述首句即明确‘运行时断言’这一动作,并列举可验证的各类对象:节点状态、场景结构、屏幕文本、性能、截图对比。它同时说明该工具的运行场景是‘运行中的游戏’,并能与 workflow.dev_loop、validation、screenshot 等同级工具区分开。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
明确说明‘agent 可任意时刻调用,不必走 workflow.dev_loop’,并给出硬前置条件:需先 game_bridge_install 且游戏运行中。这些信息足够让 agent 判断何时使用该工具;但未明确说明何时不应使用或与 validation、qa 等工具的取舍边界,稍有缺失。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sceneCDestructive
场景操作。读取/创建: read_scene, create_scene, quick_scene。节点: add_node, batch_add_nodes, edit_node, remove_node。保存/资源: save_scene, load_sprite。查询: query_scene_tree, inspect_node。实例: instance_scene, set_instance_property, detach_instance。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | 名称(create_3d_node) | |
| save | No | commit: 是否保存到文件(默认 true) | |
| type | No | 类型(create_3d_node,白名单) | |
| nodes | No | batch_add_nodes: 节点定义数组 | |
| value | No | 属性值(set_instance_property) | |
| action | Yes | 操作类型 | |
| parent | No | create_3d_node: 父节点路径(默认 root) | |
| new_path | No | save_scene: 新保存路径(可选)/ merge_scene: theirs 场景路径(必需) | |
| property | No | set_instance_property: 属性名 | |
| max_depth | No | query_scene_tree/inspect_node: 最大遍历深度 | |
| node_name | No | add_node: 节点名称 | |
| node_path | No | inspect_node/edit_node/remove_node/load_sprite/detach_instance/set_instance_property: 节点路径 | |
| node_type | No | add_node: 节点类型(如 Sprite2D, Camera2D) | |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| operations | No | commit: 批量操作列表(enum 见 op 字段;铺设/TileSet 层配置/节点) | |
| properties | No | add_node/edit_node/instance_scene: 属性对象 | |
| scene_path | No | 场景路径(read_scene 用绝对路径,其余用相对项目路径) | |
| script_path | No | quick_scene: 脚本路径(可选) | |
| project_path | No | Godot 项目目录路径 | |
| summary_only | No | read_scene: 返回摘要而非完整 JSON | |
| texture_path | No | load_sprite: 纹理路径(如 res://assets/player.png) | |
| instance_path | No | 要实例化的场景(res://…tscn) | |
| stop_on_error | No | 遇错是否停止(默认 true;false 时失败不阻止后续与 .tres 写盘) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) | |
| root_node_name | No | quick_scene: 根节点名称(默认从文件名推导 PascalCase) | |
| root_node_type | No | create_scene/quick_scene: 根节点类型(默认 Node2D) | |
| script_content | No | quick_scene: 脚本内容(脚本不存在时自动创建) | |
| include_signals | No | inspect_node: 包含信号连接(默认 true) | |
| parent_node_path | No | add_node/instance_scene: 父节点路径(默认 root) | |
| include_properties | No | inspect_node: 包含属性值(默认 true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag destructiveHint=true, but the description does not go beyond the bare list of action names, so it adds no extra behavioral context. It does not explain which operations persist to disk, what effect commit has, or that some actions remove or detach nodes — the agent is left to infer the destructive nature from action names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very compact and front-loaded with the 'scene operations' heading, then a categorized enumeration of actions. It is scannable and clutter-free, though the use of Chinese punctuation to chain groups makes it a little dense, and omitting some schema actions means the listing is not fully aligned with the enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a dispatcher tool with 30 parameters, a 19-value action enum, nested objects, and no output schema, this description is far from complete. It does not cover all actions in the enum and does not explain the purpose or return/behavior semantics that would let an agent confidently use this tool in high-consequence scene modification scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the schema already documents per-parameter meanings and per-action notes. The tool description itself does not add semantic value for parameters — it only groups action names, which the schema enum already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with '场景操作' (scene operations), making it clear this is the scene-operation dispatcher, and then groups the supported actions into categories such as read/create, nodes, save/resources, query, and instances. It is not a mere tautology because it enumerates meaningful sub-operations, though it omits some schema enum actions like open_scene, merge_scene, health_check, create_3d_node, and commit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides category labels, which hint at related actions, but it never says when to choose one action over another or when to prefer a sibling tool. Since the tool is an action dispatcher with more than a dozen mutually exclusive enum values, this is a significant guidance gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotBRead-onlyIdempotent
Screenshot capture and image analysis handoff. capture: capture a Godot scene screenshot in headless mode (experimental). analyze: return the image as MCP image content (base64) for the client vision capability to examine — returns image data, NOT a text description.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | capture: Scene file path relative to project (res://scenes/main.tscn). If omitted, captures the default scene or an empty viewport. | |
| action | Yes | Action type: capture (take a screenshot), analyze (AI visual analysis of an image), or diff (pixel-level comparison of two PNG images) | |
| detail | No | P1-5 视觉成本层级:full(完整 base64 图像,高 token) / thumbnail(缩放至 thumbnail_width 的 PNG,中 token) / ascii(ASCII art 文本,低 token)。默认 full。 | full |
| image_a | No | diff: 基准图(a 图)路径。相对路径需 project_path;两图尺寸必须一致。 | |
| image_b | No | diff: 对比图(b 图)路径。路径策略同 analyze 的 image_path(白名单校验)。 | |
| question | No | analyze: Question for the AI to answer about the image. Default: "Describe what you see in this game screenshot." | Describe what you see in this game screenshot. Focus on: UI elements, character positions, any visual issues or bugs. |
| diff_path | No | diff: 可选,差异图输出路径。差异像素染纯红 (255,0,0),其余保留 a 图原色。不提供则不写文件。 | |
| threshold | No | diff: per-pixel 归一化欧氏距离阈值 sqrt(Δr²+Δg²+Δb²)/(√3×255),0-1,默认 0.12。恰好等于阈值不计差(严格大于才计)。忽略 alpha 只比 RGB。 | |
| wait_node | No | capture: 等待该节点(名或 /root/... 路径)出现在场景树再截图。对分帧构建/异步初始化场景,优先于 frame_delay 生效;超时(固定 300 帧≈5s@60fps,独立于 max_frames)后放弃等待直接截图 | |
| wait_text | No | capture: 等待任一 Label/RichTextLabel 的 text 包含该子串再截图;超时同 wait_node(固定 300 帧≈5s@60fps,独立于 max_frames) | |
| ascii_cols | No | detail=ascii: 字符列数(默认 80) | |
| ascii_rows | No | detail=ascii: 字符行数(默认 40) | |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| image_path | No | analyze: Absolute path to the image file (PNG or JPG) | |
| frame_delay | No | capture: Frames to wait before capture (default: 15) | |
| output_path | No | capture: Output PNG path (absolute). Defaults to <project_path>/screenshot.png | |
| project_path | No | Path to Godot project directory | |
| vision_route | No | Phase 2 Vision Routing:开启时调视觉模型(groq)把图片翻译成文字描述,返回纯文本(不含 image block),让纯文本模型(DeepSeek 等)也能"看懂"截图。失败时 fallback 到 detail 分层 + 追加 note。需 GODOT_MCP_VISION_KEY 环境变量。 | |
| viewport_width | No | capture: Viewport width in pixels (default: 1280) | |
| thumbnail_width | No | detail=thumbnail: 目标宽度像素(默认 256,保持纵横比) | |
| viewport_height | No | capture: Viewport height in pixels (default: 720) | |
| vision_question | No | vision_route=true 时传给视觉模型的上下文(可选,如"我在调试 Player 走路动画")。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, which covers the safety profile. The description adds useful behavioral context by labeling headless capture as 'experimental' and explicitly stating that analyze returns image data rather than text. However, it does not qualify that vision_route can make the tool return a plain-text description instead of image content, creating a slight gap in the blanket 'NOT a text description' claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, front-loaded with the core purpose, and avoids redundant restatement of schema fields. That said, the conciseness is achieved in part by omitting the 'diff' action and the vision_route exception, so the structure is economical but not fully representative of the tool's capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with 22 parameters and three distinct actions, yet the description only discusses two of them and says nothing about diff. There is no output schema, so the description is a lower source of truth for what each mode returns or requires. The missing diff mode and the unqualified analyze-vs-vision_route statement leave the description incomplete for an agent serving the full schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the schema already documents all fields. The description itself adds minimal parameter-level detail beyond naming 'capture' and 'analyze', and does not help understand the 'diff' parameters or the relationship between vision_route and analyze. With complete schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource ('Godot scene screenshot') and provides distinct verbs for capture ('capture') and analyze ('return the image as MCP image content'). However, the action enum includes a third mode, 'diff', which the description never mentions, so an agent cannot tell from the description that pixel-level image comparison is in scope. Overall clear but incomplete on the full purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives brief per-action meanings for 'capture' and 'analyze', but provides no guidance on when to use this tool versus siblings or when to choose the 'diff' action. It also does not specify conditions like needing a client vision capability or a text-output alternative, beyond a single caution that analyze returns image data, not a text description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scriptADestructive
脚本操作。读写: read_script, write_script。编辑: edit_script(行号/search_and_replace)。执行: execute_gdscript(⚠️ 沙箱仅防误操作,不可用于不可信输入。高安全场景请用 ALLOW_EXECUTE_GDSCRIPT=false 或容器隔离)。⚠️ write_script/edit_script 写入 .gd 前也走沙箱扫描(防 @tool 脚本加载即执行等已知危险 API 模式(清单不列举,防沙箱边界被侦察);与 execute_gdscript 同威胁面)。测试: generate_test, create_test_scene。批量替换: project_replace。💡 execute_gdscript 最佳实践:分步执行、每步验证(把复杂逻辑拆成小块逐一跑,每步用 read_script/edit_script 迭代,避免一次性大脚本出错难定位)。
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | execute_gdscript: 要执行的 GDScript 代码 | |
| action | Yes | 操作类型 | |
| search | No | project_replace: 搜索文本 | |
| content | No | write_script: GDScript 内容 | |
| dry_run | No | project_replace: 仅预览不写入(默认 false) | |
| replace | No | project_replace: 替换文本 | |
| timeout | No | execute_gdscript: 超时秒数(默认 30) | |
| end_line | No | edit_script: 替换结束行(1-based,含) | |
| overwrite | No | write_script: 覆盖已有文件(默认 false) | |
| extensions | No | project_replace: 文件扩展名(默认 [".gd"]) | |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| start_line | No | edit_script: 替换起始行(1-based) | |
| indent_mode | No | edit_script: 缩进模式(默认 raw) | raw |
| new_content | No | edit_script: 替换内容 | |
| script_path | No | read_script 用绝对路径;write_script/edit_script/generate_test 用绝对或相对项目路径 | |
| exclude_dirs | No | project_replace: 排除目录(默认 [".godot", ".import"]) | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| auto_validate | No | edit_script: 自动验证语法并在失败时回滚(默认 true) | |
| load_autoloads | No | execute_gdscript: 省略时自动检测 autoload 引用;显式 true/false 覆盖自动检测 | |
| verify_content | No | edit_script: 期望内容守卫(不匹配则中止) | |
| search_and_replace | No | edit_script: 内容搜索替换模式(提供时忽略 start_line/end_line) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Exposes significant behavioral traits beyond the false-boolean annotations: the sandbox is only protection against accidents, not against untrusted input; write_script/edit_script enter the same threat surface as execute_gdscript via pre-write scanning; the dangerous-pattern list is deliberately hidden to prevent sandbox-boundary probing. This gives agents the true security model and the reason for information withholding. Misses some specific write-behavior details (output/return behavior, confirmation flow), so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded: the action list appears in the first few words, and every sentence carries meaningful security or usage content. It loses a point for being one long flowing block — the two important caveats are embedded mid-sentence, and explicit line breaks or bullets would improve agent scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 21 parameters, 7 actions, nested objects with no output schema, the description supplies the high-value operational context (security threat model, sandbox boundaries, execute best practices). The remaining gaps are noticeable but not blocking: no statement of return/output behavior, and no mention of whether destructive actions need additional confirmation or iterate (e.g., project_replace write visibility).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description adds essentially nothing beyond the schema: it references edit_script's line-number/search_and_replace and project_replace's bulk replacement, which the schema already captures in parameter descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description gives 'script operations' as the domain and enumerates all seven actions with their verb categories: read/write (read_script, write_script), edit (edit_script), execute (execute_gdscript), test (generate_test, create_test_scene), bulk replace (project_replace). This clearly distinguishes the internal actions, though it stays a dispatcher-level description and does not differentiate from sibling tools like 'cpp' explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit routing guidance for every action family, and goes further: it says when NOT to trust execute_gdscript (untrusted input), when to use ALLOW_EXECUTE_GDSCRIPT=false, and recommends a step-by-step 'execute-verify-iterate' pattern for complex logic. Lacks explicit comparison to sibling tools, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
signalA
信号操作。connect/disconnect: 连接/断开信号。emit: 发射信号(参数仅基本类型)。list: 列出节点可用信号。运行时操作,仅影响当前执行上下文。如需持久化,请编辑 .tscn 文件。
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | emit: 信号参数(仅 string/number/bool/null) | |
| flags | No | connect: 连接标志(可选,默认 0) | |
| action | Yes | 操作类型 | |
| node_path | No | list: 节点路径 | |
| method_name | No | connect/disconnect: 目标方法名称 | |
| signal_name | No | connect/disconnect/emit: 信号名称 | |
| source_path | No | connect/disconnect/emit: 源节点路径(如 root/Player) | |
| target_path | No | connect/disconnect: 目标节点路径 | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| load_autoloads | No | 是否加载 Autoload 上下文(默认 true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations by stating it only affects the current execution context and restricting emit parameters to basic types. While annotations already indicate no read-only or destructive behavior, the description clarifies the non-persistent nature, which is valuable for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, listing actions clearly and adding a single guiding note about persistence. Every sentence serves a purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters but no output schema, the description competently covers the tool's behavior and constraints. It could be richer (e.g., explaining flags or node_path usage), but the schema fills most gaps and the description provides a solid high-level overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter descriptions, including action-specific details like 'emit: 信号参数(仅 string/number/bool/null)'. The description largely recaps the schema without adding new parameter semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as '信号操作' (signal operations) and enumerates the four specific actions (connect/disconnect/emit/list). It distinguishes itself from persistent .tscn editing by noting it only affects the current runtime execution context, setting it apart from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states '如需持久化,请编辑 .tscn 文件' (for persistence, edit .tscn file), providing a clear when-not-to-use and a specific alternative. The '运行时操作' (runtime operation) phrase signals the appropriate context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validationA
运行验证、分析错误、验证项目/脚本、导入资源。一键 headless 运行 + 错误分析,或按需单项检查。
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | 可选场景文件路径(run_and_verify) | |
| scope | No | 验证范围(verify_delivery 必填): scene/script/full。其他 action 忽略 | |
| action | Yes | 操作类型 | |
| output | No | Godot 运行时输出全文(analyze_error) | |
| scripts | No | 要验证的脚本路径数组(相对项目)。省略则扫描全部 .gd 文件 | |
| timeout | No | 超时秒数(默认 20) | |
| directory | No | 扫描目录(相对项目,如 "assets/ui") | |
| recursive | No | 递归扫描子目录(默认 true) | |
| extensions | No | 导入文件扩展名(默认常见图片/音频/字体类型) | |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| scene_path | No | 场景路径(scope=scene,相对项目,verify_delivery) | |
| script_path | No | 脚本路径(scope=script,相对项目,verify_delivery) | |
| capture_tree | No | 同时捕获场景树快照(默认 false) | |
| check_scenes | No | 验证场景文件结构(默认 true) | |
| project_path | No | Godot 项目目录路径(可选,默认使用 GODOT_PROJECT_PATH 环境变量或当前目录) | |
| check_scripts | No | 检查断裂脚本引用(默认 true) | |
| exclude_paths | No | 排除的目录路径(相对项目根)。默认排除:.godot, .import | |
| check_resources | No | 检查缺失资源文件(默认 true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, not idempotent, and not destructive. The description adds context like 'headless run' and 'import resources', which implies side effects, but it does not disclose what exactly gets modified or any other behavioral traits such as file writes or potential conflicts. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads capabilities and clearly distinguishes one-click versus individual actions. No filler or redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 12 distinct actions and 18 parameters, but the description only mentions a subset (validation, error analysis, import). It does not cover actions like 'assert', 'stress', 'export_build', or 'verify_delivery'. The schema provides details, but the description lacks a full overview needed for a complex multi-action tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 18 parameters, so the baseline is 3. The description does not add any parameter-level detail beyond what the schema already provides, merely summarizing the action types at a high level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states multiple specific actions (run validation, analyze errors, validate project/scripts, import resources) with a clear resource scope. However, it does not explicitly differentiate from sibling tools like 'project' or 'script' that might overlap in validation tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage contexts such as 'one-click headless run + error analysis' or 'on-demand individual checks', giving some guidance. But it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflowC
Development workflow tools. dev_loop: execute GDScript with optional validation, bridge queries, and state saving. scene_snapshot: capture structured scene tree snapshot. batch_validate: validate multiple GDScript files at once.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | dev_loop: GDScript code to execute (snippet or full extends SceneTree) | |
| action | Yes | Action type | |
| bridge | No | dev_loop: Optional Game Bridge for screenshot/query validation | |
| verify | No | dev_loop: Also run project validation after execution (default: false) | |
| scripts | No | batch_validate: Array of script paths relative to project | |
| timeout | No | dev_loop: Timeout per step in seconds (default: 30) | |
| max_depth | No | scene_snapshot: Max tree depth (default: 5) | |
| acceptance | No | dev_loop: Optional acceptance criteria | |
| godot_path | No | 覆盖 Godot 二进制路径(可选,优先于项目配置和环境变量) | |
| save_state | No | dev_loop: Save session state to file | |
| scene_path | No | scene_snapshot: Scene file path relative to project | |
| project_path | No | Path to Godot project directory | |
| load_autoloads | No | dev_loop: Load Autoload context (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false (readOnlyHint: false, idempotentHint: false, destructiveHint: false), so the description carries the burden of disclosing side effects. It does not mention that dev_loop executes arbitrary GDScript (potentially destructive), that scene_snapshot may be read-only, or that batch_validate might modify files. No behavioral traits beyond the annotation values are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two sentences with no fluff. However, it achieves brevity by omitting three of the six actions, making it incomplete. Every sentence earns its place, but the structure is not fully informative for the tool's actual breadth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex: 13 parameters, 6 action types, nested objects, and no output schema. The description covers only three actions and lacks high-level guidance or return-value explanations. It is insufficient for an agent to correctly invoke the full range of functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all 13 parameters have descriptions in the input schema. The description adds some meaning for dev_loop by mentioning optional validation, bridge queries, and state saving, but it does not compensate for the actions it omits (create_files, run_verify, diff_scenes). The schema does the heavy lifting, and the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three specific actions (dev_loop, scene_snapshot, batch_validate) with clear verbs and resources, giving a sense of the tool's scope. However, it omits three other actions present in the schema (create_files, run_verify, diff_scenes), and the generic phrase 'Development workflow tools' does not fully distinguish it from siblings like script or validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of exclusions, prerequisites, or when a sibling tool like script or scene would be more appropriate. The description simply lists actions without contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
30 tool updates
v0.32.11- Added
analysis - Removed
android - Changed
animtree1 field changed- added
Input schema / properties / sub_actionAdded value: +{ + "description": "animtree_state_edit 的子操作:set_position 设置状态位置(需 state_name + position);set_blend 设置混合参数(需 parameter_name + value)", + "enum": [ + "set_position", + "set_blend" + ], + "type": "string" +}
- Removed
asset - Added
audit - Removed
blender - Changed
cpp3 fields changed- changed
Input schema / properties / godot_version / defaultPrevious value: -"4.6"New value: +"4.7" - changed
Input schema / properties / godot_version / descriptionPrevious value: -"Godot 版本(4.4/4.5/4.6,决定 godot-cpp clone tag 与 .gdextension compatibility_minimum,默认 4.6)"New value: +"Godot 版本(4.4–4.7。决定 godot-cpp clone ref 与 SConstruct api_version、.gdextension compatibility_minimum;4.6/4.7 走 godot-cpp master(v10)+api_version(无 godot-4.x-stable ref),4.4/4.5 用 godot-4.x-stable 分支。默认 4.7)" - changed
Input schema / properties / godot_version / enumPrevious value: -[ - "4.4", - "4.5", - "4.6" -]New value: +[ + "4.4", + "4.5", + "4.6", + "4.7" +]
- Removed
csv_to_resources - Removed
debug - Removed
editor - Removed
engine - Changed
game6 fields changed- changed
Input schema / properties / method / descriptionPrevious value: -"game_query/game_write/game_input/game_wait/game_playtest 的具体方法。game_query: ping, get_tree, find_nodes, get_node_properties, get_node_layout, get_performance, get_viewport_info, take_screenshot, get_errors (查询游戏运行时错误,支持 since_seq 增量 + clear 读即焚), clear_errors (清空错误 buffer)。game_write: set_node_property, call_method。game_input: send_key, send_mouse_click, send_mouse_move, send_text, send_touch, send_drag。game_wait: wait_for_node, wait_for_property。game_playtest: playtest.seed (锁全局 RNG,仅覆盖 randi/randf), playtest.fixed_delta (锁 physics 步长,delta=1/hz), playtest.step (单步推进 N 帧,走 coroutine 延迟响应), playtest.snapshot (快照场景树属性,不保信号/物理/已free节点), playtest.restore (从快照恢复属性)"New value: +"game_query/game_write/game_input/game_wait/game_playtest 的具体方法。game_query: ping, get_tree, find_nodes (支持 root 参数限定子树搜索范围,推荐绝对路径如 /root/Main;节点不存在时报错非静默全树), get_node_properties, get_node_layout, get_performance, get_viewport_info, take_screenshot, get_errors (查询游戏运行时错误,支持 since_seq 增量 + clear 读即焚), clear_errors (清空错误 buffer)。game_write: set_node_property, call_method (协程方法默认 fire-and-forget,返 {coroutine:true} 标记+说明;传 params.await_completion=true 走延迟响应等待返回值,长协程注意调大 timeout)。game_input: send_key, send_mouse_click (button 支持 int 1-9/left/right/middle), send_mouse_move, send_text, send_touch, send_drag, send_input_sequence (帧定时时间线,延迟响应)。game_wait: wait_for_node, wait_for_property。game_playtest: playtest.seed (锁全局 RNG,仅覆盖 randi/randf), playtest.fixed_delta (锁 physics 步长,delta=1/hz), playtest.step (单步推进 N 帧,走 coroutine 延迟响应), playtest.snapshot (快照场景树属性,不保信号/物理/已free节点), playtest.restore (从快照恢复属性)。G1 control 层: playtest.freeze (冻结 tree.paused), playtest.unfreeze (解冻), playtest.step_until (推进至 conditions 满足/帧尽/wall 超时,结构化条件 {path,property,op,value}[] AND,不引入 Expression)" - changed
Input schema / properties / node_path / descriptionPrevious value: -"monitor_start: 要监控的节点路径(如 root/Player)"New value: +"monitor_start: 要监控的节点路径(如 /root/Player)" - changed
Input schema / properties / params / descriptionPrevious value: -"方法参数。game_query: 因方法而异。get_errors {since_seq?:int(默认0,只返回 seq>since_seq 的), clear?:bool(默认false,查询后清空 buffer)}。game_write: set_node_property {path, property, value}, call_method {path, method, args}。game_input: send_key {key, pressed}, send_mouse_click {x, y, button, pressed}, send_mouse_move {x, y}, send_text {text}, send_touch {x, y, pressed, index}, send_drag {x, y, index, relative, speed}。game_wait: wait_for_node {path}, wait_for_property {path, property, value}。game_playtest: playtest.seed {seed:int}, playtest.fixed_delta {hz:int}, playtest.step {frames:int(1-60)}, playtest.snapshot/restore 无参数"New value: +"方法参数。game_query: 因方法而异。get_errors {since_seq?:int(默认0,只返回 seq>since_seq 的), clear?:bool(默认false,查询后清空 buffer)}。game_write: set_node_property {path, property, value}, call_method {path, method, args}。call_method 默认只读白名单(get/has_*/get_meta 等),env GODOT_MCP_BRIDGE_EXTRA_METHODS=method1,method2 可扩展(含写方法如 take_damage);EXTRA_METHODS_BLOCKLIST(free/queue_free/set_script/call/emit_signal 等)是不可覆盖硬底线。args 按方法声明类型自动强转(传 [1,2,3] 给 Vector3 参数会正确转换)。方法不存在时返回 did-you-mean 建议。response 含 undoable=false(call 不可 undo)。game_input: send_key {key, pressed}, send_mouse_click {x, y, button, pressed}, send_mouse_move {x, y}, send_text {text}, send_touch {x, y, pressed, index}, send_drag {x, y, index, relative, speed}, send_input_sequence {timeline:[{at_frame:1-600(开窗后第N帧),type:action|key|mouse_click|mouse_move|touch|drag,...事件参数}], settle_frames?:int(0-600), wall_budget_ms?:int(1000-50000), 事件≤256}(action 字段 name/pressed/strength?,其余 type 字段同各 send_*;frozen 下自动开窗播放+完成 refreeze)。game_wait: wait_for_node {path}, wait_for_property {path, property, value}。game_playtest: playtest.seed {seed:int}, playtest.fixed_delta {hz:int}, playtest.step {frames:int(1-60)}, playtest.snapshot/restore 无参数。G1 control: playtest.freeze/unfreeze 无参数, playtest.step_until {conditions:[{path:String,property:String,op:String(==/!=/</>/<=/>=),value:标量/几何}], max_frames?:int(1-600,默认600), wall_budget_ms?:int(1000-50000,默认30000)}" - changed
Input schema / properties / port / descriptionPrevious value: -"game_bridge_install: 桥接监听端口(当前忽略,始终 9081)"New value: +"game_bridge_install: 期望的起始监听端口(实际端口由游戏侧 env GODOT_MCP_BRIDGE_PORT 设起点,被占自动递增避让;此参数不影响行为,保留兼容)。实际端口见 ping 响应与实例 registry" - changed
Input schema / properties / source_script_path / descriptionPrevious value: -"install_override/uninstall_override: 源调试脚本绝对路径(必须在 ALLOWED_PROJECT_PATHS 白名单内,拷贝到项目根注册为 autoload/MCPOVERRIDE_<basename>)"New value: +"install_override/uninstall_override: 源调试脚本绝对路径(必须在 ALLOWED_PROJECT_PATHS 白名单内,拷贝到项目根注册为 MCPOVERRIDE_<basename> autoload;插入 [autoload] 段末尾=在游戏 autoload 之后加载,脚本 _ready 可直接访问游戏单例,无需 await <Singleton>.ready)" - changed
Input schema / properties / timeout / descriptionPrevious value: -"game_query/game_write/game_input/game_wait: 超时时间(毫秒,默认 10000)。game_wait 的 timeout 用作整个轮询窗口的总预算(在窗口内反复探测直到条件成立)"New value: +"game_query/game_write/game_input/game_wait: 超时时间(毫秒,默认 10000)。game_wait 的 timeout 用作整个轮询窗口的总预算(在窗口内反复探测直到条件成立)。send_input_sequence 延迟响应,timeout 自动放宽至 wall_budget+10s(上限 65000)"
- Removed
godot_advanced_tool - Removed
godot_list_dynamic_routes - Removed
godot_list_instances - Removed
godot_select_instance - Changed
help1 field changed- changed
Input schema / properties / tool_name / enumPrevious value: -[ - "android", - "animation", - "animation_track", - "animtree", - "asset", - "audio", - "blender", - "cpp", - "csv_to_resources", - "docs", - "editor", - "game", - "godot_advanced_tool", - "godot_get_context", - "godot_list_dynamic_routes", - "godot_list_instances", - "godot_select_instance", - "help", - "load_skill", - "manage_tools", - "material", - "nav", - "particles", - "physics", - "profiler", - "project", - "runtime", - "runtime_assert", - "scene", - "screenshot", - "script", - "self_update", - "signal", - "testing", - "tilemap", - "ui", - "validation", - "workflow" -]New value: +[ + "analysis", + "android", + "animation", + "animation_track", + "animtree", + "asset", + "audio", + "audit", + "blender", + "confirm_and_execute", + "cpp", + "csv_to_resources", + "debug", + "docs", + "editor", + "engine", + "game", + "godot_advanced_tool", + "godot_get_context", + "godot_list_dynamic_routes", + "godot_list_instances", + "godot_select_instance", + "help", + "load_skill", + "manage_tools", + "material", + "nav", + "particles", + "physics", + "profiler", + "project", + "qa", + "runtime", + "runtime_assert", + "scene", + "screenshot", + "script", + "self_update", + "signal", + "testing", + "tilemap", + "translation", + "ui", + "uid", + "validation", + "workflow" +]
- Removed
manage_tools - Removed
nav - Removed
physics - Changed
project3 fields changed- changed
Input schema / properties / godot_version / defaultPrevious value: -"4.4"New value: +"4.7" - changed
Input schema / properties / godot_version / descriptionPrevious value: -"CI 中使用的 Godot 版本(默认 4.4)"New value: +"CI 中使用的 Godot 版本(默认 4.7)" - changed
Input schema / properties / max_depth / descriptionPrevious value: -"最大搜索深度(默认 3)"New value: +"最大搜索深度(默认 3,钳制上限 10)"
- Added
qa - Changed
runtime2 fields changed- added
Input schema / properties / quit_flagAdded value: +{ + "default": "gquit", + "description": "run_tests 的 GUT 退出标志。默认 gquit(GUT ≤9.5);GUT 9.6+ 移除 -gquit(报 Unknown arguments: -gquit)时切 gexit", + "enum": [ + "gquit", + "gexit" + ], + "type": "string" +} - changed
Input schema / properties / timeout / descriptionPrevious value: -"自动停止秒数(默认 30)"New value: +"自动停止秒数(默认 30。游戏冷启动 >30s 的项目传更大值如 120;wait_for_bridge 时自动取 max(bridge_timeout+10, timeout) 防与 bridge 就绪 race)"
- Changed
runtime_assert4 fields changed- added
Input schema / properties / max_diff_ratioAdded value: +{ + "description": "screenshot_diff: 允许的差异像素占比上限(0-1,默认 0.05)。严格像素回归传 0;常规视觉回归建议以同布局好图对校准(本仓实测同布局好图对 ≈0.176,勿低于该量级)", + "type": "number" +} - changed
Input schema / properties / project_path / descriptionPrevious value: -"项目路径(可选)"New value: +"项目路径(screenshot_diff 必填:解析 user:// 截图落盘位置)" - changed
Input schema / properties / reference / descriptionPrevious value: -"screenshot_diff: 参考截图路径(res:// 或绝对路径)"New value: +"screenshot_diff: 参考截图路径(res://、项目相对或绝对路径;须在白名单内)" - changed
Input schema / properties / threshold / descriptionPrevious value: -"screenshot_diff: 相似度阈值(0-1,默认 0.85)"New value: +"screenshot_diff: 像素差异容忍阈值(0-1,默认 0.12)。per-pixel 归一化 RGB 距离严格大于此值才计为差异像素;值越小越严格"
- Changed
scene21 fields changed- changed
Input schema / properties / instance_path / descriptionPrevious value: -"instance_scene: 要实例化的场景文件(res://scenes/player.tscn)"New value: +"要实例化的场景(res://…tscn)" - changed
Input schema / properties / name / descriptionPrevious value: -"create_3d_node: 节点名称"New value: +"名称(create_3d_node)" - changed
Input schema / properties / operations / descriptionPrevious value: -"commit: 批量操作列表(tile_set/tile_fill/tile_erase/tile_clear/tileset_assign/node_property/node_add)"New value: +"commit: 批量操作列表(enum 见 op 字段;铺设/TileSet 层配置/节点)" - added
Input schema / properties / operations / items / properties / collision_layerAdded value: +{ + "description": "物理层位掩码(physics add/set)", + "type": "number" +} - added
Input schema / properties / operations / items / properties / collision_maskAdded value: +{ + "description": "物理遮罩位掩码(physics add/set)", + "type": "number" +} - added
Input schema / properties / operations / items / properties / layerAdded value: +{ + "description": "layer 索引,0 起(physics set/remove、cdata set)", + "type": "number" +} - added
Input schema / properties / operations / items / properties / layersAdded value: +{ + "description": "导航层位掩码(navigation add,可选)", + "type": "number" +} - changed
Input schema / properties / operations / items / properties / name / descriptionPrevious value: -"节点名称(node_add)"New value: +"节点名(node_add)/数据层名(cdata add)" - added
Input schema / properties / operations / items / properties / navigation_layerAdded value: +{ + "description": "导航 layer 索引,0 起(navigation set)", + "type": "number" +} - changed
Input schema / properties / operations / items / properties / node_path / descriptionPrevious value: -"TileMap/TileMapLayer 节点路径(tile 操作必需)"New value: +"TileMap/TileMapLayer 节点路径" - added
Input schema / properties / operations / items / properties / one_wayAdded value: +{ + "description": "单向碰撞(collision set,默认 false)", + "type": "boolean" +} - changed
Input schema / properties / operations / items / properties / op / enumPrevious value: -[ - "tile_set", - "tile_fill", - "tile_erase", - "tile_clear", - "tileset_assign", - "node_property", - "node_add" -]New value: +[ + "tile_set", + "tile_fill", + "tile_erase", + "tile_clear", + "tileset_assign", + "node_property", + "node_add", + "tileset_physics_layer_add", + "tile_collision_set", + "tileset_physics_layer_set", + "tileset_physics_layer_remove", + "tileset_navigation_layer_add", + "tile_navigation_set", + "tileset_custom_data_layer_add", + "tile_custom_data_set", + "tile_collision_clear" +] - added
Input schema / properties / operations / items / properties / physics_layerAdded value: +{ + "description": "物理 layer 索引,0 起(collision set/clear)", + "type": "number" +} - added
Input schema / properties / operations / items / properties / pointsAdded value: +{ + "description": "polygon 点集 [{x,y}](rect 省略;逐项运行时校验)", + "type": "array" +} - added
Input schema / properties / operations / items / properties / shapeAdded value: +{ + "description": "rect=全格四点;polygon=自定义点集", + "enum": [ + "rect", + "polygon" + ], + "type": "string" +} - changed
Input schema / properties / operations / items / properties / tileset_path / descriptionPrevious value: -"TileSet 资源路径(tileset_assign)"New value: +"TileSet .tres 路径(层配置 9 op 限 res:// 项目内)" - changed
Input schema / properties / operations / items / properties / type / descriptionPrevious value: -"节点类型(node_add)"New value: +"节点类型(node_add)/int|float|bool|string|color|vector2(cdata add)" - changed
Input schema / properties / operations / items / properties / value / descriptionPrevious value: -"属性值"New value: +"属性值(node_property)/数据值(cdata set,须匹配层类型)" - changed
Input schema / properties / stop_on_error / descriptionPrevious value: -"commit: 遇错是否停止(默认 true)"New value: +"遇错是否停止(默认 true;false 时失败不阻止后续与 .tres 写盘)" - changed
Input schema / properties / type / descriptionPrevious value: -"create_3d_node: 节点类型(仅限白名单)"New value: +"类型(create_3d_node,白名单)" - changed
Input schema / properties / value / descriptionPrevious value: -"set_instance_property: 属性值(string/number/bool/null/array)"New value: +"属性值(set_instance_property)"
- Changed
screenshot8 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Action type: capture (take a screenshot) or analyze (AI visual analysis of an image)"New value: +"Action type: capture (take a screenshot), analyze (AI visual analysis of an image), or diff (pixel-level comparison of two PNG images)" - changed
Input schema / properties / action / enumPrevious value: -[ - "capture", - "analyze" -]New value: +[ + "capture", + "analyze", + "diff" +] - added
Input schema / properties / diff_pathAdded value: +{ + "description": "diff: 可选,差异图输出路径。差异像素染纯红 (255,0,0),其余保留 a 图原色。不提供则不写文件。", + "type": "string" +} - added
Input schema / properties / image_aAdded value: +{ + "description": "diff: 基准图(a 图)路径。相对路径需 project_path;两图尺寸必须一致。", + "type": "string" +} - added
Input schema / properties / image_bAdded value: +{ + "description": "diff: 对比图(b 图)路径。路径策略同 analyze 的 image_path(白名单校验)。", + "type": "string" +} - added
Input schema / properties / thresholdAdded value: +{ + "default": 0.12, + "description": "diff: per-pixel 归一化欧氏距离阈值 sqrt(Δr²+Δg²+Δb²)/(√3×255),0-1,默认 0.12。恰好等于阈值不计差(严格大于才计)。忽略 alpha 只比 RGB。", + "type": "number" +} - added
Input schema / properties / vision_questionAdded value: +{ + "description": "vision_route=true 时传给视觉模型的上下文(可选,如\"我在调试 Player 走路动画\")。", + "type": "string" +} - added
Input schema / properties / vision_routeAdded value: +{ + "default": false, + "description": "Phase 2 Vision Routing:开启时调视觉模型(groq)把图片翻译成文字描述,返回纯文本(不含 image block),让纯文本模型(DeepSeek 等)也能\"看懂\"截图。失败时 fallback 到 detail 分层 + 追加 note。需 GODOT_MCP_VISION_KEY 环境变量。", + "type": "boolean" +}
- Removed
self_update - Removed
testing - Removed
tilemap - Removed
ui
5 tool updates
v0.26.0- Added
csv_to_resources - Added
debug - Added
engine - Changed
game2 fields changed- changed
Input schema / properties / method / descriptionPrevious value: -"game_query/game_write/game_input/game_wait/game_playtest 的具体方法。game_query: ping, get_tree, find_nodes, get_node_properties, get_node_layout, get_performance, get_viewport_info, take_screenshot。game_write: set_node_property, call_method。game_input: send_key, send_mouse_click, send_mouse_move, send_text, send_touch, send_drag。game_wait: wait_for_node, wait_for_property。game_playtest: playtest.seed (锁全局 RNG,仅覆盖 randi/randf), playtest.fixed_delta (锁 physics 步长,delta=1/hz), playtest.step (单步推进 N 帧,走 coroutine 延迟响应), playtest.snapshot (快照场景树属性,不保信号/物理/已free节点), playtest.restore (从快照恢复属性)"New value: +"game_query/game_write/game_input/game_wait/game_playtest 的具体方法。game_query: ping, get_tree, find_nodes, get_node_properties, get_node_layout, get_performance, get_viewport_info, take_screenshot, get_errors (查询游戏运行时错误,支持 since_seq 增量 + clear 读即焚), clear_errors (清空错误 buffer)。game_write: set_node_property, call_method。game_input: send_key, send_mouse_click, send_mouse_move, send_text, send_touch, send_drag。game_wait: wait_for_node, wait_for_property。game_playtest: playtest.seed (锁全局 RNG,仅覆盖 randi/randf), playtest.fixed_delta (锁 physics 步长,delta=1/hz), playtest.step (单步推进 N 帧,走 coroutine 延迟响应), playtest.snapshot (快照场景树属性,不保信号/物理/已free节点), playtest.restore (从快照恢复属性)" - changed
Input schema / properties / params / descriptionPrevious value: -"方法参数。game_query: 因方法而异。game_write: set_node_property {path, property, value}, call_method {path, method, args}。game_input: send_key {key, pressed}, send_mouse_click {x, y, button, pressed}, send_mouse_move {x, y}, send_text {text}, send_touch {x, y, pressed, index}, send_drag {x, y, index, relative, speed}。game_wait: wait_for_node {path}, wait_for_property {path, property, value}。game_playtest: playtest.seed {seed:int}, playtest.fixed_delta {hz:int}, playtest.step {frames:int(1-60)}, playtest.snapshot/restore 无参数"New value: +"方法参数。game_query: 因方法而异。get_errors {since_seq?:int(默认0,只返回 seq>since_seq 的), clear?:bool(默认false,查询后清空 buffer)}。game_write: set_node_property {path, property, value}, call_method {path, method, args}。game_input: send_key {key, pressed}, send_mouse_click {x, y, button, pressed}, send_mouse_move {x, y}, send_text {text}, send_touch {x, y, pressed, index}, send_drag {x, y, index, relative, speed}。game_wait: wait_for_node {path}, wait_for_property {path, property, value}。game_playtest: playtest.seed {seed:int}, playtest.fixed_delta {hz:int}, playtest.step {frames:int(1-60)}, playtest.snapshot/restore 无参数"
- Added
testing
37 tool updates
v0.25.7- First observed
android - First observed
animation - First observed
animation_track - First observed
animtree - First observed
asset - First observed
audio - First observed
blender - First observed
confirm_and_execute - First observed
cpp - First observed
docs - First observed
editor - First observed
game - First observed
godot_advanced_tool - First observed
godot_get_context - First observed
godot_list_dynamic_routes - First observed
godot_list_instances - First observed
godot_select_instance - First observed
help - First observed
load_skill - First observed
manage_tools - First observed
material - First observed
nav - First observed
particles - First observed
physics - First observed
profiler - First observed
project - First observed
runtime - First observed
runtime_assert - First observed
scene - First observed
screenshot - First observed
script - First observed
self_update - First observed
signal - First observed
tilemap - First observed
ui - First observed
validation - First observed
workflow
TDQS
Scored across 26 tools
Direct overlaps exist: `animation` and `animation_track` both expose track/keyframe operations, `screenshot` overlaps with `game`/`qa` capture capabilities, and `workflow` overlaps with `script`, `validation`, and `runtime_assert`. These tools have boundaries but not obvious ownership, so an agent will frequently need to pick between near-equivalent options.
Names are mostly lowercase snake_case and readable, but the convention is not consistent: noun domains (`scene`, `script`, `game`) are mixed with verb-style names (`confirm_and_execute`, `load_skill`) and abbreviations (`qa`, `cpp`, `animtree`). The `animation`/`animation_track`/`animtree` grouping is especially hard to infer from naming alone.
26 tools sits above the already-heavy threshold, and many top-level tools are actually umbrella namespaces containing many subactions, making the real surface much larger. Several tools such as `animation_track`, `workflow`, and `help` could be merged or removed without losing functionality.
Core Godot workflows are well covered: project, scene, script, runtime, validation, animation, audio, material, particles, profiling, runtime assertions, QA, static analysis, and documentation. The main gaps are dedicated export/build/physics/tilemap tooling and some file lifecycle operations, but these are secondary to the server's primary purpose.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
An MCP server that gives your AI access to the source code and docs of all public github repos
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that gives AI assistants direct control over Godot 4 game development projects. It enables launching the editor, running projects, creating and editing scenes, writing GDScript, and inspecting assets through natural language commands.4410 npm4MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.3321 npm2MIT
- AlicenseCqualityAmaintenanceAn MCP server providing AI assistants with 149 tools to fully control the Godot game engine, including runtime code execution, scene manipulation, physics, audio, networking, animation, and more.10092 npm456MIT
- AlicenseNot gradedqualityAmaintenanceA security-first MCP server and Godot editor addon enabling AI agents to observe and control Godot games through bounded, permission-gated tools for debugging, input automation, and project editing.MIT