Skip to main content
Glama

Look at and drive the running game session

godot_game

Inspect and control a running Godot game live: read nodes, set values, step frames with input, and reload edited scripts without restarting to test fixes.

Instructions

Ask the game that godot_session started. op tree (the live node tree: path, class, script; root, depth, limit), get (values now: watch ["Hero.position", "Hero.is_on_floor()"]), set (target "Hero.position", value "Vector3(0, 30, 0)" as Godot writes values), call (node, method, args), eval (a Godot Expression with the scene root as base, e.g. get_node("Hero").velocity.length()), step (play frames frames with an input timeline counted from this step, sample watch, stop early until a condition holds; the same frame-exact input as godot_play), signals (record these signals; later steps list when they fired), layout (3D objects: global position, size, lowest point, and whether each rests on, floats above or sinks into what is below, plus scale mistakes), ray (from, to: what a physics ray hits), ui (visible controls at one or more window sizes, with clipped text, off-screen panels, overlapping buttons and small targets), errors (what the game printed since the last call), reload (load the scripts you edited into the running game: every node keeps its values and runs the new code from the next step, so you try a fix without loading the world again; files, default every script changed since the last reload; a script that does not compile is left as it was). Every answer ends with the errors and warnings the game printed since the last call, runtime errors with their call chain. Time only moves on a step, so the session stays deterministic. Use it to try a fix live, find a state that is hard to reach, or watch a long scenario in parts.

Input Schema

NameRequiredDescriptionDefault
opYeswhat to do
toNoray: end
argsNocall: arguments as Godot values
exprNoeval: the expression
fromNoray: start, Vector3(...) or Vector2(...)
nodeNocall: node path from the scene root
pathNoThe project folder, or any file or folder inside it (Godotwright walks up to project.godot). Relative paths start at the server's folder. Default: the current project.
rootNotree: start at this node (default the scene root)
depthNotree: levels to show (default 3)
everyNostep: sample every n frames (default: about 10 samples)
filesNoreload: res:// scripts to reload (default: every script changed since the session started or the last reload)
inputNostep: "0 press jump; 10 release jump; 20 hold right 30"
limitNotree: nodes to show (default 80)
sizesNoui: window sizes such as 1280x720 or 720x1280 (default the size the project sets)
untilNostep: stop at the first frame where this holds, "Hero.is_on_floor() == true"
valueNoset: the new value as Godot writes it
watchNoget and step: values to read, Node.property or Node.method()
framesNostep: frames to run (default 60)
methodNocall: method name
targetNoset: Node.property
signalsNosignals: Node.signal to record

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.2

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond the annotations: time advances only on step, answers end with printed errors and warnings, reload preserves node values and leaves non-compiling scripts unchanged, and runtime errors include call chains. These are exactly the operational traits an agent needs for a stateful live-game tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and long, but the length is justified by twelve operations and twenty-one parameters. It front-loads the core purpose and keeps detail focused, though a bulleted op list would improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex live-game inspector and driver with no output schema, the description covers operation semantics, defaults, determinism, error reporting, and reload behavior. It is complete enough for an agent to know what the tool can do and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the parameter schema already carries most semantics. The description still adds useful op-level meaning, including examples for watch/until/input/sizes and mappings from each operation to its relevant parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a precise verb-and-resource purpose: inspect and drive the running game started by godot_session. It enumerates all supported operations, making clear this is a multiplexed live-game control tool rather than a session launcher or playback tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context: try a fix live, reach hard-to-reach states, or watch a long scenario in parts. It also distinguishes itself from godot_session and godot_play, though it does not explicitly state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.