by playcanvas
MCP Server for AI automation of the PlayCanvas Editor
# Add to your Claude Code skills
git clone https://github.com/playcanvas/editor-mcp-serverGuides for using mcp servers skills like editor-mcp-server.
Last scanned: 5/30/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@hono/node-server: @hono/node-server has authorization bypass for protected static paths via encoded slashes in Serve Static Middleware",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@modelcontextprotocol/sdk: @modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ajv: ajv has ReDoS when using `$data` option",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "body-parser: body-parser is vulnerable to denial of service when url encoding is used",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion Regular Expression Denial of Service vulnerability",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "fast-uri: fast-uri vulnerable to path traversal via percent-encoded dot segments",
"severity": "high"
},
{
"type": "npm-audit",
"message": "flatted: flatted vulnerable to unbounded recursion DoS in parse() revive phase",
"severity": "high"
},
{
"type": "npm-audit",
"message": "hono: Hono JWK Auth Middleware has JWT algorithm confusion when JWK lacks \"alg\" (untrusted header.alg fallback)",
"severity": "high"
},
{
"type": "npm-audit",
"message": "js-yaml: js-yaml has prototype pollution in merge (<<)",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "minimatch: minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"severity": "high"
},
{
"type": "npm-audit",
"message": "path-to-regexp: path-to-regexp vulnerable to Denial of Service via sequential optional groups",
"severity": "high"
},
{
"type": "npm-audit",
"message": "picomatch: Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching",
"severity": "high"
},
{
"type": "npm-audit",
"message": "qs: qs's arrayLimit bypass in comma parsing allows denial of service",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "ws: ws: Uninitialized memory disclosure",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-05-30T16:34:37.473Z",
"npmAuditRan": true,
"pipAuditRan": true
}editor-mcp-server is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by playcanvas. MCP Server for AI automation of the PlayCanvas Editor. It has 123 GitHub stars.
editor-mcp-server returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/playcanvas/editor-mcp-server" and add it to your Claude Code skills directory (see the Installation section above).
editor-mcp-server is primarily written in TypeScript. It is open-source under playcanvas on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh editor-mcp-server against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
██████╗ ██╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ███╗ ██╗██╗ ██╗ █████╗ ███████╗
██╔══██╗██║ ██╔══██╗╚██╗ ██╔╝██╔════╝██╔══██╗████╗ ██║██║ ██║██╔══██╗██╔════╝
██████╔╝██║ ███████║ ╚████╔╝ ██║ ███████║██╔██╗ ██║██║ ██║███████║███████╗
██╔═══╝ ██║ ██╔══██║ ╚██╔╝ ██║ ██╔══██║██║╚██╗██║╚██╗ ██╔╝██╔══██║╚════██║
██║ ███████╗██║ ██║ ██║ ╚██████╗██║ ██║██║ ╚████║ ╚████╔╝ ██║ ██║███████║
╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═══╝ ╚═╝ ╚═╝╚══════╝
███╗ ███╗ ██████╗██████╗ ███████╗███████╗██████╗ ██╗ ██╗███████╗██████╗
████╗ ████║██╔════╝██╔══██╗ ██╔════╝██╔════╝██╔══██╗██║ ██║██╔════╝██╔══██╗
██╔████╔██║██║ ██████╔╝ ███████╗█████╗ ██████╔╝██║ ██║█████╗ ██████╔╝
██║╚██╔╝██║██║ ██╔═══╝ ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██╔══╝ ██╔══██╗
██║ ╚═╝ ██║╚██████╗██║ ███████║███████╗██║ ██║ ╚████╔╝ ███████╗██║ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
An MCP Server for automating the PlayCanvas Editor using an LLM.
[!IMPORTANT]
At the moment, the MCP Server needs to be driven by Anthropic's Claude. Our experience shows that the free tier for Claude does not deliver a big enough chat context to operate the MCP Server reliably. Therefore, we strongly recommend subscribing to a Pro Claude account.
list_entitiesresolve_entitiescreate_entitiesdelete_entitiesduplicate_entitiesmodify_entitiesreparent_entityadd_componentsremove_componentsadd_script_component_scriptattach_scriptlist_assetscreate_assetsdelete_assetsinstantiate_template_assetsset_script_textscript_parseset_material_diffuseset_material_propertiesquery_scene_settingsmodify_scene_settingsstore_searchstore_getstore_downloadcapture_viewportfocus_viewportlaunch_startlaunch_stopcapture_runtimeread_runtime_logsinject_inputThe 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_start opens https://launch.playcanvas.com/<sceneId>?debug=true in a new
window. The extension injects a content script there that connects back to the MCP
server as the "runtime" peer. launch_start returns { url, sceneId, ready }.capture_runtime screenshots the running app (scripts/physics/animation active).read_runtime_logs returns the app's console output + uncaught
exceptions/rejections (newest first, paginated; defaults to warnings + errors).inject_input dispatches keyboard / mouse / touch events to the running app
(e.g. hold W for 500ms, click at a canvas coordinate, tap the screen), so you
can drive end-to-end interactions and then verify with capture_runtime.launch_stop closes the launch window.Notes:
launch_start cannot open the window.chrome://extensions/ after updating it so the new
launch content script + permissions take effect.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:
error field; they set meta.status = "error" and put an actionable message in meta.message (the protocol-level isError flag is also set).list_*, resolve_entities) are a successful empty list, not an error.list_entities / list_assets accept limit (default 50) + offset. Page using meta.nextCursor (pass it back as offset) and stop when meta.hasMore is false.create_entities, modify_entities, add_components, reparent_entity, duplicate_entities, instantiate_template_assets, …) return the resulting entity/asset summaries — including a human-readable hierarchy path — so you rarely need a follow-up list_entities call.readOnlyHint, destructive tools (delete_*) declare destructiveHint, and store tools declare openWorldHint (they reach the network).capture_viewport) return a protocol image block plus a parallel text block carrying the same meta.Run npm install to install all dependencies.
chrome://extensions/ and enable Developer modeLoad unpacked and select the extension folderThe MCP Server can be driven by Cursor or Claude Desktop.
[!TIP]
We have found Claude Desktop to be generally more reliable.
Claude > Settings.Developer and then Edit Config.claude_desktop_config.json, your MCP Config JSON file.File > Preferences > Cursor Settings.+ Add new global MCP server.mcp.json, your MCP Config JSON file.[!TIP]
Also inCursor Settings, selectFeaturesand scroll to theChatsection. ActivateEnable auto-run modeto allow the LLM to run MCP tools without requiring constant authorization. You do this at your own risk (but we prefer it)!
[!IMPORTANT]
In Cursor, ensure you haveAgentselected.AskandEditmodes will not recognize the MCP Server.
This is how your config should look:
Windows
{
"mcpServers": {
"playcanvas": {
"command": "cmd",
"args": [
"/c",
"npx",
"tsx",
"C:\\path\\to\\editor-mcp-server\\src\\server.ts"
],
"env": {
"PORT": "52000"
}
}
}
}
macOS
{
"mcpServers": {
"playcanvas": {
"command": "npx",
"args": [
"tsx",
"/path/to/editor-mcp-server/src/server.ts"
],
"env": {
"PORT": "52000"
}
}
}
}
The PlayCanvas Editor does not connect to the MCP Server automatically. To connect:
CONNECT (the port number should match what is set in your MCP Config JSON File).[!NOTE] 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 in Claude Desktop or Cursor.