Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Summer Engine

NPM · SUMMER-ENGINE · 2 COMPONENTS

The game engine built for AI. Any agent makes a multiplayer game and publishes it.

+3 this week 74 Trust /100

Last scanned (23 hours ago)

Scores higher than 48% of npm servers

Category Entertainment and Games

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 32 of 105 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 6 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability75
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 21329 tokens (~229/item across 93 items; 93 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management63
  • Stability observed for 19 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 94 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

  • 30 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +16
    • Malware scan: unverified → pass ▲ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed npm/summer-engine@4.5.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 105 packages
Packages resolved 105
Stale 32
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 93 exposed · ~21,136 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
summer_add_node ~158

Add one node of any type to the scene at scenePath (it need not be the open tab) and save it. For 3 or more edits, write one summer_run_script instead. Next: summer_set_prop. Guide: summer_docs_read {"id":"tool/add-node"}

NameTypeReqDescription
namestringyesName for the new node, e.g. 'Player', 'MainCamera'
parentstringyesParent node path, e.g. './World' or './World/Enemies'
scenePathstringyesTarget scene path, e.g. 'res://main.tscn'
typestringyesSummer Engine node type, e.g. 'MeshInstance3D', 'CharacterBody3D'

No output schema declared.

No examples provided.

summer_align_distribute_3d ~159

Align 2 to 16 3D nodes on one world axis (min, center, max) or space them equally (centers or gaps) from their visible bounds, then save the scene. One undo step. Guide: summer_docs_read {"id":"tool/align-distribute-3d"}

NameTypeReqDescription
axisarrayyesFinite, non-zero world axis [x,y,z]; normalization is automatic.
modestringyesAlignment anchor or equal-spacing policy.
scenePathstringyesExact target scene, e.g. 'res://levels/market.tscn'.
subjectPathsarrayyesTwo to sixteen exact nonduplicate Node3D paths in the order to align or distribute.

No output schema declared.

No examples provided.

summer_api_docs ~122

Look up an engine class offline before writing script code: inherits, properties, methods, signals and constants, or one member. Lists only members declared on that class (walk inherits). No engine needed. Next: summer_run_script.

NameTypeReqDescription
class_namestringyesEngine class name, e.g. 'BoxShape3D', 'CharacterBody3D', 'SurfaceTool'. Case-insensitive.
memberstring–Optional property/method/signal/constant name to fetch just that member, e.g. 'size' or 'move_and_slide'.

No output schema declared.

No examples provided.

summer_attach_to_surface ~456

Turn a piece so its measured back faces a wall, ceiling or floor found by a ray, keep it upright and seat it at a standoff: pipes, lamps, signs. Saves the scene; a refused seat puts the piece back. Guide: summer_docs_read {"id":"tool/attach-to-surface"}

NameTypeReqDescription
backAxisstring–The subject's LOCAL axis that must face into the surface, e.g. '-z' for a piece whose back is -Z. Measure it first with summer_inspect_asset.
collisionMaskinteger–Godot 3D physics layer mask for physics queries.
maxDistancenumber–Maximum ray length when looking for the surface.
maxMovenumber–Refuse, changing nothing, when the piece would end farther than this from where it starts (scene units). Place the piece near its mount first; raise this only for a deliberate long move.
placeAtstring–current (default): the piece keeps its height and its place along the surface and only moves along the surface normal, so its measured back face ends at standoff from the surface. hit: it also slides…
rayobject–Explicit ray that finds the surface plane and its normal. Pass this or surface (or both).
scenePathstringyesExact scene to read or change, e.g. 'res://levels/street.tscn'. It must be open in the editor (any tab).
standoffnumber–Gap between the subject's back face and the surface, in scene units.
subjectstringyesPiece to mount: exact node path relative to the scene root, e.g. './Facade/Wall_01'.
surfacestring–Surface node (wall, ceiling, floor). Without ray, the ray runs from the subject's origin to the nearest point of this node's bounds; with ray, hits on other nodes are skipped.
upAxisstring–The subject's LOCAL axis kept closest to worldUp. Must not be on the same line as backAxis.
worldUparray–World direction the upAxis should follow (projected onto the surface).

No output schema declared.

No examples provided.

summer_batch ~150

Send a list of raw engine ops (AddNode, SetProp, RunVerification...) in one call: one undo step unless an op must travel alone, and one save at the end. Ask for receipt summary on long lists. For computed edits, summer_run_script is simpler. Guide: summer_docs_read {"id":"tool/batch"}

NameTypeReqDescription
opsarrayyesArray of operation objects, each with 'op' plus its parameters
receiptstring–full (default): every engine receipt. summary: counts, failures with op index, created node paths only (under 5 KB).
scenePathstring–Required when ops contains scene mutations; exact res:// target scene path

No output schema declared.

No examples provided.

summer_call ~158

Run any Summer operation by name (from summer_search) with its input. Engine operations run here; cloud ones run on Summer's server with the same approvals: money, publishing and live changes answer needs_approval with a link. 3.x tool names work too.

NameTypeReqDescription
dryRunboolean–Check and describe the call without doing it.
idempotencyKeystring–Retry key for writes; reuse it only to retry the identical call.
inputobject–The operation's input, matching the schema summer_search returned.
namestring–Same as op.
opstring–The operation name, e.g. engine.add_node or pricing.set_base (or a 3.x tool name).

No output schema declared.

No examples provided.

summer_capture_gameplay ~316

Capture real gameplay frames (HUD included) from a hidden game window, no editor needed; game flags and player steps get past the title screen. Returns each frame's path and size: look at them before use. Guide: summer_docs_read {"id":"tool/capture-gameplay"}

NameTypeReqDescription
argsarray–The game's own command-line flags, passed after "--" (OS.get_cmdline_user_args()), e.g. ["--autostart", "--solo"] to skip the title screen.
framesinteger–Frames to save (default 1).
intervalSecondsnumber–Seconds between frames (default 1).
outstring–Output folder. Defaults to <project>/.summer/captures/<time>/ (ignored by git).
projectstring–Project folder with project.godot. Defaults to the MCP's bound project, then the working directory.
resolutionstring–Window size WIDTHxHEIGHT (default 1920x1080; 1080x1920 for portrait).
scenestring–Scene to start (res://... or uid://...). Default: the project's main scene, which is often a title menu; pass the gameplay scene for gameplay frames.
stepsarray–What to do after waitSeconds, in order; exactly one of press, key, action, click, drag, wait, shot per step.
waitSecondsnumber–Seconds the game runs before the first frame (default 3).

No output schema declared.

No examples provided.

summer_clear_console ~38

Clear the editor's Output panel, for a clean slate before the game runs. Guide: summer_docs_read {"id":"tool/clear-console"}

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

summer_connect_ports ~473

Move and turn one piece so its port (a Marker3D, or an open pipe end such as +Y) meets another piece's port: pipe to pipe, duct to duct. Refuses joins that tilt the piece. Saves the scene. Guide: summer_docs_read {"id":"tool/connect-ports"}

NameTypeReqDescription
allowTiltboolean–true: join even when the subject tilts more than maxTiltDegrees (a bend laid on its side, a sloped run). The receipt still reports tilt_degrees.
gapnumber–Distance between the two ports along the target port's direction. 0 = touching.
maxTiltDegreesnumber–Refuse the join, changing nothing, when it would tilt the subject's up axis (its local +Y) more than this many degrees from where it points now (default 5). Turning about the up axis is never tilt.
maxTrianglesinteger–Triangle budget (100-300000) per node when ports are open-loop ids or indices.
rollDegreesnumber–Extra turn of the subject, in degrees, about the joined port axis, applied after the ports are lined up.
scenePathstringyesExact scene to read or change, e.g. 'res://levels/street.tscn'. It must be open in the editor (any tab).
subjectstringyesPiece to move: exact node path relative to the scene root, e.g. './Facade/Wall_01'.
subjectPort–yesPort on the subject: an open-loop id from summer_inspect_asset on that node's scene, e.g. '+Y' (the outermost open loop facing +Y in the piece's own axes) or '+Y#2' (the next one facing +Y); or a…
targetstringyesPiece that stays put: exact node path relative to the scene root, e.g. './Facade/Wall_01'.
targetPort–yesPort on the target: an open-loop id from summer_inspect_asset on that node's scene, e.g. '+Y' (the outermost open loop facing +Y in the piece's own axes) or '+Y#2' (the next one facing +Y); or a…

No output schema declared.

No examples provided.

summer_connect_signal ~165

Connect a signal of one node to a method of another so the saved scene keeps it, verified from the saved .tscn. The receiver should define the method. Then test it with summer_play. Guide: summer_docs_read {"id":"tool/connect-signal"}

NameTypeReqDescription
emitterstringyesNode that fires the signal, e.g. './Player/HitArea'
methodstringyesMethod name in the receiver's script, e.g. '_on_hit_area_body_entered'
receiverstringyesNode with the handler script, e.g. './Player'
scenePathstringyesTarget scene path, e.g. 'res://main.tscn'
signalstringyesSignal name, e.g. 'body_entered'

No output schema declared.

No examples provided.

summer_create_debug_report ~210

Write a support-ready Markdown report: doctor checks, engine health, diagnostics, console and debugger output, and a hand-off prompt. No tokens or file contents; the person should still read it before sending it. Guide: summer_docs_read {"id":"tool/create-debug-report"}

NameTypeReqDescription
include_doctorboolean–Include summer doctor checks in the report.
include_play_sessionboolean–Launch the game briefly and collect post-play diagnostics.
issuestring–User-visible issue or repro summary.
max_console_linesnumber–Console lines to include after filtering/deduping.
max_debugger_entriesnumber–Debugger error/warning entries to include after filtering/deduping.
output_pathstring–Where to write the Markdown report. Defaults to the open project root, or the current working directory if no project is open.
play_wait_msnumber–Milliseconds to wait after launching the game when include_play_session is true.

No output schema declared.

No examples provided.

summer_create_scene ~186

Create a new, minimal .tscn file with the root type you name. It fails when the file exists and never touches the open scene. Build it out with summer_run_script and that scenePath. Guide: summer_docs_read {"id":"tool/create-scene"}

NameTypeReqDescription
allow_temporary_scene_mutationboolean–DEPRECATED, ignored. Scene creation no longer mutates any open scene; kept only so older callers don't break.
pathstringyesNew scene path, e.g. 'res://scenes/empty_level.tscn'
rootNamestring–Root node name for the new scene
rootTypestring–Root node type. Default 'Node3D' (3D scenes); common alternatives: 'Node2D' (2D scenes), 'Control' (UI scenes), 'Node' (logic-only).

No output schema declared.

No examples provided.

summer_debug_views ~414

Render one pose as a grid of debug views next to the beauty pass: lighting only, albedo, world normals, overdraw and wireframe. Shows why a shot looks wrong. Guide: summer_docs_read {"id":"tool/debug-views"}

NameTypeReqDescription
aspectnumber–Frame width/height (default 1.7778 = 16:9). Every tile uses it.
bookmark_namestring–Pose from a camera bookmark (summer_engine_save_camera_bookmark (list: summer_engine_list_camera_bookmarks)). Use INSTEAD of camera_position/camera_look_at.
camera_look_atstring–Explicit pose: point the camera looks at, "Vector3(x, y, z)".
camera_positionstring–Explicit pose: camera position, "Vector3(x, y, z)". Goes with camera_look_at.
fovnumber–Vertical field of view in degrees (1..179). Default: the bookmark's own, or 60.
max_sizeinteger–Longest edge of the returned JPEG in pixels (default 1536). Bigger costs more context; up to 4096 for detail work on a PC.
save_tostring–Also write the returned image to res://.summer/shots/saved/<name>.jpg (1-64 of A-Z a-z 0-9 _ -; needs max_size <= 1024).
scenePathstring–Scene to look at, e.g. "res://levels/town.tscn" (the SAVED file). Omit for the scene open in the editor.
update_previousboolean–bookmark_name only: replace the bookmark's previous image (compare baseline) with this beauty tile. Default false: only a missing slot is created.
viewsarray–Which views, in grid order (default all six: beauty, lighting, unshaded, normals, overdraw, wireframe).

No output schema declared.

No examples provided.

summer_docs_read ~539

Load one library entry by id (<kind>/<slug>, as returned by summer_docs_search). Skills: the SKILL.md body plus metadata (status, use_when, related) and how to invoke the skill in your host (bare slug). Tools: how to call it (MCP name, `summer tool <slug> --args`, engine requirement, authority) plus the descriptor. Templates: the pinned repo @ commit and tree digest (or built-in) and the `summer create <slug>` command. References: the markdown body. Hosted skills (publish-your-game, store-listing, store-art, grow-analytics; also by their summer://skills/<slug> URI): the current text from the hosted Summer Engine MCP with the store sign-in, else the local summary plus why and how to load the rest. Linked files: a body ends with its relative links and the id that loads each; a file an entry links loads by <entry id>/<link as written> (e.g. skill/spatial-placement/references/kit-placement-tools.md), by the relative path alone when one entry ships it, inside library/ only. part: 'skill' = body only, 'resource' = the resource.yaml descriptor only, 'all' (default) = both. The LAST line of every load is the feedback footer `— entry_id: <id>@<content-hash>. If this entry is wrong, stale, or you deviate from it, report via summer_call {"op":"docs.feedback"}.` — copy that entry_id verbatim into summer_call {"op":"docs.feedback"} once you have verified the outcome in-engine. Unknown id -> {ok:false, error:'not_found', nearest:[up to 3 ids]}. No engine needed; reads the library shipped with this package.

NameTypeReqDescription
idstringyesThe entry id as returned by summer_docs_search: <kind>/<slug>, e.g. skill/vfx-water-ripple or tool/screenshot. A file an entry links loads by <entry id>/<link as written>, e.g. skill/spatial-placemen…
maxCharactersinteger–Most characters of text to return (default 24000). A longer result is cut and says so.
partstring–'skill' = the body only (SKILL.md for skills; the markdown body for references; how-to-call for tools; the pin for templates). 'resource' = the resource.yaml descriptor only. 'all' (default) = both.

No output schema declared.

No examples provided.

summer_docs_search ~413

Search the Summer library — skills, tools, templates, references, examples, collections — by describing the task in plain words ('make stylized water', 'the player falls through the floor', 'which tool reads script errors'). This is the FIRST MOVE for any task: even a 1% chance the library covers it means you search, then read the entry you pick with summer_docs_read before acting — never act on a summary alone. Ranking: BM25 over ids, summaries, use_when lines and facets with kind-aware priors and related-entry boosts (the same ranker the routing eval gates). When this install ships registry/generated/embeddings.json and the embedding endpoint answers within 1.5s, lexical and semantic rankings are fused (reciprocal rank fusion) and each hit's matched_by says which side found it; offline or without embeddings it is lexical only and never fails for that reason. Returns {query, semantic, count, results: [{id, kind, status, summary, use_when, score, matched_by, mcp_tool_name?}], hint}. Scores compare only within one response. kinds narrows to some of the six kinds; include_preview:false hides preview entries; deprecated entries never surface. No engine needed. Privacy: only when semantic search is active is the query text sent to the Summer gateway to be embedded; nothing else leaves the machine.

NameTypeReqDescription
include_previewboolean–Include status: preview entries — not yet exercised in-engine by the Summer team (default true). false = stable only.
kindsarray–Restrict to these kinds (tool, skill, example, template, collection, reference). Omit for all kinds.
limitinteger–Maximum results, 1-20 (default 8).
querystringyesThe task in plain words — what you are building, fixing, or looking for (e.g. 'make stylized water', 'the player falls through the floor', 'which tool reads script errors').

No output schema declared.

No examples provided.

summer_enable_plugin ~125

Enable an editor plugin in res://addons/<name>/ and return the real result: enabled with its autoloads, or why it failed. Older engines only queue it (queued true); then check summer_get_debugger_errors. Guide: summer_docs_read {"id":"tool/enable-plugin"}

NameTypeReqDescription
pluginstringyesThe plugin folder under res://addons/ (e.g. 'quest_tools') or its 'res://addons/<name>/plugin.cfg'
timeoutMsinteger–How long the engine waits for the plugin to load (default 30000)

No output schema declared.

No examples provided.

summer_engine_delete_camera_bookmark ~77

Delete one saved camera viewpoint by name. Returns the names that remain. Guide: summer_docs_read {"id":"tool/camera-bookmark"}

NameTypeReqDescription
namestringyesBookmark name for save/delete: 1-64 characters from A-Z a-z 0-9 _ - (e.g. "hero_closeup").

No output schema declared.

No examples provided.

summer_engine_invoke_ui_action ~122

Run one named editor action exactly as its menu item or shortcut would: open Project Settings, switch the main screen, toggle a panel. Editor work only; scene work is summer_run_script. Read the effect back with summer_ui_tree. Guide: summer_docs_read {"id":"tool/ui-actions"}

NameTypeReqDescription
action_namestringyesmode:'invoke' only (required there). The exact action name from a 'list' result — the stable shortcut path such as 'editor/project_settings', 'editor/save_scene', 'spatial_editor/focus_selection'.

No output schema declared.

No examples provided.

summer_engine_list_camera_bookmarks ~61

List the camera viewpoints saved in this project: names, poses and dates. A bookmark gives screenshots that line up before and after a change: summer_screenshot with framing bookmark. Guide: summer_docs_read {"id":"tool/camera-bookmark"}

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

summer_engine_list_ui_actions ~141

List the editor's named actions (menu items and shortcuts) with labels and shortcuts, filtered by text. Actions marked denied are refused. Next: summer_engine_invoke_ui_action. Guide: summer_docs_read {"id":"tool/ui-actions"}

NameTypeReqDescription
filterstring–mode:'list' only. Case-insensitive substring over action name and label, e.g. 'project_settings', 'save', 'spatial_editor', 'bottom_panel'.
limitinteger–mode:'list' only. Maximum actions returned (engine default 200, max 2000). The result carries total + truncated — never assume a capped list is complete.

No output schema declared.

No examples provided.

summer_engine_save_camera_bookmark ~243

Save a named camera viewpoint in the project (res://.summer/camera_bookmarks.json): position and look_at as Vector3 literals, or neither to take the editor's 3D camera. The scene file is not touched. Next: summer_screenshot. Guide: summer_docs_read {"id":"tool/camera-bookmark"}

NameTypeReqDescription
fovnumber–save only. Vertical field of view in degrees (1..179, default 60). With a captured viewport pose the viewport camera's fov wins.
look_atstring–save only. Point the camera looks at, e.g. "Vector3(0, 1, 0)". Must differ from position.
namestringyesBookmark name for save/delete: 1-64 characters from A-Z a-z 0-9 _ - (e.g. "hero_closeup").
positionstring–save only. Camera position as a Godot literal, e.g. "Vector3(0, 5, 12)". Goes together with look_at; omit BOTH to capture the current editor 3D viewport camera.

No output schema declared.

No examples provided.

summer_export_game ~260

Export the game headless as the file the Summer Games store takes: a bundle for iPhone, Android, macOS and Windows, a web build or a desktop download. Returns path, sha256 and size. Upload it with store.upload_file. Guide: summer_docs_read {"id":"tool/export-game"}

NameTypeReqDescription
alignDeclarationboolean–A game with a server: set summer.build.json targetPlatforms to targets before exporting.
debugboolean–Export a debug build (--export-debug).
formatstring–bundle (default): the summer.games store build. download: a web build or native download; the default when targets is ["web"].
outstring–Output .zip path. Defaults to <project>/.summer/exports/.
projectstring–Project folder with project.godot. Defaults to the MCP's bound project, then the working directory.
targetsarray–Store platforms. Bundle: any of macos, windows, ios, android (omit to use every platform the project declares). Download: exactly one of web, macos, windows.
timeoutSecondsinteger–Stop the engine after this many seconds (default 900; a first export imports every asset).

No output schema declared.

No examples provided.

summer_export_templates ~151

List or install Summer Engine export templates (web, macOS, Windows) from Summer's CDN, each sha256-checked. Needed only for summer_export_game with format download. Guide: summer_docs_read {"id":"tool/export-templates"}

NameTypeReqDescription
actionstringyeslist: installed and published templates. install: download and install.
includeDebugboolean–Also install the debug templates (for exports with debug true).
platformsarray–Template platforms to install (default ["web"]).
summerVersionstring–The installed Summer Engine version (Help > About, e.g. 0.7.1). Read automatically on macOS; needed on Windows and Linux.

No output schema declared.

No examples provided.

summer_fabricate_3d ~436

Make a mesh with a bpy script in the person's own Blender (4.2 or newer, headless), import the .glb into the project and optionally place it. For exact modular kits and effect meshes, not characters or props. Guide: summer_docs_read {"id":"tool/fabricate-3d"}

NameTypeReqDescription
blender_pathstring–Explicit Blender executable. Pass only when the user named one; otherwise the engine resolves SUMMER_BLENDER_BIN, the editor setting filesystem/import/blender/blender_path, then PATH and well-known…
checkpointboolean–Take a SummerGit checkpoint before the child runs (default false). The result confesses (no_rewind_point) when none could be taken.
import_to_sceneobject–Instantiate the imported .glb into the currently open scene after import (one undo action). Omit to only write and import the file.
max_secondsnumber–Child budget in seconds (default 120, clamped 15-600): Blender boot + script + procedural-colour bakes + export. Raise it for heavy booleans or bakes; the client waits max_seconds + 60 s.
namestringyesAsset name — used for the default out_path (res://assets/fabricated/<name>.glb) and for the instantiated node. Sanitized by the engine to [A-Za-z0-9_-].
out_pathstring–Destination res:// path ending in .glb (default res://assets/fabricated/<name>.glb). An existing file is overwritten; '..' and hidden directories are refused.
sourcestringyesBlender Python (bpy) code that CREATES mesh objects and leaves them linked in the scene. Do not export — the engine exports the .glb for you.
target_sizenumber–Largest world-AABB dimension in units after instantiation — uniform scale, same rule as summer_instantiate_scene target_size (chair 1.0, car 4.5). Only used together with import_to_scene.

No output schema declared.

No examples provided.

summer_frame_nodes ~456

Fit a camera to the world bounds of some nodes and render them with the scene's real environment and lights; bookmark_name also saves the pose. Returns the image and a caption with the pose and bounds. Guide: summer_docs_read {"id":"tool/frame-nodes"}

NameTypeReqDescription
aspectnumber–Frame width/height (default 1.7778 = 16:9). Every tile uses it.
bookmark_namestring–Also save the fitted pose as this camera bookmark (1-64 of A-Z a-z 0-9 _ -), so later renders line up with it.
directionstring–Side the camera sits on: "front" (+Z), "back" (-Z), "left" (-X), "right" (+X), "top", "iso" (default, 3/4 from -X,+Y,-Z like summer_screenshot). Use from for anything else.
fillnumber–Share of the frame the nodes span along their limiting dimension (0.1..1.5, default 0.8).
fovnumber–Vertical field of view in degrees (default 50).
fromstring–Explicit direction FROM the nodes TOWARD the camera, "Vector3(1, 0.4, 2)". Replaces direction.
marksboolean–Numbered Set-of-Mark labels over the largest visible nodes; the caption maps label -> node path (feed a label to summer_zoom mark).
max_marksinteger–marks only: cap on labels (engine default 32).
max_sizeinteger–Longest edge of the returned JPEG in pixels (default 1024). Bigger costs more context; up to 4096 for detail work on a PC.
nodesarrayyesNode paths relative to the scene root ("House1", "Props/Crate_02"). The camera fits their combined WORLD bounds (visible meshes, children included).
scenePathstring–Scene to look at, e.g. "res://levels/town.tscn" (the SAVED file). Omit for the scene open in the editor.

No output schema declared.

No examples provided.

summer_frame_shot ~586

Find, score and save camera poses for a shot type (establishing, eye level, low angle, detail, corridor), tested against the real geometry in the open editor. Returns the best 3 poses and a sheet to look at, and saves the best as a bookmark. Guide: summer_docs_read {"id":"tool/frame-shot"}

NameTypeReqDescription
aspectnumber–Frame width/height (default 1.7778 = 16:9). Every tile uses it.
bookmark_namestring–Name for the saved best pose (default <shot>_<subject leaf>).
eye_heightnumber–eye_level/corridor: exact camera height in metres above the walkable surface under the camera (default: 1.6; an eye_level spawn's own Camera3D keeps its height clamped into 1.5-1.8).
fovnumber–Override the shot type's field of view (establishing 55, eye_level 60/75, low_angle 60 then widened, detail 40, corridor 60/75).
max_sizeinteger–Longest edge of the returned JPEG in pixels (default 1536). Bigger costs more context; up to 4096 for detail work on a PC.
max_soft_fractionnumber–Most of the subject that soft geometry may cover before a pose is rejected (0..1, default 0.67).
occludersobject–Override the occluder classification. Default: path names (wall/house/terrain... = hard; tree/fence/lamp/prop/pipe... = soft), MultiMesh = soft, else size (<= 2.5 m = soft).
renderstring–"sheet" (default): the top 3 in one labelled grid with real lighting; "best": the winner only; "none": scores only.
save_bookmarkboolean–Save the best pose as a camera bookmark (default true).
scenePathstring–Scene to look at, e.g. "res://levels/town.tscn" (the SAVED file). Omit for the scene open in the editor.
shotstringyes"establishing" (wide, whole subject, 12-40 deg up; a pose showing more than 15% empty ground or world edge ranks below every pose showing less), "eye_level" (player eye at spawn: its Camera3D kept…
spawnstring–eye_level only: node the player stands at, e.g. the player or a spawn marker. Its own geometry never counts as an occluder.
subjectarray–Node paths to frame (required except for eye_level, where it is what the player looks at).

No output schema declared.

No examples provided.

summer_game_control ~229

Pause or resume the RUNNING game, step exactly N frames, set the time scale, or list the live game instances. Step between two summer_game_probe reads for exact checks. Guide: summer_docs_read {"id":"tool/game-control"}

NameTypeReqDescription
actionstringyes'pause' suspends the game (Engine time frozen, physics inactive); 'resume' lifts the suspension; 'step' advances exactly N frames and leaves the game suspended; 'speed' sets the user time scale;…
framesinteger–action:'step' — frames to advance, 1..600 (default 1).
instancestring–Game instance to address (default 'main' = the editor's embedded game).
kindstring–action:'step' — 'physics' (default: exact physics ticks, max_physics_steps_per_frame pinned to 1) or 'process' (rendered frames).
speednumber–action:'speed' — user time scale in (0, 100]: 0.25 = quarter speed, 2 = double.

No output schema declared.

No examples provided.

summer_game_input ~396

Drive the RUNNING game's input: a script of timed actions, keys and clicks, or record real input and replay it on a seeded instance. Input is an action: prove its effect with summer_game_probe. Guide: summer_docs_read {"id":"tool/game-input"}

NameTypeReqDescription
actionstringyes'script' schedules a timed sequence of synthetic inputs (SimulateInputScript); 'record_start'/'record_stop' capture the game's real input into res://.summer/replays/<id>.json; 'replay' plays a…
clockstring–action:'script' — whether at_frame ('frame', default, exact) or at_ms ('ms') schedules the events.
eventsarray–action:'script' (required) or 'replay' (instead of recording) — up to 1000 timed events; last event within 36000 frames / 600 s.
include_motionboolean–action:'record_start' — also record mouse/joypad motion events (default false; large).
instancestring–Game instance to address (default 'main' = the editor's embedded game).
recordingstring–action:'replay' — the res://.summer/replays/<id>.json path returned by record_stop.
save_asstring–action:'record_stop' — res://.summer/replays/<name>.json to write instead of a generated id.
seedinteger–action:'replay' — assert the replay is reproducible; only accepted on an instance started with summer_play {mode:'offscreen', deterministic:true} (else nondeterministic_instance).
waitboolean–action:'script'|'replay' — wait for the last event to fire (default true; the engine caps a waited script at 20 s). Scripts longer than that: wait:false and observe with summer_game_probe.

No output schema declared.

No examples provided.

summer_game_probe ~230

Read state and pixels of one frame of the RUNNING game together: the live tree, property values and a screenshot stamped with the same frame numbers. The evidence read of a playtest. Guide: summer_docs_read {"id":"tool/game-probe"}

NameTypeReqDescription
instancestring–Game instance to address (default 'main' = the editor's embedded game).
max_diminteger–Longest image side in pixels, 16..4096 (default 1280); the frame is downscaled to fit.
propsarray–Up to 64 '<absolute path>:<property>' keys read on the same frame, e.g. '/root/Main/Player:position'. Values come back as Godot literal strings; misses land in `missing`.
screenshotboolean–Capture the game viewport (default true). false = state only, cheaper and works when the window draws nothing.
treeobject–Include the live scene tree ({name, class, path, children}) built game-side on the SAME frame as the pixels. Omit for no tree.

No output schema declared.

No examples provided.

summer_get_console ~190

Read recent editor Output messages, collapsed and filtered (errors and warnings by default; errors_only false for print output). A played game's runtime errors are not here: read summer_get_diagnostics first. Guide: summer_docs_read {"id":"tool/get-console"}

NameTypeReqDescription
errors_onlyboolean–Drop info/std noise, keep errors and warnings (default true)
filterstring–Only return lines containing this string
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
max_linesnumber–Max lines to return after dedupe (default 100)
rawboolean–Bypass dedupe and level filtering — return engine output verbatim
strict_errorsboolean–Drop warnings too — return errors only
typestring–Filter by message type at the engine level

No output schema declared.

No examples provided.

summer_get_debugger_errors ~178

Read the played game's runtime errors from the debugger (null references, missing nodes, physics errors), collapsed, with call stacks on request. After a fix, read summer_get_diagnostics again. Guide: summer_docs_read {"id":"tool/get-debugger-errors"}

NameTypeReqDescription
include_stackboolean–Include stack traces for each error
include_warningsboolean–Forward-compat flag — when engine supports it, returns warning bodies in the same call. Today the engine ignores it; use summer_get_debugger_warnings instead.
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
max_errorsnumber–Max errors to return after dedupe
rawboolean–Bypass dedupe — return engine output verbatim

No output schema declared.

No examples provided.

summer_get_debugger_warnings ~111

Read the played game's runtime warnings from the debugger, with file, line and call stack. Guide: summer_docs_read {"id":"tool/get-debugger-warnings"}

NameTypeReqDescription
include_stackboolean–Include stack traces
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
max_warningsnumber–Max warnings to return after dedupe
rawboolean–Bypass dedupe

No output schema declared.

No examples provided.

summer_get_diagnostics ~96

Read the editor console, the runtime debugger and script errors together, with complete counts and errors first. The first read after a change and after play. Next: summer_get_debugger_errors or summer_get_console for the details. Guide: summer_docs_read {"id":"tool/get-diagnostics"}

NameTypeReqDescription
includeAllboolean–Return the full engine diagnostics payload untrimmed (no severity reordering, no info-noise cap).

No output schema declared.

No examples provided.

summer_get_project_context ~218

Bind this session to the project open in Summer Engine and read it: project, current and main scene, engine health, project memory and warnings. Call it first in every chat; the scene tree and settings come on request (include). Next: summer_get_scene_tree. Guide: summer_docs_read {"id":"tool/get-project-context"}

NameTypeReqDescription
includearray–Heavy blocks to add to the compact default: 'scene_tree' (the open scene's node tree, up to 200 nodes), 'capabilities' (the engine's full op/capability lists), 'settings' (project settings, curated…
settingsPrefixstring–Only return project settings whose key starts with this prefix, e.g. 'audio/' or 'application/config/'. Omit for the curated default set.
settingsPrefixesarray–Several settings groups at once, e.g. ['audio/', 'layer_names/2d_physics/', 'input/ui_']. Merged with settingsPrefix. Omit for the curated default set.

No output schema declared.

No examples provided.

summer_get_runtime_tree ~150

Read the node tree of the RUNNING game: spawned enemies, autoloads and pooled nodes that editor reads never show. Needs a running game. Next: summer_inspect_runtime_node. Guide: summer_docs_read {"id":"tool/get-runtime-tree"}

NameTypeReqDescription
depthinteger–Maximum depth to walk (engine default 3).
limitinteger–Maximum nodes to return (engine default 500).
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
pathstring–Subtree root to read, e.g. '/root/Main/Enemies'. Omit for the scene tree root.

No output schema declared.

No examples provided.

summer_get_scene_tree ~165

Read the node tree of a scene: names, types and paths. Pass scenePath for an exact scene and depth for deep trees; the engine stops at depth 2 and 200 nodes by default and says truncated. Next: summer_inspect_node. Guide: summer_docs_read {"id":"tool/get-scene-tree"}

NameTypeReqDescription
depthinteger–Maximum tree depth to walk. Engine default is 2 — pass a larger value for deep hierarchies.
limitinteger–Maximum number of nodes to return. Engine default is 200.
maxCharactersinteger–Most characters of text to return (default 8000). A longer result is cut and says so.
scenePathstring–Exact res:// scene path to inspect

No output schema declared.

No examples provided.

summer_get_script_errors ~84

Check one GDScript file for parse and compile errors without running the game: line, message and severity of each. The first check after writing a script. Guide: summer_docs_read {"id":"tool/get-script-errors"}

NameTypeReqDescription
pathstringyesScript path, e.g. 'res://scripts/player.gd' or 'res://player_controller.gd'

No output schema declared.

No examples provided.

summer_grep ~278

Search project files with a regular expression: file, line and text of each match, with optional context lines and a result cap. Then read the part you need with summer_read_file. Guide: summer_docs_read {"id":"tool/grep"}

NameTypeReqDescription
case_sensitiveboolean–Match case exactly (default false: case-insensitive).
context_linesinteger–Lines of context before and after each match (0-10, default 0).
globstring–File filter passed to ripgrep --glob, e.g. '*.gd', '**/*.json', '!addons/**'. A glob also reaches files .gitignore would skip.
max_line_charsinteger–Clip every returned line to this many characters (default 240).
max_resultsinteger–Most matches to return (default 50, max 500). truncated:true means there were more.
multilineboolean–Let the pattern span lines (ripgrep -U --multiline-dotall).
pathstring–Search scope: a res:// directory or file, e.g. 'res://kit/' or 'res://kit/kit_manifest.json'. Default: the whole project.
patternstringyesRipgrep regular expression, e.g. '"fits_into"' or 'func _on_.*_pressed'

No output schema declared.

No examples provided.

summer_import_asset ~162

Search the Summer asset library, import the best match into the project and, for a 3D model, add it to a scene. Needs the Summer sign-in. For an exact asset use summer_import_asset_by_id. Guide: summer_docs_read {"id":"tool/import-asset"}

NameTypeReqDescription
assetTypestring–Preferred asset type
parentstring–Parent node path to add the asset under, e.g. './World'. If omitted, only imports (no scene placement)
querystringyesWhat to find, e.g. 'low-poly tree', 'wooden crate'
scenePathstring–Required with parent. Exact res:// target scene path.
sourcestring–Where to search before importing

No output schema declared.

No examples provided.

summer_import_asset_by_id ~171

Import one Summer asset by its id (from a search, the person's assets or a generation) into the project; a 3D model can go straight into the scene at scenePath. Needs the Summer sign-in. Guide: summer_docs_read {"id":"tool/import-asset-by-id"}

NameTypeReqDescription
assetIdstringyesSummer ArtAssets id
namestring–Optional scene node name when parent is provided.
parentstring–Optional parent node path. For 3D models only; imports and instantiates under this node.
pathstring–Optional target res:// path. If omitted, a path is inferred from asset type and filename.
scenePathstring–Required with parent. Exact res:// scene that receives the 3D model.

No output schema declared.

No examples provided.

summer_import_from_url ~107

Download one file (model, texture, audio) from a URL into the project and run the import, so it is ready to use. For a model, next: summer_instantiate_scene. Guide: summer_docs_read {"id":"tool/import-from-url"}

NameTypeReqDescription
pathstring–Target path in project, e.g. 'res://assets/player.glb'. Auto-inferred from URL if omitted.
urlstringyesHTTP(S) URL to download from

No output schema declared.

No examples provided.

summer_import_from_url_batch ~61

Download several files from URLs into the project in one call, with one import scan at the end. Guide: summer_docs_read {"id":"tool/import-from-url-batch"}

NameTypeReqDescription
importsarrayyesArray of {url, path} objects

No output schema declared.

No examples provided.

summer_import_hdri ~173

Find a CC0 HDRI sky on Poly Haven (or take an exact id) and import it into res://sky/ for environment light. Returns a ready summer_run_script snippet that wires it into the WorldEnvironment. Guide: summer_docs_read {"id":"tool/import-hdri"}

NameTypeReqDescription
assetIdstring–Exact Poly Haven asset id (lowercase slug, e.g. 'kloppenheim_02'). Skips the search.
querystring–What kind of sky/environment, e.g. 'sunset beach', 'overcast field', 'studio'. Omit when assetId is given.
resolutionstring–HDRI resolution. 2k (default) is right for most games; 4k for hero skies; 1k for quick blockouts.

No output schema declared.

No examples provided.

summer_input_map_bind ~88

Create an input action when it is missing and bind keys or mouse buttons to it, for example jump to Space. Then try it with summer_play. Guide: summer_docs_read {"id":"tool/input-map-bind"}

NameTypeReqDescription
eventsarrayyesArray of input event objects
namestringyesAction name, e.g. 'jump', 'move_forward', 'interact'

No output schema declared.

No examples provided.

summer_inspect_asset ~251

Measure a 3D asset file without placing it: bounds, origin, meshes, largest flat faces, open pipe ends, Marker3D anchors and collision shapes. Measure each kit piece once before placing it. Next: summer_instantiate_scene. Guide: summer_docs_read {"id":"tool/inspect-asset"}

NameTypeReqDescription
detailstring–summary (default): open_loops lists only port-like loops (radius over 2 cm with a partner loop facing another way, or the one opening of an end piece on its bounding-box face), or none. full: every…
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
maxTrianglesinteger–Triangle budget (100-300000) for the face and open-loop analysis (AABBs and counts are always complete). summary.warnings says when the budget cut the analysis and which budget covers the whole mesh.
pathstringyesAsset to measure, e.g. 'res://kit/facade/wall_single_01.tscn'. It is loaded and instanced off-scene, never added to an open scene.

No output schema declared.

No examples provided.

summer_inspect_node ~170

Read one node of the open scene: every editable property with its value and type, or only the fields you name (transform, global_transform, scene_file_path, aabb). Next: summer_set_prop. Guide: summer_docs_read {"id":"tool/inspect-node"}

NameTypeReqDescription
fieldsarray–Only these fields: property names or globs (e.g. 'position', 'surface_material_override/*') and the derived fields transform, global_transform, scene_file_path, aabb, warnings.
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
pathstringyesNode path from scene tree, e.g. 'Player', 'World/Enemies/Boss', 'DirectionalLight3D'

No output schema declared.

No examples provided.

summer_inspect_resource ~220

Read a resource file (a mesh's bounds and surfaces, a scene's nodes, any resource's non-default properties) or a resource a node holds (nodePath and property). Next: summer_set_resource_property. Guide: summer_docs_read {"id":"tool/inspect-resource"}

NameTypeReqDescription
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
nodePathstring–With property: a node of the ACTIVE scene tab whose resource to read, e.g. 'Floor'. Do not combine with path.
pathstring–A resource FILE: 'res://materials/ground.tres', a mesh 'res://kit/meshes/wall_01.res', a texture, a shape, or a scene/model 'res://models/player.glb'. Loaded read-only in the editor.
propertystring–With nodePath: the node property holding the resource, e.g. 'mesh', 'material_override', 'shape', 'environment'.

No output schema declared.

No examples provided.

summer_inspect_runtime_node ~116

Read the live properties of one node in the RUNNING game (transform, visibility, physics state...) without stopping it. Paths are absolute; take them from summer_get_runtime_tree. Guide: summer_docs_read {"id":"tool/inspect-runtime-node"}

NameTypeReqDescription
maxCharactersinteger–Most characters of text to return (default 4000). A longer result is cut and says so.
pathstringyesRuntime node path, e.g. '/root/Main/Player'. Get it from summer_get_runtime_tree.

No output schema declared.

No examples provided.

summer_instantiate_scene ~342

Add an existing .tscn, .glb or .gltf as a child node in the scene at scenePath, placed in the same call (position, rotation_degrees, scale or transform). Pass target_size for imported models. Next: summer_screenshot. Guide: summer_docs_read {"id":"tool/instantiate-scene"}

NameTypeReqDescription
namestring–Override the instance name
parentstringyesParent node path, e.g. './World'
positionarray–Parent-local position [x, y, z] set right after the instance is created.
rotation_degreesarray–Parent-local rotation in degrees [x, y, z] (Godot rotation_degrees).
scalearray–Local scale [x, y, z]. Not with target_size.
scenestringyesScene/model path, e.g. 'res://player.tscn' or 'res://models/tree.glb'
scenePathstringyesTarget scene to receive the instance, e.g. 'res://main.tscn'
target_sizenumber–Normalize the instance's physical size: uniformly scale it so its largest world-AABB dimension equals this many units (chair 1.0, car 4.5, person 1.7).
transformstring–Full local transform as "Transform3D(xx, xy, xz, yx, yy, yz, zx, zy, zz, ox, oy, oz)" (Godot row-major basis, then origin). Not with position/rotation_degrees/scale/target_size.

No output schema declared.

No examples provided.

summer_is_running ~34

Check whether the game is running, and which scene it runs. Guide: summer_docs_read {"id":"tool/is-running"}

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Install

How do I install the Summer Engine MCP server?

Summer Engine runs locally as an npm package, launched with npx -y summer-engine. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · summer-engine

# add to Claude Code
claude mcp add summerengine-summer -- npx -y summer-engine
Common questions

What is the Summer Engine MCP server?

Summer Engine is an MCP server listed in the public MCP registry as io.github.SummerEngine/summer. The game engine built for AI. Any agent makes a multiplayer game and publishes it. This page covers its npm package (summer-engine).

Is the Summer Engine MCP server safe to use?

Summer Engine scores 74 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 4 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Summer Engine MCP server expose?

Summer Engine exposes 93 tools: summer_create_scene, summer_add_node, summer_set_prop, summer_set_resource_property, summer_remove_node, and 88 more. Their descriptions and schemas cost roughly 21,136 tokens of context every time the server is loaded.

Is the Summer Engine MCP server still maintained?

Summer Engine is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Summer Engine MCP server under?

Summer Engine declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.