feat(wordpress): nova skill mcp-jetengine - proxy MCP nativo JetEngine

Documenta o MCP jetengine (proxy stdio<->HTTPS ao MCP nativo do plugin,
Features API v3.8.0+): 11 tools, seguranca, verificacao, relacao com a
skill jetengine e com mcp-wpfc/mcp-webp-express.
This commit is contained in:
Claude Code
2026-08-19 05:45:55 +01:00
parent 572cb91b38
commit 47ab74ccfa
+91
View File
@@ -0,0 +1,91 @@
---
name: mcp-jetengine
description: MCP dedicado (node stdio, ligação `jetengine` em ~/.omp/agent/mcp.json) para JetEngine (Crocoblock) em descomplicar.pt — proxy transparente stdio<->HTTPS do MCP nativo do próprio plugin (Features API, v3.8.0+): registar CPT, CCT, taxonomias, meta boxes, queries do Query Builder, listings, glossários, gerir módulos, ler configuração/website-config/macros. Não duplica lógica do plugin — reencaminha `tools/list`/`tools/call` tal como o JetEngine os expõe. Usar quando "mcp jetengine", "jetengine mcp", "criar cpt via mcp", "criar cct via mcp", "add-cpt", "add-cct", "query builder mcp", "jetengine features api", "ai command center jetengine".
layer: wiki
---
# /mcp-jetengine — MCP dedicado ao JetEngine
Projecto em `/media/ealmeida/Dados/Dev/mcp-jetengine/` (TypeScript, SDK MCP oficial, stdio).
**Diferente dos MCPs irmãos (`mcp-wpfc`, `mcp-webp-express`):** o JetEngine, a partir da v3.8.0,
já expõe o seu próprio servidor MCP nativo (`Jet_Engine\MCP_Tools`, "Features API") em
`{site}/wp-json/jet-engine/v1/mcp` — JSON-RPC 2.0 sobre HTTP simples (POST, uma única resposta
JSON por pedido, sem SSE, sem sessão), autenticado por `current_user_can('manage_options')`. Este
projecto **não reimplementa nenhuma lógica de negócio** do plugin: é apenas uma ponte
stdio↔HTTPS com autenticação Basic (Application Password), porque o harness liga-se a servidores
MCP locais por stdio, não a endpoints HTTPS arbitrários fora do gateway. `tools/list` e
`tools/call` são reencaminhados verbatim — os 11 tools, nomes, descrições e schemas vistos pelo
agente são exactamente os que o próprio plugin regista, não uma cópia mantida à mão.
## Site
Único site do bundle com JetEngine activo (19-08-2026): **descomplicar.pt**
(`jet-engine` v3.8.11.1). Configurável via `JETENGINE_SITE_URL`/`JETENGINE_APP_USER`/
`JETENGINE_APP_PASSWORD` no `env` da entrada `jetengine` em `mcp.json` — sem parâmetro `site` por
tool (ao contrário de `wpfc`/`webpx`) porque só há um site a servir; adicionar suporte
multi-site (registo tipo `sites.ts`) se outro site do bundle activar o plugin.
**Activação feita nesta sessão (19-08-2026):** `jet-engine-misc-settings` não existia
(`enable_features_api` teria o default `true` mesmo assim, mas foi escrito explicitamente);
Application Password dedicada `mcp-jetengine` criada para `ealmeida`.
## Âmbito
Tudo o que o plugin regista na sua própria Features API. Não cobre: Relations (tabela
`wp_jet_rel_default` — sem tool nativo, ver `references/automation.md` da skill `jetengine` para
gestão via PHP/SQL), Profile Builder, Dynamic Tags dentro do Elementor, bridge MU-plugin
(`descomplicar-jet-bridge.php`, endpoint próprio `POST /wp-json/descomplicar/v1/manage` — projecto
à parte, ver skill `jetengine` §"Bridge Plugin").
## Tools (11, nomes nativos do plugin — 19-08-2026)
| Tool | Read-only | Uso |
|---|---|---|
| `resource-get-configuration` | sim | CPTs, taxonomias, meta boxes, options pages, queries, relations, CCTs, endpoints REST, glossários — visão geral em JSON, por `parts` |
| `resource-get-website-config` | sim | Post types/taxonomias/plugins activos registados no WordPress (não só JetEngine) |
| `resource-get-macros` | sim | Todas as macros JetEngine com argumentos e exemplos de uso |
| `tool-manage-modules` | sim/não (`operation: list\|activate\|deactivate`) | Listar ou activar/desactivar módulos do JetEngine |
| `tool-add-cpt` | não | Registar Custom Post Type — labels, storage, meta fields, admin columns/filters |
| `tool-add-cct` | não | Registar Custom Content Type (tabela SQL própria) com campos tipados |
| `tool-add-taxonomy` | não | Registar taxonomia e associar a post types |
| `tool-add-meta-box` | não | Meta Box com campos e condições de visibilidade |
| `tool-add-query` | não | Query do Query Builder — `sql`, `posts`, `terms`, `users`, `comments`, `repeater`, `current-wp-query`, `merged-query`, `relations-query` |
| `tool-add-listing` | não | Listing item ligado a uma query existente (`elementor`/`bricks`/`twig`/`blocks`) |
| `tool-add-glossary` | não | Glossário manual (`source: "manual"`) com pares `value`/`label` |
Schemas de input completos: chamar `tools/list` (ou o `initialize` seguido de `tools/list` — o
proxy devolve exactamente o que `wp-json/jet-engine/v1/mcp` responde). Não documentados campo a
campo aqui para evitar duplicação que fica desactualizada — a fonte de verdade é o próprio plugin.
## Segurança
- Autenticação por Application Password de um utilizador `administrator` (`manage_options`) — o
próprio plugin recusa (`rest_forbidden`, 401/403) sem essa capability; o proxy traduz isso num
`McpError` claro em vez de deixar a chamada rebentar em silêncio.
- Sem lógica local de bloqueio de chaves — todo o `tools/call` chega ao plugin tal como recebido
do agente. As guardas de segurança (validação de slug, sanitização de campos, etc.) são as do
próprio JetEngine, não deste MCP.
- Erros JSON-RPC de nível transporte (rede, HTTP != 200, `error` no envelope JSON-RPC — método
desconhecido, parse error) tornam-se `McpError`. Erros de execução de tool (`isError: true` no
`CallToolResult`, ex. "Tool not found") são devolvidos tal como o plugin os construiu — nunca
convertidos em excepção, para o agente poder ler o texto do erro.
## Verificação
Construído e testado ponta-a-ponta 19-08-2026: `tools/list` via stdio devolve os 11 tools
idênticos ao pedido directo por `curl` contra `wp-json/jet-engine/v1/mcp` (mesmos nomes,
descrições, schemas); `tools/call` real (`resource-get-macros`) devolve o mesmo JSON do plugin;
`tools/call` com nome inexistente devolve `isError: true` + `"Tool not found"` passado
verbatim. Ferramentas de escrita (`tool-add-cpt`, `tool-add-cct`, etc.) não foram exercidas contra
produção nesta sessão — mesmo caminho de código (`callJetEngine` + `tools/call`) já validado pelas
chamadas de leitura e pelo caso de erro.
## Skills relacionadas
- `jetengine` — conhecimento do plugin (CPT vs CCT, Relations, Query Builder, Listings, Macros,
Profile Builder, bridge MU-plugin). Consultar para entender o que uma tool faz antes de a
chamar; este MCP é o "como executar".
- `mcp-wpfc` / `mcp-webp-express` — MCPs irmãos para plugins sem API nativa (reimplementam a
gestão via WP-CLI/SSH). `mcp-jetengine` é o primeiro caso do bundle em que o próprio plugin já
fala MCP — o padrão aqui é ponte de transporte, não reimplementação.