list_sitesLABSCO SUMMARY
It assumes the write API lies, and checks.
Every mutating widget tool re-reads the page from WordPress after writing and reports what actually persisted — mutated, reread_ok, matches_requested and the canonical state. That exists because REST can return 200 while plugin filters silently drop the payload; when matches_requested comes back false, treat it as a failure regardless of the HTTP status and restore from the backup key in the response. The guardrails are hard-coded rather than advisory: backup before write, validate JSON after edit, global-widget writes blocked by default, and rm -rf, sudo and database resets blocked through WP-CLI no matter what you confirm.
What it is
An MCP server aimed at agencies running many client sites on Elementor. It covers pages, widgets, templates, screenshots and a WP-CLI escape hatch, and wraps every mutation in the same contract: back up, apply, validate, flush CSS, roll back if the JSON came out invalid.
What you get
- Site handling —
list_sites,ping_sitefor an auth and version probe,site_healthfor a multi-call snapshot - Page work:
list_elementor_pages,read_page_elementorfor a parsed summary or the full tree,list_widgets_in_page,duplicate_elementor_page elementor_find_replace, which runs dry-run then token then apply then backup then validate, and rolls back if the result does not parse- Widget-level CRUD —
read_widget,update_widget_settings,delete_widget,duplicate_widget,swap_widget_type,add_widget,move_widget list_global_widgetsandpreflight_check, which warn before you edit a shared widget that other pages depend on- Templates across sites:
export_elementor_templateto portable JSON,import_elementor_template,apply_template_to_page - Backup and restore chain —
list_elementor_backups,restore_elementor_backup,restore_from_file, each taking a pre-restore safety backup first - Fleet operations:
bulk_find_replace_siteacross one site's Elementor pages,fleet_find_replaceacross every site in the pool with a mandatory dry run,check_elementor_versionsagainst the wordpress.org latest - Visual checks —
screenshot_pagerenders any URL through headless Chrome andcompare_screenshotsdiffs by SHA-256 and byte delta - A WP-CLI route for what REST cannot do safely:
wp_cli_runwith destructive-pattern detection,wp_search_replacewith a mandatory dry run,wp_elementor_flush_css,wp_plugin_listandwp_plugin_update
Requirements
A WordPress Application Password per site, generated from the user profile page, plus the site URL and username. Sites are declared as a JSON array in ELEMENTOR_MCP_SITES, or in a file pointed at by ELEMENTOR_MCP_CONFIG_PATH; ELEMENTOR_MCP_DEFAULT_SITE_ID sets which site a tool uses when none is named. Run with npx -y elementor-mcp-agent — the npm package is elementor-mcp-agent, 1.3.0 in package.json and server.json. The ssh block is optional but unlocks 8 additional tools (the WP-CLI escape hatch and postmeta-backed backups); without it backups fall back to local JSON files. wp_cli_path auto-detects if omitted. MIT licensed.
Setup effort
One command plus credentials — npx -y elementor-mcp-agent, then supply credentials
USE CASES
Changing a phone number across every client site
Dry-run the replacement fleet-wide, review what would change, then apply with a per-page backup and validation on each.
Editing a page without breaking it
Preflight the page for shared-widget dependencies, read the widget, update its settings, and let validation roll the change back if the JSON comes out wrong.
Recovering from a bad edit
List the backups for that page and restore the one from before the change, with a safety backup taken first.
Rolling a layout out to another site
Export the template as portable JSON, import it into the target site, and apply it onto an existing page.
Confirming a change did not shift the page
Screenshot before and after through headless Chrome and compare by hash and byte delta.
Finding sites that have fallen behind
Check installed Elementor versions across the pool against the current release and plan updates from the result.
34 tools
Listed in project docs. Your client may show a different list.
ping_sitesite_healthlist_elementor_pagesread_page_elementorlist_widgets_in_pagelist_global_widgetspreflight_checkelementor_find_replacelist_elementor_backupsrestore_elementor_backupduplicate_elementor_pagelist_elementor_templatesexport_elementor_templateimport_elementor_templateapply_template_to_pagewp_cli_runwp_search_replacewp_elementor_flush_csswp_plugin_listwp_plugin_updatescreenshot_pagecompare_screenshotsread_widgetupdate_widget_settingsdelete_widgetduplicate_widgetswap_widget_typeadd_widgetmove_widgetbulk_find_replace_sitefleet_find_replacerestore_from_filecheck_elementor_versionsBEFORE YOU INSTALL
What to know first
Tools you get
34 tools named in the project's documentation.
Requires
- npx on PATH
- ELEMENTOR_MCP_SITES in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
npx -y elementor-mcp-agentMCP Clients
Claude Desktop
{
"mcpServers": {
"elementor": {
"command": "npx",
"args": [
"-y",
"elementor-mcp-agent"
],
"env": {
"ELEMENTOR_MCP_SITES": "[{\"id\":\"acme\",\"url\":\"https://acme.com\",\"username\":\"admin\",\"application_password\":\"...\"}]"
}
}
}
}