by msrbuilds
WordPress plugin that turns Elementor into an MCP server — 97 AI-ready tools for building, editing, and managing page designs programmatically.
# Add to your Claude Code skills
git clone https://github.com/msrbuilds/elementor-mcpA 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.
No comments yet. Be the first to share your thoughts!
| 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 |
Connect to your WordPress site from any AI client using HTTP. No proxy or Node.js needed — just a WordPress Application Password.
echo -n "username:app-password" | base64https://your-site.com/wp-json/mcp/elementor-mcp-serverTip: The plugin's admin page at Settings > MCP Tools for Elementor > Connection can generate all configs automatically — just enter your username and Application Password.
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"
}
}
}
}
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"
}
}
}
}
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"
}
}
}
}
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"
}
}
}
}
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"
}
}
}
}
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"
]
}
}
}
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. |
npx @modelcontextprotocol/inspector wp mcp-adapter serve \
--server=elementor-mcp-server --user=admin --path=/path/to/wordpress
| 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) |
| 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 |
| 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 |
| `