- documenta as 8 tools do MCP wpmeteor: status, config, toggle de modulo, delay, exclusoes, telemetria detected - wp-meteor actualizada: estado real confirmado nos 8 sites do bundle (so emanuelalmeida.pt tem o plugin), cross-referencia para mcp-wpmeteor - mesma convencao de mcp-wpfc/mcp-element-pack/mcp-cloudflare-app: esta skill e o 'como executar', wp-meteor continua a ser o mapeamento
85 lines
5.4 KiB
Markdown
85 lines
5.4 KiB
Markdown
---
|
|
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 `<module>.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 <key-path...> [--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.
|