elementor-mcp-agent
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ELEMENTOR_MCP_SITES | Yes | JSON array of site objects. Each site object requires id, url, username, application_password, and optionally an ssh object. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_sitesA | List every WordPress site configured. Best called first in a session. |
| ping_siteA | Verify connectivity + authentication to a WordPress site. Returns user identity + WP/Elementor/Elementor Pro versions if accessible. |
| site_healthA | Comprehensive site health snapshot: WP/PHP/Elementor versions, disk space (if SSH), plugin count, theme info. Aggregates multiple REST calls into a single overview. |
| list_elementor_pagesA | List pages built with Elementor (have _elementor_edit_mode = 'builder'). Returns id, title, slug, status, modified date. |
| read_page_elementorA | Fetch a page's Elementor data structure summary. With verbose=true returns the full parsed tree (potentially MBs). |
| list_widgets_in_pageA | Flat list of every widget in a page with id, type, parent path, and an excerpt of the first text setting (for spot-checking before find/replace). |
| list_global_widgetsA | List all global widgets on a site (Elementor library entries of type 'widget'). These are shared across pages — editing one affects every page using it. |
| preflight_checkA | Validate a page is safe to edit. Checks: page exists, is Elementor-built, data parses cleanly, references valid global widgets, isn't currently locked by another editor. |
| elementor_find_replaceA | Find/replace plain text in every widget on one page. TWO-CALL FLOW: dry-run returns match_count + detailed widget hits + confirmation_token. Second call with token applies the change with auto-backup + JSON validation + auto-rollback if validation fails + CSS flush. |
| list_elementor_backupsA | List timestamped backups of a page's Elementor data (created by previous edit ops). Use restore_elementor_backup with one of these meta keys to roll back. |
| restore_elementor_backupA | Restore a page's _elementor_data and _elementor_page_settings from a backup created by a previous edit. TWO-CALL FLOW with confirmation token. |
| duplicate_elementor_pageA | Duplicate an Elementor page within the same site. Creates a new draft page, copies _elementor_data + _elementor_page_settings + _elementor_edit_mode, flushes CSS. |
| read_widgetA | Fetch a single widget's full settings by id. Use list_widgets_in_page to find the id first. |
| update_widget_settingsA | Shallow-merge a partial settings object into one widget. Backs up the page first, validates the result, auto-flushes CSS, then re-reads the page and verifies the patch persisted (matches_requested in the response). Two-call confirmation. |
| delete_widgetA | Remove a widget from a page by id. Two-call confirmation. Backs up before deleting; re-reads to confirm the widget is gone. |
| duplicate_widgetA | Duplicate a widget in place (right after the original). The clone gets a new id. Re-reads to confirm the clone persisted. Two-call confirmation. |
| swap_widget_typeA | Replace a widget's type (e.g., heading → button) while preserving its id and position. Provide full new_settings — the old settings are NOT carried over (different widget types have incompatible schemas). Re-reads to confirm. Two-call confirmation. |
| add_widgetA | Append a new widget to a parent container (section, column, or container) on a page. Re-reads to confirm the new widget exists under the parent. Two-call confirmation. |
| move_widgetA | Move a widget to a different parent (or different position in the same parent). Re-reads to confirm new parent. Two-call confirmation. |
| list_elementor_templatesA | List Elementor library entries on a site: saved sections, pages, popups, headers/footers (Theme Builder Pro), single/archive templates (Theme Builder Pro), and global widgets. Type filter narrows results. |
| export_elementor_templateA | Export an Elementor template (section, page, header, footer, etc.) as a portable JSON object. Output goes into import_elementor_template on another site. |
| import_elementor_templateA | Import a portable template JSON (output of export_elementor_template) into a target site as a new library entry. Useful for cross-site template sync. |
| apply_template_to_pageA | Copy the _elementor_data + _elementor_page_settings of a SOURCE template (or page) onto a TARGET page on the same site. Backs up the target first. Use to apply a section/page template to an existing draft. |
| bulk_find_replace_siteA | Find/replace plain text in every Elementor page on a single site. TWO-CALL FLOW: dry-run returns per-page match_count + total + confirmation_token. Apply iterates each page (auto-backup + validate + flush per page). Slower than wp_search_replace but works without SSH and gives per-page granularity. |
| fleet_find_replaceA | Find/replace plain text across every Elementor page of every site in the pool. Same flow as bulk_find_replace_site but iterates across sites. Returns per-site + grand-total summary. Dry-run first; second call applies. Use sparingly — this is the nuclear option. |
| restore_from_fileA | Restore a page from a JSON backup file (created by ANY earlier op with backup_to_file=true or by direct fullBackup with to_file). Requires the file_path returned by that backup. Two-call confirmation. |
| wp_cli_runA | Execute an arbitrary wp-cli command on a site via SSH. The |
| wp_search_replaceA | Run |
| wp_elementor_flush_cssA | Flush Elementor's CSS cache on a site using the 3-level fallback strategy (REST endpoint → wp-cli native → option/meta delete). Always call after writing _elementor_data programmatically. |
| wp_plugin_listA | List installed plugins on a site with name, version, status (active/inactive), and update_version (if outdated). Uses WP-CLI for accurate version data including update_version. |
| wp_plugin_updateA | Update one or more plugins on a site to their latest version. Requires confirmation token (uses wp-cli). |
| screenshot_pageA | Capture a PNG screenshot of a page's frontend (visitor-facing URL). Requires a Chrome/Chromium binary on the host. Returns the local file path so the LLM can analyse it or compare against another shot. |
| compare_screenshotsA | Compare two screenshot files via SHA-256 hash equality and size delta. Quick way to spot whether a page changed visually after an edit. For pixel diffs, use a dedicated tool externally. |
| check_elementor_versionsA | Fleet-wide Elementor version audit. For every site, fetches installed Elementor/Pro versions and compares against wordpress.org latest. Flags outdated installs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| README | Elementor documentation snippet (scraped from developer.elementor.com) |
| hooks-actions | Elementor documentation snippet (scraped from developer.elementor.com) |
| safe-editing | Elementor documentation snippet (scraped from developer.elementor.com) |
| widget-structure | Elementor documentation snippet (scraped from developer.elementor.com) |
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/Mogacode-ma/elementor-mcp-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server