7.6 KiB
name, description, layer
| name | description | layer |
|---|---|---|
| mcp-pro-elements | MCP dedicado (node stdio, ligação `pro-elements` em ~/.omp/agent/mcp.json) para gerir o PRO Elements (fork GPL do Elementor Pro) em starter/ccv/care.descomplicar.pt — estado/versão do plugin, os 4 módulos com toggle próprio via Elementor Experiments (mega_menu, size_variables, atomic_form, pro_interactions), reCAPTCHA v2/v3 das Forms (secret sempre mascarada), licença (vestígio histórico, sempre mascarada), restrições do Element Manager por role (read-only), via WP-CLI/SSH. Usar quando "pro elements", "elementor pro fork", "modulos pro elements", "experiment mega menu", "recaptcha forms elementor", "licenca pro elements", "elementor experiment toggle". | wiki |
/mcp-pro-elements — MCP dedicado ao PRO Elements
Projecto em /media/ealmeida/Dados/Dev/mcp-pro-elements/ (TypeScript, SDK MCP oficial, stdio).
Sem código PHP novo no WordPress — cada tool executa wp option get/update via ssh server sobre
o WP-CLI já instalado. Não é uma extensão do EMCP Tools (plugin comercial Freemius, catálogo de
tools fixo curado pelo autor, sem mecanismo de terceiros).
O que é o PRO Elements (achado por leitura de código-fonte, 19-08-2026)
Não é um addon pack de terceiros como o Element Pack Pro (BdThemes) — é literalmente o
código-fonte do Elementor Pro, rebrandeado: pro-elements.php define
ELEMENTOR_PRO_VERSION/namespace ElementorPro, os mesmos core/, modules/, base/ do
Elementor Pro genuíno. A diferença está em license/api.php: License\API::get_license_data()
está hardcoded para devolver sempre success:true, expires:'lifetime' com a lista completa de
features Pro — não há licença real a validar. wp elementor-pro license activate/deactivate
(comando WP-CLI próprio) tem os métodos vazios (no-ops). A própria description do plugin em
care.descomplicar.pt confirma: "This plugin enables GPL features of Elementor Pro... is not a
substitute for Elementor Pro."
Âmbito
Ao contrário do Element Pack Pro (~150 widgets num único array com toggle individual), o PRO
Elements não tem ecrã "Modules" com toggle por widget. Só 4 dos ~80 módulos têm toggle
próprio, via Elementor Experiments (wp_options.elementor_experiment-<nome>, string simples
active/inactive/default):
| Tool id | Experiment | Default | Disponível |
|---|---|---|---|
mega_menu |
mega-menu |
inactive | 3.31.2 e 3.35.0 (confirmado nos 3 sites) |
size_variables |
e_pro_variables |
active | só 3.35.0 (starter/ccv) — pasta ausente em 3.31.2 (care) |
atomic_form |
e_pro_atomic_form |
inactive | só 3.35.0 |
pro_interactions |
e_pro_interactions |
inactive | só 3.35.0 |
Os restantes módulos (query-control, popup, theme-builder, forms, woocommerce, etc.) activam
sempre — Module::is_active() por omissão true + licença hardcoded sempre completa.
A única configuração geral real e gravável é o reCAPTCHA das Forms (v2/v3). Não existe
"Google Maps API key" própria do PRO Elements — o Google Maps usa a key do Elementor core
(elementor_google_maps_api_key), fora do âmbito deste MCP.
Sites conhecidos
Confirmado por wp plugin get pro-elements nos 3 (19-08-2026) — únicos do bundle com o plugin
activo:
starter→ starter.descomplicar.pt, v3.35.0ccv→ ccv.descomplicar.pt, v3.35.0care→ care.descomplicar.pt, v3.31.2
descomplicar.pt (produção), emanuelalmeida.pt e os sites *ecommerce* não têm o plugin.
Tools (8)
| Tool | Read-only | Uso |
|---|---|---|
pe_list_sites |
sim | Aliases conhecidos + versão confirmada, sem SSH |
pe_get_status |
sim | Versão/estado do plugin via wp plugin get |
pe_get_modules |
sim | Estado dos 4 módulos: installed_in_this_version (dir existe nesta versão), raw_state (valor gravado ou null), effective_active (resolvido incl. default) |
pe_set_module_state |
não | active/inactive/default num módulo; recusa se installed_in_this_version=false (nunca escreve lixo sem efeito) |
pe_get_recaptcha_settings |
sim | Site keys em claro (públicas), secret keys sempre mascaradas ({configured, length}) |
pe_set_recaptcha_settings |
não | Actualiza campos v2/v3 passados; threshold só válido em v3, 0–1 |
pe_get_license_status |
sim | Vestígio de elementor_pro_license_key mascarado + nota fixa sobre o bypass hardcoded |
pe_get_role_restrictions |
sim | elementor_pro_element_manager_role_permission — restrições de widgets por role (vazio nos 3 sites) |
Segurança
- Allowlist fixa de option keys (
src/wpcli.ts) — nuncawp option updategenérico. - Secrets nunca em claro:
secret_keydo reCAPTCHA eelementor_pro_license_keypassam sempre pordescribeSecret()→ só{configured: boolean, length: number}. Site keys reCAPTCHA são públicas por natureza (embutidas em JS no browser) e são devolvidas em claro. - Escritas via base64 em stdin, nunca interpoladas no comando SSH remoto.
elementor_experiment-*e as chaveselementor_pro_recaptcha_*são strings escalares simples (nunca--format=json— corromperia o valor, mesmo gotcha da skillmcp-wpfc).elementor_pro_element_manager_role_permissioné o único array PHP nativo do allowlist — lido com--format=json, nunca escrito por aqui (formato complexo por-widget-por-role gerido pela app React do editor, sem valor real a expor um write raw).elementor_pro_license_keyfica fora da allowlist de escrita — o runtime ignora-a de qualquer forma (ver acima), escrevê-la não activaria nada.
Verificação
Construído e testado ponta-a-ponta contra produção (19-08-2026), os 3 sites:
pe_get_statusidêntico awp plugin get pro-elementsdirecto em starter (3.35.0), ccv (3.35.0) e care (3.31.2).pe_get_modules(care)confirmouinstalled_in_this_versioncorrecto — sómega_menu=true(os outros 3false, ausência das pastasmodules/{variables,atomic-form,interactions}confirmada em disco);pe_get_modules(ccv)confirmou os 4trueesize_variables. effective_active=true(resolve o defaultactiveporqueraw_statenunca foi gravado).pe_get_recaptcha_settings(care)idêntico à leitura directa (site_key/secret_keyvazios,threshold=0.5).pe_get_license_status:care→{configured:true, length:45}(o vestígio real de uma instalação Elementor Pro genuína anterior, encontrado emwp_options);starter/ccv→{configured:false}(nunca tiveram licença real).- Escrita com round-trip idempotente, duas vezes:
pe_set_module_state(care, mega_menu, "default")— valor antes/depois idêntico ("default"), confirmado porwp option getdirecto fora do MCP;pe_set_recaptcha_settings(care, v3, threshold=0.5)— valor antes/depois idêntico (0.5), confirmado da mesma forma. - Guard testado:
pe_set_module_state(care, size_variables, "active")recusado com erro claro (módulo não existe em 3.31.2) — nenhuma escrita tentada. - Nenhum segredo devolvido em claro em qualquer chamada.
Skills relacionadas
mcp-element-pack— Element Pack Pro (BdThemes), um addon pack de terceiros genuíno, com ~150 widgets num único array de toggle — não confundir com este MCP (o PRO Elements é o próprio Elementor Pro rebrandeado, mecanismo de toggle completamente diferente).element-pack-widgets— catálogo/inserção de widgets Element Pack via EMCP; não aplicável ao PRO Elements (os widgets Pro do Elementor inserem-se pela ligação EMCP normal do site, não por este MCP de configuração admin).mcp-wpfc— mesmo padrão de gotcha JSON vs string escalar emwp option get/update.