Files
claude-plugins/wordpress/skills/mcp-jetengine/SKILL.md
T
Claude Code ea051c273f feat(wordpress): playbooks de uso para mcp-jetengine
Adiciona references/playbooks.md (7 fluxos: ler antes de criar, modulos
opcionais, CPT+taxonomia+meta-box, CCT, glossario, query builder+listing,
levantar contexto) + indice curto em SKILL.md + keywords de trigger.

Documenta 2 gotchas confirmados contra o schema nativo (tools/list
19-08-2026, nao exercidos como writes em producao): CCT exige o modulo
'custom-content-types' activo (so 'booking-forms' estava activo);
query_type 'custom-content-type' aparece na descricao de tool-add-query
mas nao no enum real - usar 'posts' com post_type 'slug/name'.
2026-08-19 05:52:05 +01:00

7.7 KiB


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. Inclui playbooks (sequências de chamadas) para directório dinâmico CPT+Query+Listing, CCT de alta performance, activação de módulos opcionais. 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", "playbook jetengine", "directorio dinamico jetengine", "activar modulo 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.

Playbooks — como combinar as tools

Referência da API acima diz o que cada tool faz isoladamente; references/playbooks.md mostra sequências reais de chamadas:

  1. Ler antes de criar — resource-get-configuration para evitar slugs/queries duplicados.
  2. Módulos — confirmar/activar módulo opcional (custom-content-types, maps-listings, etc.) antes de usar a tool que depende dele; CPT/Taxonomia/Meta Box/Query/Listing normais não precisam de nenhum módulo.
  3. CPT + Taxonomia + Meta Box — conteúdo editorial estruturado, três chamadas em sequência.
  4. CCT — dados de alta performance (requer módulo custom-content-types).
  5. Glossário — opções reutilizáveis para campos select/checkbox/radio.
  6. Query Builder + Listing — directório dinâmico; inclui o gotcha do enum de query_type não incluir "custom-content-type" apesar da descrição da tool o mencionar.
  7. Levantar contexto — macros, config, plugins activos antes de escrever conteúdo dinâmico.

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.