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:
@@ -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.
|
||||
Reference in New Issue
Block a user