Elementor MCP
Comprehensive Elementor MCP Server plugin with 90+ Tools.
Ask AI about Elementor MCP
Powered by Claude Β· Grounded in docs
I know everything about Elementor MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
MCP Tools for Elementor
A WordPress plugin that extends the WordPress MCP Adapter to expose Elementor data, widgets, and page design tools as MCP (Model Context Protocol) tools. This enables AI agents like Claude, Cursor, and other MCP-compatible clients to create and manipulate Elementor page designs programmatically.
50+ Premium Prompts Pack - Generate Superior Landing Pages
Grab the Deal
Features
- 97 MCP Tools covering the full Elementor page-building workflow
- Query & Discovery β List widgets, inspect page structures, read element settings, browse templates, view global design tokens
- Page Management β Create pages, update settings, clear content, import/export templates
- Layout Tools β Add flexbox containers, move/remove/duplicate elements, update containers, find elements, batch update, reorder children, get container schema
- Widget Tools β 51 widget tools: universal add/update for any widget, plus 27 free convenience shortcuts and 22 conditional Pro widget tools
- Pro Widget Support β 22 conditional Pro widget tools including nav menu, loop grid, loop carousel, media carousel, nested tabs, nested accordion, and more
- Theme Builder β Create theme templates (header/footer/single/archive), set display conditions (Pro)
- Dynamic Tags β List all available dynamic tags, bind dynamic data to element settings (Pro)
- Popup Builder β Create popup templates, configure triggers/conditions/timing (Pro)
- Template Tools β Save pages or elements as reusable templates, apply templates to pages
- Global Settings β Update site-wide color palettes and typography presets
- Composite Tools β Build a complete page from a declarative JSON structure in a single call
- Stock Images β Search Openverse for Creative Commons images, sideload into Media Library, add to pages
- SVG Icons β Upload SVG icons from URL or raw markup for use with Elementor icon widgets
- Custom Code β Add custom CSS (element/page level), inject JavaScript, create site-wide code snippets for head/body injection
- Admin Dashboard β Toggle individual tools on/off and view connection configs for all supported MCP clients
Requirements
| Dependency | Version |
|---|---|
| WordPress | >= 6.8 |
| PHP | >= 7.4 |
| Elementor | >= 3.20 (container support required) |
| WordPress MCP Adapter | Latest |
| WordPress Abilities API | Bundled in WP 6.9+, or via Composer |
Installation
- Install and activate Elementor (version 3.20+).
- Install and activate the WordPress MCP Adapter plugin.
- Download the latest release zip from the Releases page.
- In WordPress, go to Plugins > Add New > Upload Plugin and upload the downloaded zip file.
- Activate the plugin through the Plugins menu in WordPress.
- Go to Settings > MCP Tools for Elementor to configure tools and view connection info.
Connecting to the MCP Server
Connect to your WordPress site from any AI client using HTTP. No proxy or Node.js needed β just a WordPress Application Password.
Prerequisites
- Create an Application Password at Users > Profile > Application Passwords.
- Base64-encode your credentials:
echo -n "username:app-password" | base64 - Your MCP endpoint is:
https://your-site.com/wp-json/mcp/elementor-mcp-server
Tip: The plugin's admin page at Settings > MCP Tools for Elementor > Connection can generate all configs automatically β just enter your username and Application Password.
Claude Code
Add as .mcp.json in your project root:
{
"mcpServers": {
"elementor-mcp": {
"type": "http",
"url": "https://your-site.com/wp-json/mcp/elementor-mcp-server",
"headers": {
"Authorization": "Basic BASE64_ENCODED_CREDENTIALS"
}
}
}
}
Claude Desktop
Add to claude_desktop_config.json (%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):
{
"mcpServers": {
"elementor-mcp": {
"type": "http",
"url": "https://your-site.com/wp-json/mcp/elementor-mcp-server",
"headers": {
"Authorization": "Basic BASE64_ENCODED_CREDENTIALS"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project root, or ~/.cursor/mcp.json for global config:
{
"mcpServers": {
"elementor-mcp": {
"url": "https://your-site.com/wp-json/mcp/elementor-mcp-server",
"headers": {
"Authorization": "Basic BASE64_ENCODED_CREDENTIALS"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"elementor-mcp": {
"serverUrl": "https://your-site.com/wp-json/mcp/elementor-mcp-server",
"headers": {
"Authorization": "Basic BASE64_ENCODED_CREDENTIALS"
}
}
}
}
Antigravity
Add to ~/.gemini/antigravity/mcp_config.json:
{
"mcpServers": {
"elementor-mcp": {
"serverUrl": "https://your-site.com/wp-json/mcp/elementor-mcp-server",
"headers": {
"Authorization": "Basic BASE64_ENCODED_CREDENTIALS"
}
}
}
}
WP-CLI stdio (local development)
For local development with WP-CLI available, you can use the stdio transport (no HTTP auth needed):
{
"mcpServers": {
"elementor-mcp": {
"type": "stdio",
"command": "wp",
"args": [
"mcp-adapter", "serve",
"--server=elementor-mcp-server",
"--user=admin",
"--path=/path/to/wordpress"
]
}
}
}
Node.js proxy (remote sites or protocol compatibility)
For remote WordPress sites, environments without WP-CLI, or when your AI client needs a different MCP protocol version, use the bundled Node.js proxy:
{
"mcpServers": {
"elementor-mcp": {
"type": "stdio",
"command": "node",
"args": ["/path/to/wp-content/plugins/elementor-mcp/bin/mcp-proxy.mjs"],
"env": {
"WP_URL": "https://your-site.com",
"WP_USERNAME": "admin",
"WP_APP_PASSWORD": "xxxx xxxx xxxx xxxx xxxx xxxx"
}
}
}
}
Optional environment variables:
| Variable | Description |
|---|---|
MCP_LOG_FILE | Path to a debug log file (e.g., /tmp/elementor-mcp.log) |
MCP_PROTOCOL_VERSION | Override the protocol version in initialize responses (e.g., 2024-11-05). Use this if your client doesn't support 2025-06-18. |
Testing with MCP Inspector
npx @modelcontextprotocol/inspector wp mcp-adapter serve \
--server=elementor-mcp-server --user=admin --path=/path/to/wordpress
Available Tools
Query & Discovery (7 tools)
| Tool | Description |
|---|---|
list-widgets | All registered widget types with names, titles, icons, categories, keywords |
get-widget-schema | Full JSON Schema for a widget's settings (auto-generated from Elementor controls) |
get-page-structure | Element tree for a page (containers, widgets, nesting) |
get-element-settings | Current settings for a specific element on a page |
list-pages | All Elementor-enabled pages/posts |
list-templates | Saved Elementor templates from the template library |
get-global-settings | Active kit/global settings (colors, typography, spacing) |
Page Management (5 tools)
| Tool | Description |
|---|---|
create-page | Create a new WP page/post with Elementor enabled |
update-page-settings | Update page-level Elementor settings (background, padding, etc.) |
delete-page-content | Clear all Elementor content from a page |
import-template | Import JSON template structure into a page |
export-page | Export page's full Elementor data as JSON |
Layout & Structure (11 tools)
| Tool | Description |
|---|---|
add-container | Add a flexbox container (top-level or nested) |
update-container | Update settings on an existing container |
move-element | Move an element to a new parent/position |
remove-element | Remove an element and all children |
duplicate-element | Duplicate element with fresh IDs |
get-container-schema | Returns the JSON schema for container settings |
find-element | Find elements by type, settings, or CSS class within a page |
update-element | Update settings on any element (widget or container) by ID |
batch-update | Apply multiple element updates in a single call |
reorder-elements | Reorder child elements within a container |
Widgets (51 tools)
| Tool | Description |
|---|---|
add-widget | Universal: add any widget type to a container |
update-widget | Universal: update settings on an existing widget |
add-heading | Convenience: heading widget |
add-text-editor | Convenience: rich text editor widget |
add-image | Convenience: image widget |
add-button | Convenience: button widget |
add-video | Convenience: video widget |
add-icon | Convenience: icon widget |
add-spacer | Convenience: spacer widget |
add-divider | Convenience: divider widget |
add-icon-box | Convenience: icon box widget |
add-accordion | Convenience: collapsible accordion widget |
add-alert | Convenience: alert/notice widget |
add-counter | Convenience: animated counter widget |
add-google-maps | Convenience: embedded Google Maps widget |
add-icon-list | Convenience: icon list for features/checklists |
add-image-box | Convenience: image box (image + title + description) |
add-image-carousel | Convenience: rotating image carousel |
add-progress | Convenience: animated progress bar |
add-social-icons | Convenience: social media icon links |
add-star-rating | Convenience: star rating display |
add-tabs | Convenience: tabbed content widget |
add-testimonial | Convenience: testimonial with quote and author |
add-toggle | Convenience: toggle/expandable content |
add-html | Convenience: custom HTML code widget |
add-menu-anchor | Convenience: invisible anchor for one-page navigation |
add-shortcode | Convenience: embed WordPress shortcodes |
add-rating | Convenience: customizable rating widget |
add-text-path | Convenience: curved/circular text on a path |
add-form | Pro: form widget |
add-posts-grid | Pro: posts grid widget |
add-countdown | Pro: countdown timer widget |
add-price-table | Pro: price table widget |
add-flip-box | Pro: flip box widget |
add-animated-headline | Pro: animated headline widget |
add-call-to-action | Pro: call-to-action widget |
add-slides | Pro: full-width slides/slider |
add-testimonial-carousel | Pro: testimonial carousel/slider |
add-price-list | Pro: price list for menus/services |
add-gallery | Pro: advanced gallery (grid/masonry/justified) |
add-share-buttons | Pro: social share buttons |
add-table-of-contents | Pro: auto-generated table of contents |
add-blockquote | Pro: styled blockquote widget |
add-lottie | Pro: Lottie animation widget |
add-hotspot | Pro: image hotspot widget |
add-nav-menu | Pro: WordPress navigation menu |
add-loop-grid | Pro: dynamic post/CPT loop grid |
add-loop-carousel | Pro: dynamic post/CPT loop carousel |
add-media-carousel | Pro: media carousel for images/videos |
add-nested-tabs | Pro: nested tabs with container content |
add-nested-accordion | Pro: nested accordion with container content |
Templates & Theme Builder (8 tools)
| Tool | Description |
|---|---|
save-as-template | Save a page or element as reusable template |
apply-template | Apply a saved template to a page |
create-theme-template | Pro: Create theme builder template (header/footer/single/archive/error-404/loop-item) |
set-template-conditions | Pro: Set display conditions on a theme builder template |
list-dynamic-tags | Pro: List all available dynamic tags with groups and categories |
set-dynamic-tag | Pro: Bind a dynamic tag to a specific element setting |
create-popup | Pro: Create a popup template |
set-popup-settings | Pro: Set triggers, display conditions, and timing on a popup |
Global Settings (2 tools)
| Tool | Description |
|---|---|
update-global-colors | Update site-wide color palette in Elementor kit |
update-global-typography | Update site-wide typography in Elementor kit |
Composite (1 tool)
| Tool | Description |
|---|---|
build-page | Create complete page from declarative structure in one call |
Stock Images (3 tools)
| Tool | Description |
|---|---|
search-images | Search Openverse for Creative Commons images by keyword |
sideload-image | Download an external image URL into the WordPress Media Library |
add-stock-image | Search + sideload + add image widget to page in one call |
SVG Icons (1 tool)
| Tool | Description |
|---|---|
upload-svg-icon | Upload an SVG icon (from URL or raw markup) for use with icon/icon-box widgets |
Custom Code (4 tools)
| Tool | Description |
|---|---|
add-custom-css | Add custom CSS to an element or page-level with selector keyword support (Pro) |
add-custom-js | Inject JavaScript via HTML widget with automatic <script> wrapping |
add-code-snippet | Create site-wide Custom Code snippets for head/body injection (Pro) |
list-code-snippets | List all Custom Code snippets with location and status filters (Pro) |
All tool names are prefixed with
elementor-mcp/in the MCP namespace (e.g.,elementor-mcp/list-widgets). The MCP Adapter converts these toelementor-mcp-list-widgetsfor transport.
Permission Model
| Tool Group | Required WordPress Capability |
|---|---|
| Read/Query | edit_posts |
| Page creation | publish_pages or edit_pages |
| Widget/layout manipulation | edit_posts + ownership check |
| Template management | edit_posts |
| Theme builder / Popups | edit_posts |
| Dynamic tags | edit_posts + ownership check |
| Global settings | manage_options |
| Delete operations | delete_posts + ownership check |
| Stock image search | edit_posts |
| Stock image sideload | upload_files |
| Custom CSS/JS | edit_posts + ownership check |
| Code snippets | manage_options + unfiltered_html |
Troubleshooting
Tools not appearing in your AI client
If the MCP server connects but no tools appear in Claude Code, Cursor, or other clients:
-
Verify tools are registered. Test the endpoint directly with curl to confirm the server returns tools:
curl -s -u admin:YOUR_APP_PASSWORD \ https://your-site.com/wp-json/mcp/elementor-mcp-server \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'If this returns a valid JSON-RPC response with
serverInfo, the server is working. The issue is likely a protocol version mismatch between the server and your client. -
Check for protocol version mismatch. The WordPress MCP Adapter reports protocol version
2025-06-18. Some clients only support2024-11-05. If using the Node.js proxy, set theMCP_PROTOCOL_VERSIONenvironment variable to override:"env": { "MCP_PROTOCOL_VERSION": "2024-11-05" } -
Enable debug logging. Add the
MCP_LOG_FILEenvironment variable to your proxy config to capture the full request/response flow:"env": { "MCP_LOG_FILE": "/tmp/elementor-mcp-debug.log" }The log will show the protocol version, session IDs, tools count, and response bodies.
-
Use the proxy instead of direct HTTP. If you're using
type: "http"to connect directly, your client must handleMcp-Session-Idheaders. Clients that don't support session management should use the Node.js proxy instead, which handles sessions automatically.
Common errors
- "No MCP servers registered" β Ensure the MCP Tools for Elementor plugin is active and all dependencies (Elementor, MCP Adapter, Abilities API) are met.
- HTTP 401 β Check your Application Password is correct and the user has
edit_postscapability. - "Missing Mcp-Session-Id header" β The HTTP endpoint requires an
Mcp-Session-Idheader on all requests afterinitialize. Use the Node.js proxy (which handles this automatically) instead of direct HTTP connections. - Session errors β If connecting via direct HTTP, your client must capture the
Mcp-Session-Idresponse header frominitializeand include it on all subsequent requests. - WP-CLI not found on Windows β Use the full path to
php.exeandwp-cli.phar.
Sample Prompts
The prompts/ directory includes ready-to-use landing page prompts that demonstrate the full power of MCP Tools for Elementor tools. Each prompt is a complete blueprint β paste it into your AI client and watch an entire page get built automatically.
| Prompt | Industry | Description |
|---|---|---|
| Local Business | General | Multi-purpose small business landing page with hero, services, testimonials, and contact |
| Dental Clinic | Health & Wellness | Professional dental practice with services, team, insurance info, and appointment booking |
| Web Developer Portfolio | Professional Services | Developer portfolio with project showcase, tech stack, and contact form |
| Hair Salon | Lifestyle | Stylish salon page with services menu, stylist profiles, and booking |
| Car Wash | Lifestyle | Car wash with wash packages, add-on services, and membership plans |
Each prompt includes:
- Complete design system (color palette, typography, spacing)
- Image search keywords for stock photo sourcing
- SVG icon specifications
- Full page structure (hero, sections, footer)
- Entrance animations using Elementor's built-in Motion Effects
- Custom CSS for hover states
- Custom JavaScript for scroll animations and counters
- Step-by-step execution order
Want more? A premium collection of 50 industry-specific prompts covering restaurants, med spas, law firms, florists, photography studios, and more is available separately.
Contributing
We welcome contributions from the community! Whether it's bug reports, feature requests, documentation improvements, or code contributions β every bit helps.
See CONTRIBUTING.md for detailed guidelines on how to get started.
Quick start:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-tool) - Make your changes and test locally
- Submit a Pull Request
Contributors
- @msrbuilds β Original author and maintainer
- @mhamzashafiq β Layout & element tools, widget convenience shortcuts, theme builder, dynamic tags, popup builder, WooCommerce widget tools, motion effects support, settings validator improvements
License
This project is licensed under the GNU General Public License v3.0.
