MCP server for Atlassian Confluence Data Center - access and manage content
Elementor Mcp Agent is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Agentic MCP server for WordPress Elementor — multi-site management, safe Elementor data editing, template import/export, CSS flush, version tracking. Built for agencies running many client sites.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user elementor-mcp-agent '--' npx -y elementor-mcp-agent
# 2 — ask your agent for something these tools do
# list_sites, ping_site, site_health and 31 more
Elementor Mcp Agent costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Elementor Mcp Agent as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user elementor-mcp-agent '--' npx -y elementor-mcp-agentReconnect, or start a new session, and the tools appear in the model’s tool list.
Nothing is required, but it can take ELEMENTOR_MCP_SITES (JSON array of site objects. Each: {id, url, username, application_password}. See README.), ELEMENTOR_MCP_CONFIG_PATH (Alternative: path to a JSON config file. README has the schema.), ELEMENTOR_MCP_DEFAULT_SITE_ID (Optional default site id when a tool is called without site_id.) if you want to set them.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
34 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List every WordPress site configured. Best called first in a session.
No parameter schema on file.
Verify connectivity + authentication to a WordPress site. Returns user identity + WP/Elementor/Elementor Pro versions if accessible.
No parameter schema on file.
Comprehensive site health snapshot: WP/PHP/Elementor versions, disk space (if SSH), plugin count, theme info. Aggregates multiple REST calls into a single overview.
No parameter schema on file.
List pages built with Elementor (have _elementor_edit_mode = 'builder'). Returns id, title, slug, status, modified date.
No parameter schema on file.
Fetch a page's Elementor data structure summary. With verbose=true returns the full parsed tree (potentially MBs).
No parameter schema on file.
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).
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
Restore a page's _elementor_data and _elementor_page_settings from a backup created by a previous edit. TWO-CALL FLOW with confirmation token.
No parameter schema on file.
Duplicate an Elementor page within the same site. Creates a new draft page, copies _elementor_data + _elementor_page_settings + _elementor_edit_mode, flushes CSS.
No parameter schema on file.
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.
No parameter schema on file.
Export an Elementor template (section, page, header, footer, etc.) as a portable JSON object. Output goes into import_elementor_template on another site.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
Execute an arbitrary wp-cli command on a site via SSH. The wp prefix and --path are added automatically — pass only the args (e.g. 'post list --post_type=page'). Destructive commands (delete, drop, search-replace without --dry-run, plugin deactivate/uninstall) require a two-call confirmation…
No parameter schema on file.
Run wp search-replace against wp_postmeta (default) — the standard agency way to update Elementor text content. ALWAYS dry-run first; the apply call requires a confirmation token. Includes --precise --all-tables-with-prefix by default if you specify table='all'.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
Update one or more plugins on a site to their latest version. Requires confirmation token (uses wp-cli).
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
Fleet-wide Elementor version audit. For every site, fetches installed Elementor/Pro versions and compares against wordpress.org latest. Flags outdated installs.
No parameter schema on file.
Fetch a single widget's full settings by id. Use list_widgets_in_page to find the id first.
No parameter schema on file.
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.
No parameter schema on file.
Remove a widget from a page by id. Two-call confirmation. Backs up before deleting; re-reads to confirm the widget is gone.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
Move a widget to a different parent (or different position in the same parent). Re-reads to confirm new parent. Two-call confirmation.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
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.
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Elementor Mcp Agent or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (34 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| list_sites | no tags | |
| ping_site | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| site_health | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_elementor_pages | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| read_page_elementor | untrusted-input | untrusted-input: keyword "fetch", declares openWorldHint: true (interacts with entities outside the server) |
| list_widgets_in_page | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_global_widgets | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| preflight_check | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| elementor_find_replace | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| list_elementor_backups | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| restore_elementor_backup | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| duplicate_elementor_page | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_elementor_templates | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| export_elementor_template | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| import_elementor_template | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| apply_template_to_page | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| wp_cli_run | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| wp_search_replace | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| wp_elementor_flush_css | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| wp_plugin_list | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| wp_plugin_update | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| screenshot_page | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| compare_screenshots | no tags | |
| check_elementor_versions | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| read_widget | untrusted-input | untrusted-input: keyword "fetch", declares openWorldHint: true (interacts with entities outside the server) |
| update_widget_settings | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| delete_widget | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| duplicate_widget | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| swap_widget_type | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| add_widget | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| move_widget | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| bulk_find_replace_site | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| fleet_find_replace | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
| restore_from_file | external-sink | external-sink: declares destructiveHint: true, openWorldHint: true |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 1.3.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Elementor Mcp Agent can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.