PlayCanvas Editor MCP Server
OfficialThe PlayCanvas Editor MCP Server enables automation of the PlayCanvas Editor using an LLM (Large Language Model).
Entity Management: Create, modify, duplicate, reparent, delete, and list entities. Add or remove components to entities, and manage scripts within script components.
Asset Management: Create, list, delete, and instantiate various asset types (CSS, folder, HTML, material, script, shader, template, text). Modify material properties and update script text.
Scene Settings: Query and modify scene settings, including render and physics configurations.
Store Interaction: Search, retrieve, and download assets from the PlayCanvas store, managing licenses and attribution.
Allows automation of the PlayCanvas Editor, providing tools for entity management, asset handling, script creation/editing, material management, scene settings modification, and asset store interactions within the PlayCanvas development environment.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PlayCanvas Editor MCP Servercreate a red cube at position 0, 2, 0"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
██████╗ ██╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ███╗ ██╗██╗ ██╗ █████╗ ███████╗
██╔══██╗██║ ██╔══██╗╚██╗ ██╔╝██╔════╝██╔══██╗████╗ ██║██║ ██║██╔══██╗██╔════╝
██████╔╝██║ ███████║ ╚████╔╝ ██║ ███████║██╔██╗ ██║██║ ██║███████║███████╗
██╔═══╝ ██║ ██╔══██║ ╚██╔╝ ██║ ██╔══██║██║╚██╗██║╚██╗ ██╔╝██╔══██║╚════██║
██║ ███████╗██║ ██║ ██║ ╚██████╗██║ ██║██║ ╚████║ ╚████╔╝ ██║ ██║███████║
╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝
███╗ ███╗ ██████╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗
████╗ ████║██╔════╝██╔══██╗ ██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██╔████╔██║██║ ██████╔╝ ███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██║╚██╔╝██║██║ ██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
██║ ╚═╝ ██║╚██████╗██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝An MCP Server for automating the PlayCanvas Editor using an LLM.
The MCP client is built into the PlayCanvas Editor — no browser extension is needed. Install the server into your MCP client of choice (Claude Code, Codex, Claude Desktop, Cursor, …) and connect the Editor to it.
Available Tools
Entity
list_entitiesresolve_entitiescreate_entitiesdelete_entitiesduplicate_entitiesmodify_entitiesreparent_entityadd_componentsremove_componentsadd_script_component_scriptattach_script
Asset
list_assetscreate_assetsdelete_assetsinstantiate_template_assetsset_script_textscript_parseset_material_diffuseset_material_properties
Scene
query_scene_settingsmodify_scene_settings
Store
store_searchstore_getstore_download
Viewport
capture_viewportfocus_viewport
Runtime (live Launch instance)
launch_startlaunch_stopcapture_runtimeread_runtime_logsinject_input
Related MCP server: HostBridge MCP Server
Runtime Tools
The runtime tools drive a real Launch instance (the editor's Launch button) so you can verify that a scene actually runs, not just how it looks at edit time:
launch_startopenshttps://launch.playcanvas.com/<sceneId>?debug=truein a new window. The editor hands the MCP port to the launch page, which connects back to the MCP server as the "runtime" peer.launch_startreturns{ url, sceneId, ready }.capture_runtimescreenshots the running app (scripts/physics/animation active).read_runtime_logsreturns the app'sconsoleoutput + uncaught exceptions/rejections (newest first, paginated; defaults to warnings + errors).inject_inputdispatches keyboard / mouse / touch events to the running app (e.g. holdWfor 500ms, click at a canvas coordinate, tap the screen), so you can drive end-to-end interactions and then verify withcapture_runtime.launch_stopcloses the launch window.
Notes:
Allow pop-ups for the editor origin, otherwise
launch_startcannot open the window.The launch page uses your existing PlayCanvas login session (same browser), so no extra auth step is needed.
Response Format
Every tool returns a single, consistent envelope so agents can pattern-match on a stable shape:
{
"data": <result> | null, // business payload; an empty set is [], never an error
"meta": {
"tool": "entities:list",
"status": "ok" | "error",
"message": "...", // present only on error; actionable, with a recovery hint
// list tools also include pagination metadata:
"total": 120, "count": 50, "hasMore": true, "nextCursor": "50"
}
}Notes for tool authors / agents:
Errors never use a top-level
errorfield; they setmeta.status = "error"and put an actionable message inmeta.message(the protocol-levelisErrorflag is also set).Empty results (
list_*,resolve_entities) are a successful empty list, not an error.Pagination:
list_entities/list_assetsacceptlimit(default 50) +offset. Page usingmeta.nextCursor(pass it back asoffset) and stop whenmeta.hasMoreisfalse.State snapshots: mutating tools (
create_entities,modify_entities,add_components,reparent_entity,duplicate_entities,instantiate_template_assets, …) return the resulting entity/asset summaries — including a human-readable hierarchypath— so you rarely need a follow-uplist_entitiescall.Annotations: read-only tools declare
readOnlyHint, destructive tools (delete_*) declaredestructiveHint, and store tools declareopenWorldHint(they reach the network).Image tools (
capture_viewport) return a protocolimageblock plus a paralleltextblock carrying the samemeta.
Installation
Requires Node.js 18+. The server is published to npm as @playcanvas/editor-mcp-server, so every client below runs it with npx — nothing to clone or build.
Claude Code
claude mcp add playcanvas -- npx -y @playcanvas/editor-mcp-serverTo share the server with everyone working on a repo, commit a .mcp.json to the project root instead:
{
"mcpServers": {
"playcanvas": {
"command": "npx",
"args": ["-y", "@playcanvas/editor-mcp-server"]
}
}
}Codex
The Codex CLI and the Codex app share ~/.codex/config.toml, so one command covers both:
codex mcp add playcanvas -- npx -y @playcanvas/editor-mcp-serverOn Windows, usecodex mcp add playcanvas -- cmd /c npx -y @playcanvas/editor-mcp-server. If the server times out on first run (while npx downloads the package), raise the startup timeout in ~/.codex/config.toml under [mcp_servers.playcanvas]: startup_timeout_sec = 60.
ChatGPT itself (web and desktop) only supports remote MCP connectors, so it cannot run this local server — Codex is the OpenAI surface to use.
Claude Desktop
Go to Claude > Settings > Developer > Edit Config and add to claude_desktop_config.json:
{
"mcpServers": {
"playcanvas": {
"command": "npx",
"args": ["-y", "@playcanvas/editor-mcp-server"]
}
}
}On Windows, use"command": "cmd" and "args": ["/c", "npx", "-y", "@playcanvas/editor-mcp-server"].
Cursor
Select File > Preferences > Cursor Settings > MCP > Add new global MCP server and add the same JSON as for Claude Desktop.
Custom Port
The server listens for the Editor on WebSocket port 52000 by default. To change it, append --port <number> to the npx args (e.g. npx -y @playcanvas/editor-mcp-server --port 52001) and set the same port in the Editor's MCP popover.
Connecting the Editor to the MCP Server
Open your project in the PlayCanvas Editor.
Click the MCP button at the bottom of the toolbar (below the Publish button).
Check that the port matches your MCP config (default
52000) and clickCONNECT.
Launch windows opened via launch_start (or the Launch button) connect automatically as the runtime peer.
You can currently only connect one instance of the PlayCanvas Editor to the MCP Server at any one time.
You should now be able to issue commands from your MCP client.
Development
To hack on the server itself:
git clone https://github.com/playcanvas/editor-mcp-server.git
cd editor-mcp-server
npm install
npm run watch # or: npm startPoint your MCP client at the checkout instead of the npm package by replacing the npx args with ["tsx", "/path/to/editor-mcp-server/src/server.ts"]. npm run debug starts the server under the MCP Inspector.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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