Skip to main content
Glama

Ввод в игру

godot_input
Destructive

Inject keyboard, mouse, and joystick input into a running Godot game, including headless sessions, without OS-level input. Advance frames after input to test gameplay.

Instructions

Инъекция ввода в запущенную игру без участии ОС (работает и в headless). mode=action — нажать/отпустить действие InputMap (move_left, jump...), mode=key — клавиша по имени ("SPACE", "A", "ESCAPE"), mode=mouse_button, mode=mouse_motion, mode=joy_button, mode=release_all — отпустить всё. После нажатия имеет смысл выполнить godot_run { mode: "step" }.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
altNo
keyNoИмя клавиши Godot: SPACE, A, ESCAPE, F1...
ctrlNo
metaNo
modeNoaction
shiftNo
actionNo
buttonNoИндекс кнопки мыши (1=левая) или джойстика (0=A)
pressedNo
unicodeNoUnicode-код символа для mode=text
positionNo
relativeNo
strengthNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.0.1

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, so the mutation profile is covered. The description adds real context beyond that: input is simulated inside the engine rather than via the OS, and it functions even in headless mode. It does not explain reversibility or the required step to actually advance the game, but the core behavioral trait is disclosed.

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?

Dense but front-loaded: the purpose and the headless/no-OS constraint come first, followed by the mode list and the follow-up step. Every sentence carries information, though the mode enumeration runs together without clear grouping.

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

Completeness3/5

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

For a 13-parameter tool with no output schema and low schema coverage, the description covers the modes but leaves parameter-to-mode applicability unstated and never mentions the response. It is usable but leaves real gaps an agent must guess at, e.g. what pressed/strength mean for joy_button.

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

Parameters3/5

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

With 13 parameters at only 23% schema coverage, the description should compensate more than it does. It names the modes and gives key/action examples, but never maps the many modifier and motion parameters (alt/ctrl/meta/shift, pressed, strength, position, relative) to their modes. Notably the schema's unicode param references mode=text, which the description's mode list omits.

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?

States a specific verb+resource (input injection into a running game) plus the key distinguishing constraint (no OS involvement, works headless). Enumerates the six modes with examples for action and key, so an agent can tell this apart from godot_run/godot_editor siblings.

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?

Gives a concrete workflow cue: after pressing, run godot_run { mode: "step" }. This explains the intended sequence clearly, but there is no explicit when-not-to-use guidance or note about which tool to prefer for reading state instead of injecting it.

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