Skip to main content
Glama
heaventree

elementor-mcp

by heaventree

Elementor MCP

Un servidor MCP para trabajar en sitios WordPress construidos con Elementor: leer la estructura de páginas, editar widgets, gestionar tokens de diseño globales, y hacerlo sin romper nada.

Elementor guarda todo el diseño de la página como un blob JSON en una clave de postmeta protegida (_elementor_data). La API REST de WordPress no puede leerla ni escribirla, por eso los servidores MCP genéricos de WordPress pueden listar tus páginas pero no tocar su contenido. Este proyecto cierra esa brecha.

Qué obtienes

  • 50 herramientas que cubren estructura de páginas, cirugía de elementos, esquemas de widgets, diseño global, plantillas, historial y búsqueda en todo el sitio.

  • Esquemas de widgets en vivo. Las definiciones de controles se leen del propio registro de Elementor del sitio de destino, así que el esquema que obtienes describe exactamente los widgets que ese sitio tiene instalados — núcleo, Pro y cualquier paquete de complementos de terceros — en lugar de una lista fija que queda obsoleta.

  • Escrituras concurrentes seguras. Cada escritura lleva el hash de contenido con el que se leyó la página y se rechaza si la página cambió por debajo. Sin sobrescrituras silenciosas.

  • Deshacer. Cada escritura hace una instantánea del diseño primero. elementor_restore_snapshot revierte el último cambio.

  • Lotes atómicos. La reestructuración de varios pasos se aplica como una sola operación, o no se aplica en absoluto — una página nunca queda a medio editar.

  • Multi-sitio. Un solo servidor puede dar servicio a muchas instalaciones de WordPress, cada una direccionable por nombre, cada una marcable como solo lectura de forma independiente.

Related MCP server: elementor-mcp-agent

Arquitectura

Dos piezas, porque ninguna funciona sola:

MCP client  ──stdio──▶  elementor-mcp (Node)  ──REST──▶  WordPress
                                                          ├── Elementor MCP Bridge (this repo)
                                                          └── Elementor

plugin/elementor-mcp-bridge/ — un plugin de WordPress que expone un espacio de nombres REST elementor-mcp/v1. Lee y escribe documentos de Elementor a través del propio Document::save() de Elementor (el mismo camino que usa el editor, así que la sanitización, las revisiones y la regeneración de CSS ocurren correctamente), e inspecciona el registro de widgets en vivo para los esquemas.

src/ — el servidor MCP. Mantiene el árbol de elementos en su propio proceso y hace el trabajo estructural allí, así que una página de 400 KB se puede editar sin que ese JSON entre jamás en el contexto del modelo.

Esa división es deliberada. La cirugía de árboles vive en TypeScript donde se prueba unitariamente contra 59 casos; el lado PHP se mantiene delgado y delega en Elementor.

Instalación

1. El plugin puente

Construye un zip instalable y súbelo a través de Plugins → Añadir nuevo → Subir plugin en wp-admin:

./scripts/package-plugin.sh
# build/elementor-mcp-bridge-1.0.0.zip

El script se niega a construir si algún archivo falla php -l, así que un plugin roto no se puede empaquetar.

O instálalo directamente:

rsync -a plugin/elementor-mcp-bridge/ user@host:/var/www/site/wp-content/plugins/elementor-mcp-bridge/
wp plugin activate elementor-mcp-bridge     # or activate in wp-admin

Requiere WordPress 5.9+, PHP 7.4+ y Elementor 3.x o 4.x.

Confirma que está activo:

curl -u 'user:app password' https://example.com/wp-json/elementor-mcp/v1/status

En Windows, curl es un alias de Invoke-WebRequest y no acepta -u. Usa el diagnóstico incluido en su lugar, que comprueba la accesibilidad, la API REST, la activación del plugin y las credenciales en orden, de modo que un fallo te dice cuál se rompió:

.\scripts\Test-Bridge.ps1 -SiteUrl https://example.com -Username admin -AppPassword 'abcd efgh ijkl mnop'

O fuerza curl real con curl.exe en lugar del alias.

2. Una contraseña de aplicación

En wp-admin ve a Usuarios → Perfil → Contraseñas de aplicación, añade una llamada elementor-mcp y copia el valor generado. Esta no es la contraseña de acceso de la cuenta; se puede revocar de forma independiente.

El puente comprueba una capacidad real de WordPress en cada ruta, así que el agente solo puede hacer lo que ese usuario podría hacer a mano. Dale una cuenta con el rol más limitado que cubra tu uso — Editor suele ser suficiente, Administrador solo si necesitas cambiar ajustes de diseño de todo el sitio.

3. El servidor

npm install
npm run build

Configuración

Sitio único:

WORDPRESS_URL=https://example.com
WORDPRESS_USERNAME=your-user
WORDPRESS_APP_PASSWORD="abcd efgh ijkl mnop qrst uvwx"

Varios sitios — establece ELEMENTOR_MCP_SITES como un array JSON:

[
  { "name": "live",    "url": "https://example.com",         "username": "u", "appPassword": "..." },
  { "name": "staging", "url": "https://staging.example.com", "username": "u", "appPassword": "...", "readOnly": true }
]

Variable

Propósito

WORDPRESS_URL / WORDPRESS_USERNAME / WORDPRESS_APP_PASSWORD

Credenciales de sitio único

ELEMENTOR_MCP_SITES

Array JSON u objeto con clave de nombre de perfiles de sitio

ELEMENTOR_MCP_CONFIG

Ruta a un archivo JSON con la misma estructura

ELEMENTOR_MCP_DEFAULT_SITE

Qué perfil usan las herramientas cuando se omite site

ELEMENTOR_MCP_READ_ONLY

true rechaza toda escritura, en todos los sitios

ELEMENTOR_MCP_TIMEOUT_MS

Tiempo de espera por petición, por defecto 30000

Conectar un cliente

Claude Code:

claude mcp add elementor -- node /path/to/elementor-mcp/dist/index.js

O editando directamente la configuración de un cliente MCP:

{
  "mcpServers": {
    "elementor": {
      "command": "node",
      "args": ["/path/to/elementor-mcp/dist/index.js"],
      "env": {
        "WORDPRESS_URL": "https://example.com",
        "WORDPRESS_USERNAME": "your-user",
        "WORDPRESS_APP_PASSWORD": "abcd efgh ijkl mnop qrst uvwx"
      }
    }
  }
}

Cómo usarlo bien

Las descripciones de las herramientas apuntan a esto, pero la versión corta:

  1. elementor_site_status una vez por sitio — versiones, número de widgets, qué puede hacer el usuario autenticado.

  2. elementor_get_outline para obtener los ids de los elementos. No recurras a elementor_get_page_tree a menos que realmente necesites todos los ajustes; los esquemas son una fracción del tamaño.

  3. elementor_get_widget_schema antes de establecer ajustes de widgets desconocidos. Los nombres de los controles no son adivinables, y una clave incorrecta se guarda silenciosamente sin efecto visible — esta es la forma más común en que la automatización de Elementor sale mal.

  4. elementor_batch_edit para cualquier cosa de varios pasos.

  5. elementor_render_page para confirmar el resultado.

Los ajustes responsivos usan sufijos _tablet y _mobile (padding, padding_tablet, padding_mobile); el esquema marca qué controles son responsivos y detalla las claves exactas.

Modelo de seguridad

Preocupación

Cómo se maneja

Ediciones concurrentes

Las escrituras llevan el hash leído al cargar; una página cambiada devuelve 409 y el servidor reintenta una vez con datos frescos

Errores

Cada escritura hace una instantánea del diseño primero; elementor_restore_snapshot deshace el último cambio

Ediciones a medias

Los lotes se aplican en memoria y se validan antes de una sola escritura; una operación fallida no escribe nada

Árboles corruptos

Los ids duplicados, los widgets con hijos y los widgets sin widgetType se rechazan antes de escribir

Operaciones destructivas

El borrado permanente y el reemplazo en todo el sitio necesitan EMCP_ALLOW_DESTRUCTIVE en el sitio y confirm: true

Reemplazo en todo el sitio

Por defecto es una ejecución de prueba que informa de cada página que tocaría

Permisos

Cada ruta comprueba una capacidad real de WordPress para el usuario autenticado

CSS obsoleto

El CSS cacheado de Elementor se vacía después de cada escritura, así que los cambios se renderizan de verdad

Para permitir borrados permanentes y reemplazos confirmados en todo el sitio, añade a wp-config.php:

define( 'EMCP_ALLOW_DESTRUCTIVE', true );

Herramientas

Referencia completa en docs/TOOLS.md. Por área:

  • Sitioselementor_list_sites, elementor_site_status, elementor_native_mcp_call

  • Páginas — listar, obtener, esquema, crear, duplicar, borrar, renderizar, actualizar metadatos, árbol completo

  • Elementos — obtener, buscar, añadir widget, añadir contenedor, actualizar, mover, duplicar, borrar, reordenar, envolver, edición por lotes, reemplazar árbol

  • Widgets — listar, esquema, tipos de elemento, etiquetas dinámicas

  • Diseño — globales, establecer color global, actualizar globales, CSS personalizado, clases globales, vaciar CSS

  • Plantillas — listar, obtener, guardar, aplicar, exportar, importar

  • Historial — instantáneas (listar/crear/restaurar), revisiones (listar/restaurar)

  • Contenido — buscar, buscar y reemplazar, uso de widgets, lista de medios, subida de imágenes

El módulo MCP propio de Elementor

Elementor 4.3 incluye un módulo MCP integrado, limitado por la API de Capacidades de WordPress y centrado en las características atómicas de v4 — clases globales, variables, componentes, composiciones. Cuando está presente, elementor_native_mcp_call hace de proxy directo hacia él, así que obtienes esas capacidades junto con todo lo demás aquí.

No es un reemplazo de este servidor: requiere Elementor 4.3+ con dependencias opcionales instaladas, y no cubre el modelo clásico de sección/columna/widget sobre el que está construida la gran mayoría de los sitios Elementor en producción. elementor_site_status informa si está disponible.

Desarrollo

npm run build            # compile
npm test                 # 59 unit tests
npm run typecheck        # source and tests
npm run smoke            # boot the server and exercise the MCP handshake
npm run docs             # regenerate docs/TOOLS.md from the running server
php tests/plugin-load.php   # load the plugin and register all 32 routes
./scripts/package-plugin.sh # build the installable zip

tests/plugin-load.php carga el puente contra funciones de WordPress simuladas y verifica que cada ruta tiene un manejador invocable y una devolución de llamada de permisos. No sustituye a un sitio real, pero detecta los errores fatales de activación que un zip ocultaría hasta la subida.

Licencia

MIT. Ver LICENSE.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for AI-assisted WordPress editing across 12 page builders. 172 tools for content management, page builder editing, WooCommerce, SEO analysis, accessibility scanning, and site intelligence. Edits native builder formats (Elementor, Bricks, Divi, Gutenberg, Beaver Builder, and 7 more) with duplicate-before-edit safety, optimistic locking, and surgical element-level operations
    7
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Agency-grade MCP server for WordPress Elementor — multi-site management for 120+ WordPress sites with safe edits (backup + auto-rollback + post-write verification), template export/import, global widget detection, CSS flush, WP-CLI escape hatch, and headless Chrome screenshots. 34 tools across pages, widgets, templates, bulk find/replace, and fleet operations.
    34
    90
    3
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/heaventree/elementor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server