Skip to main content
Glama
heaventree

elementor-mcp

by heaventree

Elementor MCP

MCP-сервер для работы с сайтами на WordPress, построенными на Elementor — чтение структуры страниц, редактирование виджетов, управление глобальными дизайн-токенами — и всё это без риска что-либо сломать.

Elementor хранит всю раскладку страницы как JSON-блоб в защищённом ключе postmeta (_elementor_data). WordPress REST API не умеет ни читать, ни писать этот ключ, поэтому обычные WordPress MCP-серверы могут показать список ваших страниц, но не могут тронуть их содержимое. Этот проект закрывает этот пробел.

Что вы получаете

  • 50 инструментов, покрывающих структуру страниц, хирургию элементов, схемы виджетов, глобальный дизайн, шаблоны, историю и поиск по всему сайту.

  • Живые схемы виджетов. Определения контролов читаются из реестра Elementor самого целевого сайта, поэтому полученная схема описывает ровно те виджеты, которые установлены на этом сайте — ядро, Pro и любые сторонние аддоны — вместо захардкоженного списка, который устаревает.

  • Безопасные конкурентные записи. Каждая запись несёт хэш контента, с которым страница была прочитана, и отклоняется, если страница изменилась под вами. Никаких тихих перезаписей.

  • Отмена. Каждая запись сначала снимает снапшот раскладки. elementor_restore_snapshot откатывает последнее изменение.

  • Атомарные пакеты. Многошаговый рефакторинг применяется одной операцией или не применяется вовсе — страница никогда не остаётся наполовину отредактированной.

  • Мультисайтовость. Один сервер может обслуживать множество установок WordPress, каждая адресуется по имени, каждая независимо может быть помечена read-only.

Related MCP server: elementor-mcp-agent

Архитектура

Две части, потому что ни одна из них не работает в одиночку:

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

plugin/elementor-mcp-bridge/ — плагин WordPress, открывающий REST-пространство имён elementor-mcp/v1. Он читает и пишет документы Elementor через собственный Document::save() самого Elementor (тот же путь, что использует редактор, поэтому санитизация, ревизии и регенерация CSS происходят корректно) и интроспектирует живой реестр виджетов для получения схем.

src/ — MCP-сервер. Он держит дерево элементов в собственном процессе и выполняет структурную работу там, поэтому страницу на 400 КБ можно редактировать, не загоняя этот JSON в контекст модели.

Такое разделение — осознанное решение. Хирургия дерева живёт в TypeScript, где она покрыта юнит-тестами на 59 кейсов; PHP-сторона остаётся тонкой и делегирует Elementor.

Установка

1. Плагин-мост

Соберите устанавливаемый zip и загрузите его через Плагины → Добавить новый → Загрузить плагин в wp-admin:

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

Скрипт откажется собирать, если хоть один файл не пройдёт php -l, так что сломанный плагин не может быть упакован.

Или установите напрямую:

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

Требуется WordPress 5.9+, PHP 7.4+ и Elementor 3.x или 4.x.

Проверьте, что он работает:

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

В Windows curl — это алиас для Invoke-WebRequest и не принимает -u. Вместо этого используйте встроенную диагностику, которая проверяет по порядку доступность, REST API, активацию плагина и учётные данные, так что при сбое сразу видно, что именно сломалось:

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

Или принудительно используйте настоящий curl через curl.exe, а не алиас.

2. Пароль приложения

В wp-admin перейдите в Пользователи → Профиль → Пароли приложений, добавьте один с именем elementor-mcp и скопируйте сгенерированное значение. Это не пароль входа в аккаунт; его можно отозвать независимо.

Мост проверяет реальную возможность WordPress на каждом маршруте, поэтому агент может делать только то, что этот пользователь мог бы сделать вручную. Дайте ему аккаунт с минимальной ролью, покрывающей ваши задачи — обычно достаточно Редактора, Администратор нужен только если требуется менять общесайтовые настройки дизайна.

3. Сервер

npm install
npm run build

Настройка

Один сайт:

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

Несколько сайтов — задайте ELEMENTOR_MCP_SITES как JSON-массив:

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

Переменная

Назначение

WORDPRESS_URL / WORDPRESS_USERNAME / WORDPRESS_APP_PASSWORD

Учётные данные для одного сайта

ELEMENTOR_MCP_SITES

JSON-массив или объект с ключами-именами профилей сайтов

ELEMENTOR_MCP_CONFIG

Путь к JSON-файлу с той же структурой

ELEMENTOR_MCP_DEFAULT_SITE

Какой профиль используют инструменты, если site опущен

ELEMENTOR_MCP_READ_ONLY

true запрещает любую запись на всех сайтах

ELEMENTOR_MCP_TIMEOUT_MS

Таймаут на запрос, по умолчанию 30000

Подключение клиента

Claude Code:

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

Или напрямую отредактировав конфиг 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"
      }
    }
  }
}

Как использовать правильно

Описания инструментов подталкивают к этому, но краткая версия:

  1. elementor_site_status один раз на сайт — версии, количество виджетов, что может делать аутентифицированный пользователь.

  2. elementor_get_outline для получения id элементов. Не тянитесь к elementor_get_page_tree, если вам не нужны действительно все настройки; аутлайны занимают долю размера.

  3. elementor_get_widget_schema перед установкой незнакомых настроек виджетов. Имена контролов не угадываются, а неверный ключ сохраняется молча без видимого эффекта — это самая частая причина, по которой автоматизация Elementor идёт не так.

  4. elementor_batch_edit для всего многошагового.

  5. elementor_render_page для подтверждения результата.

Респонсивные настройки используют суффиксы _tablet и _mobile (padding, padding_tablet, padding_mobile); схема помечает, какие контролы респонсивные, и явно указывает точные ключи.

Модель безопасности

Проблема

Как решается

Конкурентные правки

Записи несут хэш, с которым страница была загружена; изменённая страница возвращает 409, и сервер один раз повторяет попытку на свежих данных

Ошибки

Каждая запись сначала снимает снапшот раскладки; elementor_restore_snapshot отменяет последнее изменение

Недоделанные правки

Пакеты применяются в памяти и валидируются до единой записи; при сбое операция не пишет ничего

Повреждённые деревья

Дубликаты id, виджеты с детьми и виджеты без widgetType отклоняются до записи

Деструктивные операции

Постоянное удаление и общесайтовая замена требуют EMCP_ALLOW_DESTRUCTIVE на сайте и confirm: true

Общесайтовая замена

По умолчанию — сухой прогон, сообщающий о каждой странице, которой коснётся операция

Права

Каждый маршрут проверяет реальную возможность WordPress для аутентифицированного пользователя

Устаревший CSS

Кэш CSS Elementor сбрасывается после каждой записи, поэтому изменения реально отображаются

Чтобы разрешить постоянные удаления и зафиксированные общесайтовые замены, добавьте в wp-config.php:

define( 'EMCP_ALLOW_DESTRUCTIVE', true );

Инструменты

Полный справочник в docs/TOOLS.md. По областям:

  • Сайтыelementor_list_sites, elementor_site_status, elementor_native_mcp_call

  • Страницы — список, получение, аутлайн, создание, дублирование, удаление, рендер, обновление метаданных, полное дерево

  • Элементы — получение, поиск, добавление виджета, добавление контейнера, обновление, перемещение, дублирование, удаление, переупорядочивание, обёртка, пакетное редактирование, замена дерева

  • Виджеты — список, схема, типы элементов, динамические теги

  • Дизайн — глобальные значения, установка глобального цвета, обновление глобальных значений, кастомный CSS, глобальные классы, сброс CSS

  • Шаблоны — список, получение, сохранение, применение, экспорт, импорт

  • История — снапшоты (список/создание/восстановление), ревизии (список/восстановление)

  • Контент — поиск, поиск и замена, использование виджетов, список медиа, загрузка изображений

Собственный MCP-модуль Elementor

Elementor 4.3 поставляется со встроенным MCP-модулем, ограниченным WordPress Abilities API и ориентированным на атомарные функции v4 — глобальные классы, переменные, компоненты, композиции. Там, где он присутствует, elementor_native_mcp_call проксирует напрямую к нему, так что вы получаете эти возможности в дополнение ко всему, что есть здесь.

Он не заменяет этот сервер: он требует Elementor 4.3+ с установленными опциональными зависимостями и не покрывает классическую модель секция/колонка/виджет, на которой построено подавляющее большинство живых сайтов на Elementor. elementor_site_status сообщает, доступен ли он.

Разработка

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 загружает мост против заглушенных функций WordPress и проверяет, что у каждого маршрута есть вызываемый обработчик и колбэк проверки прав. Это не замена реальному сайту, но это ловит фатальные ошибки активации, которые zip иначе скрыл бы до загрузки.

Лицензия

MIT. См. 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