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.
92 lines
6.4 KiB
Markdown
92 lines
6.4 KiB
Markdown
---
|
|
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.
|