Skip to main content
Glama

project_run

Launch your Godot project from the editor. Supports main, current, or custom scene modes and reports live game status.

Instructions

Run (play) the Godot project from the editor.

Modes:

  • "main": Run the project's main scene (default).

  • "current": Run the currently open scene.

  • "custom": Run a specific scene (requires scene).

Idempotent: if the project is already running, returns success with data.was_already_running=true (no scene switch). To switch scenes, call project_manage(op="stop") first, then project_run again.

After starting playback, waits briefly for the Godot AI game helper to check in. The response includes game_status, helper_live (status == "live"), session_active (status not in {"not_live", "stopped"}), and any recent_errors observed during the run window. The top-level booleans mirror the same fields inside game_status. game_status.status="not_live" means playback launched but the game did not become live before the helper-ready window elapsed; "no_helper" means the project has no _mcp_game_helper autoload, as with some headless/custom-main-loop setups (helper_live=false, session_active=true); "stopped" means playback stopped or never became active before liveness could be confirmed (helper_live=false, session_active=false); "break" means the game process is parked in a remote-debugger break — during boot this is a GDScript parse/load error that froze the game before the helper could register, and the response names the failing script when captured (game_status.break = {reason, can_debug, pre_live}). A game at a break cannot continue on its own: call project_manage(op="stop"), fix the error, and relaunch. Poll editor_state to see late transitions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNo"main" | "current" | "custom". Default "main".main
sceneNoScene path (e.g. "res://levels/level1.tscn"). Required for "custom".
autosaveNoWhen True (default), Godot persists in-memory MCP scene mutations to disk before running. Pass False for smoke tests where MCP edits should stay in memory.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses idempotency, waits briefly for the helper, defines all status values (not_live, no_helper, stopped, break), explains the implications of a break state, and advises on recovery. Autosave side effects are also mentioned. This is exceptionally transparent behavior disclosure.

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 longer than average but every sentence adds essential information. It is well-structured with paragraphs for modes, idempotency, and response statuses. While the status explanation is detailed, it's necessary for correct interpretation. No fluff, but the length pushes the boundary of conciseness; still, it earns its place.

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?

Given the tool's complexity (multiple modes, statuses, helper interaction, error states), the description is comprehensive. It covers edge cases like no helper autoload, break during boot with script errors, and late transitions via editor_state. The output schema exists, so return values are structured, but the description explains their semantics fully. This is a complete picture for an AI agent.

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%, and each parameter already has a description. The description adds extra context by explaining the meaning of mode values (e.g., custom requires scene), the autosave use case for smoke tests, and the role of session_id (though not explicitly named, the schema covers it). This adds value beyond the schema without redundancy.

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 clearly states the tool's purpose: 'Run (play) the Godot project from the editor.' It then lists specific modes (main, current, custom) and distinguishes from the sibling tool project_manage by explaining when to stop the project first. This is a specific verb+resource that stands out from siblings.

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

Usage Guidelines5/5

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

Explicit usage guidance is provided: when to use each mode, how to switch scenes (call project_manage(op="stop") first), and the optional autosave behavior for smoke tests. The description also explains what happens if the project is already running, guiding the agent on whether to stop first. This clearly differentiates when to use project_run vs alternatives.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hi-godot/godot-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server