--- name: mcp-wpmeteor description: MCP dedicado multi-site (node stdio, ligação `wpmeteor` em ~/.omp/agent/mcp.json) para gerir o WP Meteor (delay/reorder de JavaScript não crítico) em qualquer site do bundle Descomplicar® via WP-CLI/SSH — estado do plugin, config completa, toggle de módulo, delay do ultimate-reorder, exclusões manuais, telemetria detected. Site é um parâmetro em cada tool. Usar quando "gestão wp meteor", "wpmeteor mcp", "desligar ultimate reorder via mcp", "mudar delay wp meteor", "exclusões wp meteor mcp", "activar módulo elementor-pp". layer: wiki --- # /mcp-wpmeteor — MCP dedicado multi-site ao WP Meteor Projecto em `/media/ealmeida/Dados/Dev/mcp-wpmeteor/` (TypeScript, SDK MCP oficial, stdio). Sem código PHP novo no WordPress: cada tool executa `wp option get` / `wp option patch` via `ssh server` sobre o WP-CLI já instalado. O plugin **não regista nenhum comando WP-CLI próprio** (confirmado por grep a todo o código-fonte — ver skill `wp-meteor`); toda a config vive numa única option, `wp-meteor-settings`. **Relação com a skill `wp-meteor`:** essa skill é a fonte de conhecimento completa — os 5 módulos reais, a semântica exacta do `delay`, as duas camadas de exclusão automática embutidas (`gdpr`, `Compatibility`), os mecanismos de bypass automático, diagnóstico de CLS/CWV. Esta skill é o "como executar" — qual tool chamar para cada operação. Consultar `wp-meteor` para entender uma definição antes de a alterar por aqui. ## Âmbito Config do WP Meteor: 5 módulos, delay do `ultimate-reorder`, exclusões manuais (`exclude.value`), leitura da telemetria `detected`. Não cobre: activação/desactivação do próprio plugin (`emcp-tools activate-plugin`/`deactivate-plugin` já cobre isso genericamente), diagnóstico de CLS/CWV com Chrome DevTools (workflow manual, ver skill `wp-meteor` §"Testar isoladamente via Chrome DevTools"). ## Sites conhecidos Chamar `wpmeteor_list_sites` para a lista actual com path e nota de estado. **Verificado ao vivo 19-08-2026: só `emanuelalmeida` tem o WP Meteor instalado** — os outros 7 sites reais do bundle (`descomplicar`, `starter`, `ccv`, `care`, `ecommerce-demo`, `e-commerce`, `ecommerce`) não o têm. Também aceita um path absoluto directamente para sites fora desta lista. ## Tools (8) | Tool | Read-only | Uso | |---|---|---| | `wpmeteor_list_sites` | sim | Aliases conhecidos, path WP, nota de estado | | `wpmeteor_get_status` | sim | Instalado/activo/versão | | `wpmeteor_get_config` | sim | Option `wp-meteor-settings` completa | | `wpmeteor_set_module` | não | Liga/desliga um dos 5 módulos (`ultimate-reorder`, `gdpr`, `exclude`, `elementor-animations`, `elementor-pp`) — escrita atómica de `.enabled`, não toca nos outros | | `wpmeteor_set_delay` | não | `ultimate-reorder.delay` — string numérica; "0" = zero delay, N positivo = timeout fixo de N segundos, negativo (ex. "-1") = só corre na primeira interacção | | `wpmeteor_get_exclusions` / `wpmeteor_set_exclusions` | sim/não | `exclude.value` — array de URLs/palavras-chave/regex. Set é **substituição completa**, não merge. Não liga o módulo `exclude` sozinho | | `wpmeteor_get_detected` | sim | Telemetria interna (`detected`), sem tool de escrita — não é configurável | Todas exigem `site` como primeiro parâmetro. ## Padrão de escrita — atómico por chave, não read-modify-write Diferente do `mcp-wpfc` (que faz merge em JS de toda a option `WpFastestCache`), aqui cada escrita usa `wp option patch update wp-meteor-settings [--format=json]` — o próprio WP-CLI localiza e substitui só a chave aninhada pedida, atomicamente, sem ler+reescrever a option inteira. Menos risco de pisar uma gravação concorrente do wp-admin. ## Segurança Allowlist fixa de 1 option (`wp-meteor-settings`) e 5 módulos conhecidos (`src/wpcli.ts`, `MODULES`). Escritas via base64 em stdin, nunca interpoladas no comando SSH remoto. **Confirmado antes de escrever a bridge (lição de `mcp-wpfc`/skill `wp-fastest-cache` §16.2):** `wp-meteor-settings` é um **array PHP nativo** — `wp option get` sem `--format=json` devolve `array(...)` desestruturado, não uma string. `--format=json` é portanto o padrão correcto aqui em leitura e escrita (ao contrário do WP Fastest Cache, onde `--format=json` corrompe a option). Qualquer MCP novo sobre `wp option` deve continuar a verificar isto primeiro, caso a caso — não assumir nenhum dos dois padrões por omissão. ## Verificação Construído e testado ponta-a-ponta contra produção 19-08-2026 (`emanuelalmeida.pt`, único site com o plugin instalado): `wpmeteor_get_status` confirmou activo v3.4.18 lá e ausente em `descomplicar`; `wpmeteor_get_config`/`wpmeteor_get_exclusions` leram a config real; `wpmeteor_set_module`, `wpmeteor_set_delay` e `wpmeteor_set_exclusions` escreveram e relerem correctamente com valores já-correntes (round-trip idempotente, sem alterar comportamento do site); `wpmeteor_get_detected` confirmou array vazio. Integridade final da option confirmada por leitura SSH directa, idêntica ao estado original. ## Skills relacionadas - `wp-meteor` — mapeamento completo de todos os módulos, semântica do delay, exclusões automáticas embutidas, mecanismos de bypass, diagnóstico de CLS/CWV. - `mcp-wpfc` — mesma convenção (MCP multi-site, `site` por parâmetro), mas para o WP Fastest Cache; ver lá o gotcha de formato de armazenamento que motivou a verificação prévia aqui.