Editor MCP Server
MCP Server for AI automation of the PlayCanvas Editor
Editor MCP Server is an open-source mcp server by playcanvas, written mainly in TypeScript, with 149 GitHub stars and the MIT license. Its code was last updated Oct 29, 2026.
Scan summary: scanned Nov 5, 2026 at commit 2383d7a. Seen able to run shell commands, connect to databases. Scan policy
2383d7a · Nov 5, 2026Findings (9)
- mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
src/server.ts:37 - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
src/server.ts:48 - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.Runs shell commands. Fine for some tools, but it means the agent can run anything your user can.
src/server.ts:55 - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.body-parser@2.3.0: 1 known vulnerabilityGHSA-27r3-jxmh-p828
package-lock.json - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.zod@3.25.76: 1 known vulnerabilityGHSA-mrhx-c7xc-m3w5
package-lock.json - lowLow. Minor, or common in normal tools. Shown for information.fast-uri@3.1.8: 4 known vulnerabilitiesGHSA-333x-w4r6-6crp, GHSA-w74x-v6f9-j3xg, GHSA-wjr9-j795-jxcr, GHSA-xhq7-xmqj-769h
package-lock.json - lowLow. Minor, or common in normal tools. Shown for information.minimatch@10.2.5: 1 known vulnerabilityGHSA-g3hv-75wg-m249
package-lock.json - lowLow. Minor, or common in normal tools. Shown for information.qs@6.16.0: 1 known vulnerabilityGHSA-6pq8-jhm2-2vcw
package-lock.json - lowLow. Minor, or common in normal tools. Shown for information.No manifest declaring network access and environment variables (agent.json)
Network activity
Tools exposed (130)
create_entitiesCreate 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_
modify_entitiesSet 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.<type>.<prop>", e.g. "components.light.intensity", "components.
duplicate_entitiesDuplicate 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 enti
reparent_entityMove 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 direc
delete_entitiesPermanently delete entities and all of their descendants. This is destructive and not undoable via this tool. The scene root cannot be deleted. Returns { deleted: <count> }. When NOT to use: to temporarily hide an entity (set enabled=false via modify_entities instead) or to remove a single component
get_entityGet the complete edit-time JSON for one entity by resource_id.
list_entitiesList 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 nextCurs
resolve_entitiesResolve 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 success
add_componentsAdd 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
remove_componentsRemove 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.<name>.enabled=false via modify_entities).
add_script_component_scriptAdd 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_scriptAttach 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 cr
add_entity_scriptsAttach a parsed script to one or more entities, creating script components when needed.
remove_entity_scriptsRemove a script from one or more entities.
move_entity_scriptMove a script to a new execution-order index on an entity.
search_entitiesFuzzy-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_scrip
find_entities_by_scriptList 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_assetsCreate 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
list_assetsList 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 whe
get_assetGet the complete JSON for one project asset by id.
get_asset_referencesList the project assets, entities, or settings that reference an asset.
delete_assetsPermanently delete assets by id. This is destructive; entities referencing the deleted assets will lose those references. Returns { deleted: <count> }. When NOT to use: to remove an asset reference from an entity without deleting the asset itself (use modify_entities).
instantiate_template_assetsInstantiate 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_assetsUpload 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_assetsEdit 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_assetsMove assets to a folder in the designated project and wait until their paths update. Omit folderId to move them to the root.
duplicate_assetsDuplicate assets in their current folders and return the created asset summaries.
replace_assetReplace references to one asset with another asset.
reimport_assetsRe-run the import pipeline for existing source assets and return succeeded and failed entries.
download_assetDownload an asset to a local file. Downloads are limited to 512 MiB and never overwrite unless overwrite=true.
get_template_overridesRead the current apply/revert override records for a template instance.
apply_template_overridesApply all overrides from a template instance, or only the supplied override records.
revert_template_overridesRevert all overrides on a template instance, or only the supplied override records.
unlink_template_instancesUnlink template instances while keeping their current entity data.
set_material_diffuseSet 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_propertiesSet 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
get_asset_textRead 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_textOverwrite the full contents of a CSS, HTML, JSON, script, shader, or text asset.
set_script_textOverwrite 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
script_parseParse 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_eventsGet the stable-id event map for a GLB animation asset, including time and optional number/string payloads.
modify_animation_eventsAdd, 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_graphGet the complete structural data for an anim state graph asset, including layers, states, transitions, conditions, and parameters.
modify_anim_state_graphApply 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 i
bake_lightmapsBake scene lightmaps, optionally limited to the given entities. Returns only after baking finishes and reports model assets missing UV1.
unwrap_model_assetGenerate UV1 data for a model asset using the editor's unwrap worker and update its source file.
cancel_model_unwrapCancel an in-progress UV1 unwrap for a model asset.
convert_texture_assetConvert a texture source to a new AVIF, JPEG, PNG, or WebP texture asset.
create_texture_atlasDuplicate a texture asset as an editable texture atlas and return the new asset.
create_cubemap_from_textureConvert an equirectangular texture to six face textures and a cubemap asset.
process_font_assetRebuild a font asset for an explicit character set and optional inversion setting.
generate_texture_metadataGenerate missing pipeline metadata for a texture asset.
process_texture_variantsCompress or remove explicit texture variants and wait for processing to settle.
prefilter_cubemapGenerate runtime lighting data for a cubemap.
clear_cubemap_prefilterRemove generated runtime lighting data from a cubemap.
modify_sprite_assetModify sprite data (atlas, frame order, pixels per unit, render mode) or replace a texture atlas frame map in one undoable edit.
modify_bundle_assetAdd or remove project assets from a bundle. Returns accepted and rejected ids; invalid asset types and duplicates are rejected.
list_buildsList publish and download builds for the designated project, including durable job status and artifacts.
get_buildGet a publish or download build job by id from the designated project. buildId is the durable build JOB id from list_builds/create_build, not the app id.
create_buildCreate a published PlayCanvas build for scenes in the designated project. Returns { buildId, appId, status, url, name }: buildId is the durable build JOB id from list_builds/create_build (the id get_build/set_primary_build/delete_build take), appId is the published app id, and url is the playable ap
download_buildCreate 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_buildSet a completed publish build as the project primary build. buildId is the durable build JOB id from list_builds/create_build, not the app id.
delete_buildPermanently delete a build job and its linked artifact from the designated project. buildId is the durable build JOB id from list_builds/create_build, not the app id.
modify_scene_settingsModify 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 se
query_scene_settingsRead the current scene-wide settings (physics + rendering). Returns the full settings object. When NOT to use: to change settings (use modify_scene_settings).
rename_sceneRename the currently loaded scene. Load another scene first to rename it.
list_scenesList 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_sceneGet 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_sceneLoad (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_sceneCreate 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_sceneDuplicate 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_scenePermanently 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_settingsModify 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
query_project_settingsRead 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_settingsRead 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_settingsSet 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 pa
list_projectsList the signed-in user's projects (or an organization's, by ownerId) as summaries: { id, name, description, private, owner, ownerId, modified }. Works from the Editor's project manager (/editor) with no project open. Use an id with open_project or get_project. When NOT to use: to read the open proj
get_projectRead one project's summary ({ id, name, description, private, owner, ownerId, modified, open }). Omit projectId for the project open in the Editor. Errors if no projectId is given and no project is open. When NOT to use: to read project settings like physics or rendering (use query_project_settings)
open_projectOpen a project in the connected Editor tab by id (from list_projects or create_project). This RELOADS the tab into that project; the tool waits for the Editor to reconnect and returns get_project for the newly open project. Opening the project that is already open does nothing. When NOT to use: to s
create_projectCreate a new blank project on your account (or an organization you belong to, via its username in owner) and return its summary. Only name, description, private and owner can be set. Set open:true to also open it in the Editor (RELOADS the tab, waits for the reconnect, returns get_project). If the b
update_projectChange a project's name, description or visibility (private). Requires admin access to the project; plan limits on private projects apply. Returns the updated summary. When NOT to use: to change project settings like physics or rendering (use modify_project_settings).
store_searchSearch 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_getGet 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_downloadClone/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_licensesList valid Store licenses for project imports.
sketchfab_searchSearch downloadable Sketchfab models.
sketchfab_getGet a Sketchfab model by uid.
sketchfab_importImport a downloadable Sketchfab model into the current project.
my_assets_searchSearch assets owned by the current user.
my_assets_importImport an asset owned by the current user into the current project.
query_viewport_stateRead the exact editor viewport camera and overlay state so it can be restored after visual inspection.
set_viewport_stateSet 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_visibilityList entities hidden only in the editor viewport. This does not read or change persisted entity enabled values.
set_viewport_visibilityHide or show entities only in the editor viewport without changing their persisted enabled values.
capture_viewportCapture 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 run
focus_viewportFrame 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: <count> }. When NOT to use: to move an in-scene camera entity (use modify_entities on its transform).
focus_cameraAim 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_startStart 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, engineVersio
launch_stopStop 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.
list_engine_versionsList the engine channels and versions the connected Editor can launch and build with, plus the version a default launch would use. Returns { available: [{ channel, version }], launchDefault: { channel, version, source } } where source is launch-option (the Launch button's "Use Release Candidate"), s
capture_runtimeScreenshot 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. Works on both We
read_runtime_logsRead 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). Exceptions and r
query_runtime_stateRead 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, ena
inject_inputDispatch 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 fram
undoUndo 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).
redoRedo 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_selectionRead 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_selectionReplace 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 i
clear_selectionClear the editor's current selection.
read_editor_logsRead recent edit-time Editor console logs with filters and pagination.
set_transform_gizmoSet 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_statusRead 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
list_branchesList 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
create_branchCreate 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 ch
switch_branchSwitch (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_checkpointsList 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:
create_checkpointCreate 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 whic
restore_checkpointRestore (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_checkpo
hard_reset_checkpointDESTRUCTIVE: 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
get_checkpointGet 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_branchClose 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_branchRe-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_branchDESTRUCTIVE: 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_mergeStart 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_m
get_mergeGet 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_conflictsResolve 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,
get_conflict_fileRead 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_mergeApply 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 do
cancel_mergeForce-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_checkpointsCompute 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).
Automated result for the commit shown. See our scan policy. View the scan log
Maintainers can claim the listing to rescan, or dispute a result.
Editor MCP Server alternatives
View more →Similar mcp servers in Productivity & Workflow, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Editor MCP Server (this page) playcanvas | 149 | MIT | Oct 29, 2026 | Scanned, no flagged issues |
| N8n MCP czlonkowski | 23k | MIT | Oct 27, 2026 | Scanned, no flagged issues |
| Trigger Dev triggerdotdev | 17k | Apache-2.0 | Oct 31, 2026 | Scanned, no flagged issues |
| Skill Seekers yusufkaraaslan | 15k | MIT | Sep 30, 2026 | Scanned, no flagged issues |
| Windows MCP CursorTouch | 11k | MIT | Nov 1, 2026 | Scanned, no flagged issues |
| Mobile MCP mobile-next | 10k | Apache-2.0 | Oct 30, 2026 | Scanned, no flagged issues |