Skip to main content
Glama
playcanvas

PlayCanvas Editor MCP Server

Official
by playcanvas

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoThe port number for the MCP server to listen on52000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{}
resources
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_entitiesA

Create one or more entities (optionally nested hierarchies) in the current scene. Use this to add new objects: cameras, lights, models, UI, empty groups, etc. Coordinates are local to the parent; rotation is euler degrees; scale is a multiplier. Returns the created entity summaries inline (resource_id, name, path, components) so you do NOT need a follow-up list_entities call to recover the new ids. Physics note: rigidbody/collision components only simulate if the project has the Ammo physics module enabled (Editor: click IMPORT AMMO / enable physics in project settings). Without it, rigidbodies are created but stay frozen at launch — enable Ammo before relying on physics rather than pausing to ask. When NOT to use: to change an existing entity (use modify_entities), to add a component to an existing entity (use add_components), or to instantiate a template asset (use instantiate_template_assets).

modify_entitiesA

Set or unset properties on existing entities by dot-notation path. Valid top-level paths: "name", "enabled", "position" ([x,y,z] local), "rotation" ([x,y,z] euler degrees), "scale" ([x,y,z]), "tags". Component properties use "components..", e.g. "components.light.intensity", "components.camera.fov", "components.render.castShadows", "components.script.scripts..attributes." (the entity must already have that component; add it with add_components first). Each edit targets one entity id + one path. Returns the post-edit summaries of the affected entities. Edits are validated on write: an unknown top-level path, or a component path for a component the entity does not have, fails immediately with a message listing the entity's valid paths/components — so you can fix it in one shot instead of retrying blind. When NOT to use: to create entities (use create_entities), to add/remove components (use add_components/remove_components), or to change scene-wide settings (use modify_scene_settings).

duplicate_entitiesA

Duplicate existing entities (including their children) in place under the same parent. Returns the new entity summaries. Set rename=true to auto-suffix names to avoid duplicates. When NOT to use: to create a reusable prefab across scenes (create a template asset instead) or to build a brand-new entity (use create_entities).

reparent_entityA

Move an entity to a new parent in the hierarchy, optionally at a specific child index. Set preserveTransform=true to keep the entity at the same world position after moving. Returns the moved entity summary (including its new hierarchy path). When NOT to use: to change position/rotation values directly (use modify_entities).

delete_entitiesA

Permanently delete entities and all of their descendants. This is destructive and not undoable via this tool. The scene root cannot be deleted. Returns { deleted: }. When NOT to use: to temporarily hide an entity (set enabled=false via modify_entities instead) or to remove a single component (use remove_components).

get_entityA

Get the complete edit-time JSON for one entity by resource_id.

list_entitiesA

List entities in the current scene, returning compact summaries by default (resource_id, name, hierarchy path, parent, enabled, tags, component names). Results are paginated: use limit (default 50) and offset to page through large scenes; the response meta includes total, count, hasMore and nextCursor. Filter with name (case-insensitive contains), component (only entities with that component) and/or tag. Use full=true only when you need the complete entity JSON (large; prefer summaries). An empty result is a successful, empty list (not an error). When NOT to use: when you already know an entity id and just need to act on it; for runtime/play-mode state (this returns edit-time data only).

resolve_entitiesA

Resolve entities by name into their resource_ids and hierarchy paths, so you can drive follow-up calls without shuttling UUIDs. By default matches case-insensitive substrings; set exact=true to match the full name. Returns summaries (resource_id, name, path, components). An empty result is a successful, empty list (not an error). When NOT to use: when you need filtering by component/tag or pagination (use list_entities).

add_componentsA

Add one or more components to an existing entity (camera, light, render, collision, rigidbody, element, screen, script, sound, etc.). Pass each component's initial data under its name. Returns the updated entity summary. Physics note: rigidbody/collision components only simulate when the project has the Ammo physics module enabled (Editor: IMPORT AMMO / enable physics in project settings). If it is not enabled, add the components then enable Ammo — do not stall on the decision. When NOT to use: to create a new entity (use create_entities), to tweak an existing component property (use modify_entities), or to attach a script to a script component (use attach_script).

remove_componentsA

Remove one or more components from an entity by component name. Returns the updated entity summary. When NOT to use: to delete the whole entity (use delete_entities) or to just disable a component (set components..enabled=false via modify_entities).

add_script_component_scriptA

Add a named script to an entity that ALREADY has a script component. Returns the updated entity summary. When NOT to use: if the entity has no script component yet, prefer attach_script, which creates the component and attaches the script in one call.

attach_scriptA

Attach a script to an entity in one step: creates the script component if missing, then adds the named script. This consolidates the common "add script component" + "add script" flow. Returns the updated entity summary. Note: the script must already exist as a parsed script asset (create one with create_assets type="script", set its code with set_script_text, then script_parse). When NOT to use: to write the script's source code (use set_script_text) or to set script attribute values (use modify_entities on components.script.scripts..attributes).

add_entity_scriptsB

Attach a parsed script to one or more entities, creating script components when needed.

remove_entity_scriptsC

Remove a script from one or more entities.

move_entity_scriptA

Move a script to a new execution-order index on an entity.

search_entitiesA

Fuzzy-search entities by name and return the best matches ranked by relevance (each as a compact summary). Use this to find an entity when you only know part of its name. When NOT to use: to filter by component or tag (use list_entities) or to find entities using a script (use find_entities_by_script).

find_entities_by_scriptA

List the entities whose script component uses a given (registered) script name. Returns compact entity summaries. When NOT to use: to search entities by name (use search_entities) or to read a script's source (use get_asset_text).

create_assetsA

Create one or more native data/text assets. Imported binary assets use upload_assets. Each asset is { type, options }; options vary by type (e.g. material takes data, script takes filename/text, template takes an entity id). Successful batches return the existing asset-summary array. Failed batches retain error status and expose succeeded and failed entries in response metadata. When NOT to use: to add an existing asset to an entity (use add_components/modify_entities) or to change a material's look after creation (use set_material_properties).

list_assetsA

List project assets, returning compact summaries by default (id, name, type, folder, tags). Results are paginated: use limit (default 50) and offset; the response meta includes total, count, hasMore and nextCursor. Filter with type, name (case-insensitive contains) and/or tag. Use full=true only when you need the complete asset JSON (large). An empty result is a successful, empty list (not an error). When NOT to use: to search the public asset store (use store_search).

get_assetA

Get the complete JSON for one project asset by id.

get_asset_referencesA

List the project assets, entities, or settings that reference an asset.

delete_assetsA

Permanently delete assets by id. This is destructive; entities referencing the deleted assets will lose those references. Returns { deleted: }. When NOT to use: to remove an asset reference from an entity without deleting the asset itself (use modify_entities).

instantiate_template_assetsA

Instantiate template assets into the scene, creating entity hierarchies from them. Returns the created entity summaries. When NOT to use: for non-template assets (only type="template" assets can be instantiated) or to build an entity from scratch (use create_entities).

upload_assetsA

Upload local files into the designated project, or replace an existing asset source by providing its id. Files are limited to 512 MiB each; the result separates succeeded and failed entries.

modify_assetsA

Edit asset name, tags, preload, or data paths. Array operations are supported under data.*. Anim state graph structure and animation events require their dedicated mutation tools.

move_assetsA

Move assets to a folder in the designated project and wait until their paths update. Omit folderId to move them to the root.

duplicate_assetsA

Duplicate assets in their current folders and return the created asset summaries.

replace_assetA

Replace references to one asset with another asset.

reimport_assetsA

Re-run the import pipeline for existing source assets and return succeeded and failed entries.

download_assetA

Download an asset to a local file. Downloads are limited to 512 MiB and never overwrite unless overwrite=true.

get_template_overridesA

Read the current apply/revert override records for a template instance.

apply_template_overridesC

Apply all overrides from a template instance, or only the supplied override records.

revert_template_overridesA

Revert all overrides on a template instance, or only the supplied override records.

unlink_template_instancesA

Unlink template instances while keeping their current entity data.

set_material_diffuseA

Set only the diffuse (base) color of a material. Color is [r,g,b] in 0-1. When NOT to use: to change any other material property, or to set several properties at once (use set_material_properties).

set_material_propertiesA

Set any combination of properties on a material asset in one call (diffuse, emissive, metalness, gloss/shininess, opacity, maps, etc.). Only the provided fields are changed; all fields are optional. Colors are [r,g,b] 0-1; map fields take asset ids. Returns the updated asset summary. When NOT to use: to change only the diffuse color (set_material_diffuse is a shorthand) or to create a new material (use create_assets type="material").

get_asset_textA

Read the full text contents of a text-based asset (script, text, json, css, html, or shader), returned as text. When NOT to use: to read a script's declared name or attribute definitions (use script_parse), to read binary assets like textures or models, or to list assets (use list_assets).

set_asset_textC

Overwrite the full contents of a CSS, HTML, JSON, script, shader, or text asset.

set_script_textA

Overwrite the source code of an existing script asset. Provide the full file contents in text. After changing the code, call script_parse so the editor re-reads the script's name and attributes. When NOT to use: to attach a script to an entity (use attach_script) or to create the script asset itself (use create_assets type="script").

script_parseA

Parse a script asset to extract its declared script name(s) and attribute definitions. Run this after set_script_text. Returns the parsed script metadata. When NOT to use: to read entity-level script attribute values (use list_entities/modify_entities).

get_animation_eventsA

Get the stable-id event map for a GLB animation asset, including time and optional number/string payloads.

modify_animation_eventsA

Add, update, or remove GLB animation events as one undoable transaction. Times are normalized from 0 to 1. Event ids remain stable and generated ids are returned.

get_anim_state_graphA

Get the complete structural data for an anim state graph asset, including layers, states, transitions, conditions, and parameters.

modify_anim_state_graphA

Apply a validated batch of structural operations to an anim state graph as one undoable transaction. Add operations may omit id to allocate one; generated ids and the resulting graph are returned. State deletion also deletes attached transitions. Parameter deletion is rejected while conditions use it. Use layer.update defaultStateId to change a layer default before removing its old default state.

bake_lightmapsA

Bake scene lightmaps, optionally limited to the given entities. Returns only after baking finishes and reports model assets missing UV1.

unwrap_model_assetA

Generate UV1 data for a model asset using the editor's unwrap worker and update its source file.

cancel_model_unwrapA

Cancel an in-progress UV1 unwrap for a model asset.

convert_texture_assetA

Convert a texture source to a new AVIF, JPEG, PNG, or WebP texture asset.

create_texture_atlasA

Duplicate a texture asset as an editable texture atlas and return the new asset.

create_cubemap_from_textureB

Convert an equirectangular texture to six face textures and a cubemap asset.

process_font_assetA

Rebuild a font asset for an explicit character set and optional inversion setting.

generate_texture_metadataB

Generate missing pipeline metadata for a texture asset.

process_texture_variantsB

Compress or remove explicit texture variants and wait for processing to settle.

prefilter_cubemapC

Generate runtime lighting data for a cubemap.

clear_cubemap_prefilterA

Remove generated runtime lighting data from a cubemap.

modify_sprite_assetA

Modify sprite data (atlas, frame order, pixels per unit, render mode) or replace a texture atlas frame map in one undoable edit.

modify_bundle_assetA

Add or remove project assets from a bundle. Returns accepted and rejected ids; invalid asset types and duplicates are rejected.

list_buildsC

List publish and download builds for the designated project, including durable job status and artifacts.

get_buildA

Get a publish or download build job by id from the designated project.

create_buildB

Create a published PlayCanvas build for scenes in the designated project. Returns the created durable build job.

download_buildA

Create a static or NPM download build, wait for its artifact, and save the archive to an explicit local path. Existing files are not overwritten unless overwrite=true.

set_primary_buildA

Set a completed publish build as the project primary build.

delete_buildA

Permanently delete a build job and its linked artifact from the designated project.

modify_scene_settingsA

Modify scene-wide settings such as physics gravity and rendering (fog, ambient light, skybox, tonemapping, exposure, lightmapping). Only the provided fields are changed. Returns the full resulting scene settings snapshot. When NOT to use: to change a single entity (use modify_entities) or to read settings without changing them (use query_scene_settings).

query_scene_settingsA

Read the current scene-wide settings (physics + rendering). Returns the full settings object. When NOT to use: to change settings (use modify_scene_settings).

rename_sceneB

Rename the currently loaded scene. Load another scene first to rename it.

list_scenesA

List the scenes in the current project/branch. Returns scene records including id, uniqueId and name. Use uniqueId with load_scene to switch scenes, and id with get_scene / duplicate_scene / delete_scene. When NOT to use: to list assets (use list_assets).

get_sceneA

Get a single scene by its id (not uniqueId). Returns the full scene record. When NOT to use: to load/switch to a scene in the editor (use load_scene) or to list scenes (use list_scenes).

load_sceneA

Load (switch the editor to) a scene by its uniqueId. This unloads the current scene and opens the target one. By default the tool returns after queuing the load. Set wait=true to return only after the requested scene is active. When NOT to use: to read a scene without switching (use get_scene) or to create a new scene (use create_scene).

create_sceneA

Create a new empty scene in the current project/branch. Returns the created scene record. This does not switch to the new scene; call load_scene with its uniqueId to open it. When NOT to use: to copy an existing scene (use duplicate_scene).

duplicate_sceneA

Duplicate an existing scene by its id, giving the copy a new name. Returns the created scene record. When NOT to use: to create an empty scene (use create_scene).

delete_sceneA

Permanently delete a scene by its id. This is destructive and cannot be undone. When NOT to use: to switch away from a scene without deleting it (use load_scene).

modify_project_settingsA

Modify project-wide settings such as physics engine, rendering device (WebGL2/WebGPU), layers, loading screen, script loading order, input, and resolution. Pass a partial object of setting path/value pairs (nested objects or dot-paths, e.g. { enableWebGpu: true, "layers.0.name": "World" }); only the provided fields change. Returns the full resulting project settings snapshot. When NOT to use: to change per-scene settings like fog or gravity (use modify_scene_settings) or a single entity (use modify_entities).

query_project_settingsA

Read the current project-wide settings (physics, rendering device, layers, loading screen, script loading order, input, resolution). Returns the full settings object. When NOT to use: to change settings (use modify_project_settings) or to read per-scene settings (use query_scene_settings).

query_settingsA

Read any Editor settings scope: project, current scene, per-project user preferences (including editor.pipeline asset import defaults), global user preferences, session settings, or private project settings. Omit path for the complete scope or provide a dot path for one value.

modify_settingsA

Set or unset arbitrary Editor settings by dot path in project, scene, projectUser, user, session, or projectPrivate scope. Asset import defaults are in projectUser under editor.pipeline.*. Project, scene, and private settings require project write access. Query the scope first to discover current paths and values.

store_searchA

Search the public PlayCanvas asset store by keyword. Results are paginated via skip + limit. Reaches an external service over the network. Use store_get for full details of a result, then store_download to import it. When NOT to use: to search assets already in this project (use list_assets).

store_getA

Get full details (including license info needed to download) for a single public store asset by id. Reaches an external service over the network. When NOT to use: to fetch a project-local asset (use list_assets).

store_downloadA

Clone/import a public store asset into the current project. Requires the license fields returned by store_get. Reaches an external service over the network and adds new assets to the project. When NOT to use: for assets already in the project.

list_store_licensesA

List valid Store licenses for project imports.

sketchfab_searchB

Search downloadable Sketchfab models.

sketchfab_getA

Get a Sketchfab model by uid.

sketchfab_importB

Import a downloadable Sketchfab model into the current project.

my_assets_searchC

Search assets owned by the current user.

my_assets_importA

Import an asset owned by the current user into the current project.

query_viewport_stateA

Read the exact editor viewport camera and overlay state so it can be restored after visual inspection.

set_viewport_stateA

Set the editor viewport camera transform, projection, grid, bones, icon size, and expanded state. This controls the editor view, not an entity's persisted enabled state.

query_viewport_visibilityA

List entities hidden only in the editor viewport. This does not read or change persisted entity enabled values.

set_viewport_visibilityA

Hide or show entities only in the editor viewport without changing their persisted enabled values.

capture_viewportA

Capture a screenshot of the editor viewport (the current editing camera view) as a downscaled WebP image, for visual verification of edit-time state. Tip: call focus_viewport first to frame the entities you care about. Note: this renders the editor preview only (scripts/physics/animation are NOT running). When NOT to use: to verify play-mode/runtime behavior (use capture_runtime after launch_start).

focus_viewportA

Frame the editor camera on the given entities, optionally from a preset view (top/front/etc.) or a custom yaw/pitch. Useful before capture_viewport. Returns { focused: }. When NOT to use: to move an in-scene camera entity (use modify_entities on its transform).

focus_cameraA

Aim the current editor camera to look at a world-space point from a given distance. Useful for framing an exact location before capture_viewport. When NOT to use: to frame specific entities (use focus_viewport) or to move an in-scene camera entity (use modify_entities on its transform).

launch_startA

Start a real Launch runtime instance of the current scene (the editor's Launch button) so scripts, physics, animation and input actually run. Opens the launch page in a new browser window with debug logging on; the editor bridges it automatically. Returns { url, sceneId, ready, adopted } where ready=true means the runtime is usable by capture_runtime / read_runtime_logs, and adopted=true means it attached to an app that was already running instead of starting a new one (which happens only when no options are passed, so pass an option to force a fresh launch). This is the prerequisite for all runtime tools. If ready=false, the page may still be loading or popups were blocked; poll read_runtime_logs or retry. When NOT to use: to screenshot the editor (use capture_viewport); to change the scene (edit-time tools).

launch_stopA

Stop the running Launch instance started by launch_start (closes the launch window). Returns { stopped }. When NOT to use: there is no need to call this between captures — keep the instance running and re-capture.

capture_runtimeA

Screenshot the RUNNING Launch instance (not the editor preview) as a downscaled WebP image — the agent's "eye" for visually verifying play-mode behavior. Requires launch_start first. Captures the live frame buffer, so what you see reflects scripts/physics/animation actually running. When NOT to use: before launch_start (use capture_viewport for edit-time visuals).

read_runtime_logsA

Read console output (log/info/warn/error), uncaught exceptions and unhandled rejections from the RUNNING Launch instance — the first-line signal for runtime bugs. Requires launch_start first. Returns the most recent entries first, paginated (meta has total/count/hasMore/nextCursor). Defaults to warnings + errors; set level="all" (or debug/info/warn/error as a minimum severity) to widen, and keyword to filter. An empty result is success, not an error. When NOT to use: to read edit-time editor logs (this is the launched app only).

query_runtime_stateA

Read the LIVE runtime state of entities in the RUNNING Launch instance — the non-visual ground-truth read-back for verifying play-mode behaviour without guessing screenshot timing. Requires launch_start first. For each matched entity returns world position, local position, euler rotation, scale, enabled, component names, plus rigidbody (type/mass/linearVelocity/angularVelocity) and element (type/text, e.g. a HUD score label) when present. Filter with ids (editor resource_ids — the runtime uses the same GUIDs) or name (case-insensitive substring); omit both to page through every entity. Paginated via limit (default 50) + offset (meta has total/count/hasMore/nextCursor). Use this to answer questions the camera cannot: "did the ball actually move / fall through the floor?", "is the rigidbody simulating (velocity != 0)?", "what does the score HUD say?". An empty result is success, not an error. When NOT to use: for edit-time scene data (use list_entities); before launch_start; to change state (use modify_entities / inject_input).

inject_inputA

Dispatch keyboard / mouse / touch input to the RUNNING Launch instance so you can drive end-to-end interactions ("press W to move", "click a button", "tap the screen"). Requires launch_start first. Events run in order; coordinates are CSS pixels from the canvas top-left (match capture_runtime's framing). Returns { dispatched }. Patterns: key press with holdMs to move for a duration; mouse click at (x,y); a down→move…→up sequence for dragging; touch tap for mobile UI. After injecting, use capture_runtime / read_runtime_logs / query the scene to observe the effect. When NOT to use: to change entity data directly (use modify_entities) or before launch_start.

undoA

Undo the last edit in the editor. Returns whether anything was undone plus the resulting { canUndo, canRedo } state. Use this to roll back a change you just made. When NOT to use: to switch scenes (use load_scene).

redoA

Redo the last undone edit in the editor. Returns whether anything was redone plus the resulting { canUndo, canRedo } state. When NOT to use: to repeat an arbitrary action (redo only re-applies an edit that was just undone).

get_selectionA

Read the editor's current selection. Returns { type: "entity" | "asset" | null, ids: [...] }. Entity ids are resource_ids (strings); asset ids are numbers. When NOT to use: to list all entities/assets (use list_entities/list_assets).

set_selectionA

Replace the editor's selection with the given entities or assets. Selecting shows them in the inspector and highlights them in the viewport/tree. Pass type "entity" (ids are resource_ids) or "asset" (ids are numbers). An empty ids array clears the selection. When NOT to use: to modify the selected items (use modify_entities) or to frame them in the viewport (use focus_viewport).

clear_selectionA

Clear the editor's current selection.

read_editor_logsA

Read recent edit-time Editor console logs with filters and pagination.

set_transform_gizmoA

Set the viewport transform gizmo: mode (translate/rotate/scale/resize), coordinate space (world/local), and/or snapping. Only the provided fields change. Returns the resulting { mode, space }. When NOT to use: to actually move/rotate/scale an entity (use modify_entities on its transform).

vcs_statusA

Read the current version-control state: the active branch ({ id, name, latestCheckpointId }), the projectId, and whether a merge is in progress. Use this to confirm which branch you are on, especially after create_branch/switch_branch/restore_checkpoint/hard_reset_checkpoint (which reload the editor). When NOT to use: to list branches (use list_branches) or checkpoints (use list_checkpoints).

list_branchesA

List the project's branches. Returns branch records ({ id, name, createdAt, closed, permanent, latestCheckpointId, user }). Paginates via limit + cursor (meta.nextCursor); set closed:true to include closed branches, favorite:true for your favourites. When NOT to use: to read the current branch (use vcs_status).

create_branchA

Create a new branch (scope a feature on its own branch) and switch the editor to it. Branches from the current branch by default. This RELOADS the editor; the tool waits for it to reconnect and returns the resulting vcs_status on the new branch. Name must be unique in the project and at most 1000 characters. When NOT to use: to switch to an existing branch (use switch_branch).

switch_branchA

Switch (checkout) the editor to an existing branch by its id (from list_branches). This RELOADS the editor; the tool waits for it to reconnect and returns the resulting vcs_status on the target branch. When NOT to use: to create a new branch (use create_branch).

list_checkpointsA

List checkpoints on a branch (the current branch by default), newest first. Returns records ({ id, createdAt, description, user }). Paginates via limit + cursor (meta.nextCursor); backend default limit 25, max 50. Use a checkpoint id with restore_checkpoint / hard_reset_checkpoint. When NOT to use: to list branches (use list_branches).

create_checkpointA

Create a checkpoint (an immutable snapshot of the current branch's scenes/assets/settings) with a description. Returns the created checkpoint ({ id, createdAt, description }). Does not reload the editor. Snapshotting is asynchronous; for very large projects it may exceed the request timeout, in which case the checkpoint usually still completes — confirm with list_checkpoints. When NOT to use: to roll back to a checkpoint (use restore_checkpoint).

restore_checkpointA

Restore (soft revert) the current branch's working state to a checkpoint. History is preserved — later checkpoints remain. This RELOADS the editor; the tool waits for it to reconnect and returns the resulting vcs_status. When NOT to use: to permanently erase later checkpoints (use hard_reset_checkpoint).

hard_reset_checkpointA

DESTRUCTIVE: reset the branch head back to a checkpoint and PERMANENTLY ERASE every checkpoint created after it. Cannot be undone. This RELOADS the editor; the tool waits for it to reconnect and returns the resulting vcs_status. When NOT to use: to roll back working state while keeping history (use restore_checkpoint).

get_checkpointA

Get a single checkpoint by its id. Returns the checkpoint record ({ id, createdAt, description, user }). When NOT to use: to list a branch's checkpoints (use list_checkpoints).

close_branchA

Close a branch (a soft, reversible archive — reopen it later with open_branch). Cannot close the current branch or a permanent branch. Does not reload the editor. When NOT to use: to permanently remove a branch (use delete_branch).

open_branchA

Re-open a previously closed branch. Find closed branches with list_branches({ closed: true }). Does not reload the editor. When NOT to use: to switch the editor onto the branch (use switch_branch).

delete_branchA

DESTRUCTIVE: permanently delete a branch and its checkpoints. Cannot be undone. Cannot delete the current branch or a permanent branch. Does not reload the editor. When NOT to use: to archive a branch reversibly (use close_branch).

start_mergeA

Start merging a source branch into the CURRENT branch (the destination is always the branch the editor is on). Waits for the auto-merge to finish and returns the merge ({ id, mergeProgressStatus, conflicts, numConflicts }). If conflicts is non-empty, resolve them with resolve_conflicts, then apply_merge. Does not reload the editor. When NOT to use: to inspect an in-progress merge (use get_merge).

get_mergeA

Get the current state of a merge, including its status and full conflict list ({ id, mergeProgressStatus, conflicts, numConflicts }). Use to re-check which conflicts are still unresolved before apply_merge. When NOT to use: to start a merge (use start_merge).

resolve_conflictsA

Resolve one or more merge conflicts by picking a side, or revert them to unresolved. resolution "source" keeps the merged-in branch's version, "dest" keeps the current branch's version, "revert" un-resolves. Returns the updated conflict records. Repeat until get_merge shows no unresolved conflicts, then apply_merge. When NOT to use: to inspect a conflict's content first (use get_conflict_file).

get_conflict_fileA

Read the content of one side of a conflicting file so you can decide how to resolve it. Read-only; does not resolve anything. When NOT to use: to choose a resolution (use resolve_conflicts).

apply_mergeA

Apply a merge whose conflicts are all resolved. Call twice: first with finalize:false to prepare and review, then finalize:true to commit. finalize:true writes the merge checkpoint onto the current branch and RELOADS the editor (the tool waits for reconnect and returns vcs_status); finalize:false does not reload. When NOT to use: to abort a merge (use cancel_merge).

cancel_mergeA

Force-stop an in-progress merge, discarding the merge and its conflicts. Project data is untouched. Does not reload the editor. When NOT to use: to commit a merge (use apply_merge).

diff_checkpointsA

Compute the diff between two checkpoints and return the change data. Branch ids default to the current branch. Read-only; does not reload the editor. Use to inspect what changed before merging or restoring. When NOT to use: to roll back to a checkpoint (use restore_checkpoint).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/playcanvas/editor-mcp-server'

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