WordPress plugin that exposes a REST API + MCP (Model Context Protocol) abilities for AI-driven Elementor page editing.
Build, edit, and manage Elementor pages programmatically — designed to be used by AI agents (Claude, GPT, etc.) or any HTTP client.
- Full CRUD on Elementor pages, elements, and templates
- Granular element editing — update a single widget's settings without touching the rest
- Element operations — add, remove, duplicate, move elements in the page tree
- Global kit management — read/write colors, fonts, and site-wide settings
- Widget discovery — list all available widgets and get their control schemas
- MCP protocol support — auto-registers 20 abilities when used with WordPress Abilities API + WordPress MCP Adapter
- CSS cache management — flush Elementor CSS after changes
- WordPress 6.0+
- PHP 7.4+
- Elementor (free or Pro)
- Authentication: WordPress Application Passwords (recommended) or cookie auth
- Download or clone this repository into
wp-content/plugins/:cd wp-content/plugins/ git clone https://github.com/bvisible/elementor-mcp-api.git - Activate the plugin in WordPress admin
- Create an Application Password in Users → Your Profile → Application Passwords
Base URL: https://your-site.com/wp-json/neoservice/v1
| Method | Endpoint | Description |
|---|---|---|
| GET | /pages |
List all Elementor pages |
| GET | /page/{id} |
Full page data (elements tree) |
| GET | /page/{id}/structure |
Lightweight structure (IDs, types, hints) |
| PUT | /page/{id} |
Replace all page data |
| POST | /page |
Create a new page |
| POST | /build-page |
Create or update a full page |
| Method | Endpoint | Description |
|---|---|---|
| GET | /page/{id}/element/{eid} |
Get single element data |
| PATCH | /page/{id}/element/{eid} |
Update element settings (merge) |
| POST | /page/{id}/element |
Add new element |
| DELETE | /page/{id}/element/{eid} |
Remove element |
| POST | /page/{id}/element/{eid}/duplicate |
Duplicate element |
| POST | /page/{id}/element/{eid}/move |
Move element to new position |
| Method | Endpoint | Description |
|---|---|---|
| GET | /templates |
List all templates |
| POST | /template |
Create template (header, footer, etc.) |
| Method | Endpoint | Description |
|---|---|---|
| GET | /kit |
Get global kit settings |
| PUT | /kit |
Update global kit settings |
| Method | Endpoint | Description |
|---|---|---|
| GET | /widgets |
List all registered widgets |
| GET | /widget/{name}/schema |
Get widget control schema |
| GET | /widget/{name}/defaults |
Ready-to-use element JSON with defaults |
| Method | Endpoint | Description |
|---|---|---|
| POST | /flush-css |
Flush Elementor CSS cache |
API="https://your-site.com/wp-json/neoservice/v1"
AUTH="username:your-application-password"
# List pages
curl -s -u "$AUTH" "$API/pages"
# Get page structure (always start here)
curl -s -u "$AUTH" "$API/page/8/structure"
# Update an element's title color
curl -s -X PATCH -u "$AUTH" -H "Content-Type: application/json" \
-d '{"settings":{"title_color":"#333333"}}' \
"$API/page/8/element/f8703b57"
# Flush CSS after changes
curl -s -X POST -u "$AUTH" "$API/flush-css"This plugin can expose its capabilities via the Model Context Protocol for direct AI agent integration:
- Install WordPress Abilities API
- Install WordPress MCP Adapter
- The plugin auto-registers 20 abilities — no configuration needed
MCP endpoint: https://your-site.com/wp-json/mcp/mcp-adapter-default-server
This repo includes a ready-to-use Claude Code skill in claude-skill/. It teaches Claude how to use the API: workflows, element structures, widget settings, layout patterns, and design best practices.
cd elementor-mcp-api/
bash claude-skill/install.shThis copies the skill to ~/.claude/skills/elementor-builder/. Restart Claude Code — then just say "build an Elementor page" and it knows how.
- Full API workflow (discover → explore → edit → flush → verify)
- Elementor element JSON structure and common widget settings
- Reusable section patterns (hero, content rows, icon grids, contact forms, photo collages)
- Design best practices (zigzag layouts, background color alternation, responsive rules)
- Critical gotchas (race conditions, CSS cache, flex layout math)
- Sequential PATCH calls: Never run multiple PATCH calls in parallel on the same page. Each PATCH loads, modifies, and saves the full page — parallel calls overwrite each other. Cross-page parallelism is safe.
- Flush CSS: Always call
/flush-cssafter visual changes — Elementor caches CSS aggressively. - Element IDs: Always provide valid 8-character hex IDs when creating elements.
- PATCH merges settings: Only send the settings you want to change, not the full settings object.
GPL-3.0 — see LICENSE