Skip to main content

Overview

The Summer Engine MCP server exposes 23 tools in three categories: Scene (10), Debug (9), and Project (4). All tools require the engine to be running with a project open. If the engine isn’t running, tools return a clear error message. Critical: Value formats. Properties like position, rotation_degrees, and mesh use engine string syntax, not raw JSON objects. See Value Formats below.

Value Formats

When setting properties via summer_set_prop or summer_set_resource_property, use these formats:
TypeFormatExample
Vector3"Vector3(x, y, z)""Vector3(0, 10, 0)"
Vector2"Vector2(x, y)""Vector2(100, 200)"
Color"Color(r, g, b, a)" RGBA 0.0 to 1.0"Color(1, 0.5, 0, 1)"
Transform3D"Transform3D(...)" basis + origin"Transform3D(1,0,0, 0,1,0, 0,0,1, 0,5,0)"
ResourceClass name, auto-instantiated"BoxMesh", "SphereMesh", "StandardMaterial3D"
NumberNative JSON1.5, 42
BooleanNative JSONtrue, false
StringNative JSON"hello"
Wrong: "position": {x: 0, y: 10, z: 0} stays Dictionary, fails
Right: "position": "Vector3(0, 10, 0)" parses to Vector3

Scene Tools (10)

summer_add_node

Add a new node to the scene tree.
ParameterTypeRequiredDescription
parentstringYesParent path, e.g. ./World or ./World/Enemies
typestringYesNode type, e.g. MeshInstance3D, CharacterBody3D
namestringYesName for the new node
Common node types: Node3D, MeshInstance3D, CharacterBody3D, Camera3D, DirectionalLight3D, CollisionShape3D, Area3D, Node2D, Sprite2D, Control, Button, VBoxContainer, AudioStreamPlayer. Example: summer_add_node(parent="./", type="DirectionalLight3D", name="Sun")

summer_set_prop

Set a property on a node. Primary way to configure nodes after adding them.
ParameterTypeRequiredDescription
pathstringYesNode path, e.g. ./World/Player
keystringYesProperty name, e.g. position, mesh, visible
valuestring | number | booleanYesValue in engine string format for complex types
Common properties: position, rotation_degrees, scale, visible, mesh, shadow_enabled, light_energy, fov. Example: summer_set_prop(path="./World/Player", key="position", value="Vector3(0, 1, 0)")

summer_set_resource_property

Set a nested property on a resource attached to a node (e.g., shape size, material color).
ParameterTypeRequiredDescription
nodePathstringYesNode path
resourcePropertystringYesResource property on node, e.g. shape, mesh, material_override
subPropertystringYesProperty on the resource, e.g. size, radius, albedo_color
valuestring | number | booleanYesValue in engine string format
Example: summer_set_resource_property(nodePath="./Player/CollisionShape3D", resourceProperty="shape", subProperty="size", value="Vector3(1, 2, 1)")

summer_remove_node

Remove a node from the scene tree. All children are removed. Cannot remove root. Supports undo.
ParameterTypeRequiredDescription
pathstringYesNode path to remove

summer_save_scene

Save the current scene to disk. Call after making changes to persist them.
ParameterTypeRequiredDescription
pathstringNoSave-as path for creating a new scene file, e.g. res://levels/level2.tscn

summer_open_scene

Open a scene file in the editor. Use to switch between scenes.
ParameterTypeRequiredDescription
pathstringYesScene path, e.g. res://main.tscn

summer_instantiate_scene

Add an existing scene or 3D model as a child node. Use for .tscn prefabs or .glb/.gltf models.
ParameterTypeRequiredDescription
parentstringYesParent node path
scenestringYesScene/model path, e.g. res://player.tscn or res://models/tree.glb
namestringNoOverride the instance name

summer_connect_signal

Connect a signal between two nodes. The receiver must have a script with the specified method.
ParameterTypeRequiredDescription
emitterstringYesNode that fires the signal
signalstringYesSignal name, e.g. body_entered, pressed, timeout
receiverstringYesNode with the handler script
methodstringYesMethod name in receiver’s script
Common signals: body_entered, body_exited, pressed, timeout, area_entered, input_event.

summer_select_node

Select a node in the editor’s scene tree and show it in the inspector.
ParameterTypeRequiredDescription
nodePathstringYesNode path to select
scenePathstringNoOpen this scene first, then select the node

summer_replace_node

Replace a node with a different type or scene, preserving position and children.
ParameterTypeRequiredDescription
pathstringYesNode path to replace
typestringNoNew node type, e.g. RigidBody3D
scenestringNoScene to replace with, e.g. res://enemies/boss.tscn

Debug Tools (9)

summer_get_diagnostics

Quick overview of errors and warnings from the editor console and runtime debugger. Call this first before diving into console or debugger details.
ParametersNone
Workflow: summer_get_diagnostics → if errors, use summer_get_console or summer_get_debugger_errors → fix → summer_get_diagnostics again to verify.

summer_get_console

Read recent messages from the editor’s Output panel. Use after diagnostics indicate console issues.
ParameterTypeRequiredDescription
max_linesnumberNoMax lines to return (default 100)
filterstringNoOnly return lines containing this string
typeenumNoFilter by: error, warning, std, editor

summer_clear_console

Clear the editor’s Output panel. Useful before running the game for a clean slate.
ParametersNone

summer_get_debugger_errors

Read runtime errors and warnings from the debugger (null refs, missing nodes, physics errors). Different from console. These occur while the game is running.
ParameterTypeRequiredDescription
max_errorsnumberNoMax errors to return (default 50)
include_stackbooleanNoInclude stack traces

summer_play

Start running the game in the engine. Use summer_game_snapshot to see what the player sees.
ParameterTypeRequiredDescription
scenestringNoScene to run instead of main scene

summer_stop

Stop the running game. Call before making scene changes. Some operations require the game to be stopped.
ParametersNone

summer_is_running

Check if the game is currently running. Returns the active scene path if running.
ParametersNone

summer_viewport_snapshot

Capture a screenshot of the editor’s 3D/2D viewport (editor camera, not game camera).
ParametersNone

summer_game_snapshot

Capture a screenshot of the running game (player’s view). Call summer_play first. Returns base64 JPEG.
ParametersNone

Project Tools (4)

summer_project_setting

Set a project setting in project.godot.
ParameterTypeRequiredDescription
keystringYesSetting key path, e.g. application/config/name
valuestring | number | booleanYesSetting value
Common settings: application/config/name, application/run/main_scene, display/window/size/viewport_width, physics/3d/default_gravity.

summer_input_map_bind

Set up input controls. Creates the action if it doesn’t exist, then binds events.
ParameterTypeRequiredDescription
namestringYesAction name, e.g. jump, move_forward
eventsarrayYesArray of input event objects
Event format: { type: "key", key: "W" } or { type: "mouse_button", button: 1 } (1=left, 2=right, 3=middle).

summer_get_scene_tree

Get the full scene tree structure of the currently open scene. Returns all nodes with types, paths, and children. Use to understand the scene before making changes.
ParametersNone

summer_import_from_url

Download a file from a URL and import it into the project. Triggers the engine’s full import pipeline. Use for .glb, .gltf, .obj, .png, .ogg, etc.
ParameterTypeRequiredDescription
urlstringYesHTTP(S) URL to download from
pathstringNoTarget path in project. Auto-inferred from URL if omitted.

summer_import_from_url_batch

Download multiple files from URLs in one operation. Single filesystem scan after all downloads. Faster than importing one at a time.
ParameterTypeRequiredDescription
importsarrayYesArray of {url, path} objects

Next Steps


Need help or have questions? Reach out to our founders at founders@summerengine.com or join our community on Discord for fast responses.