Model Context Protocol · WordPress
Um servidor MCP para a IA construir no Bricks e no Elementor.
Um plugin só. Você escolhe o builder na instalação; a IA cria e edita páginas e templates de forma nativa e reversível — com CLI completo de WordPress, tokens com escopos e mudanças aplicadas numa requisição só.
01Visão geral
O MarreiraMCP Builders funde os antigos plugins MarreiraMCP Bricks e MarreiraMCP Elementor num único produto. O servidor MCP é escrito em PHP dentro do próprio plugin — não há serviço Node separado —, exposto numa rota REST oculta do índice público. A IA conversa por JSON-RPC 2.0; o dono do site controla tudo por um painel e por um token com escopos.
Dois builders, um plugin
Bricks ou Elementor, escolhido no onboarding e trocável depois. Núcleo compartilhado + drivers.
Seguro por padrão
Multi-token HMAC com escopos, throttle, allowlist, audit log e poderes perigosos desligados de fábrica.
Uma requisição só
run_batch aplica várias mudanças num único POST — evita bloqueios por excesso de chamadas.
Adapta à sua IA
Modo premium ou econômico: skill enxuta, mapa compacto e limites menores quando o contexto é caro.
Novo × antigo
Antes eram dois plugins separados, cada um mais simples. O unificado entrega mais poder e segurança para os dois builders de uma vez.
| Recurso | Antes (2 plugins) | Agora (unificado 1.8.1) |
|---|---|---|
| Plugins | Um pro Bricks, outro pro Elementor | Um só — escolhe o builder na instalação e troca depois |
| Aplicar várias mudanças | Vários POSTs seguidos (risco de o host bloquear) | run_batch: tudo numa requisição |
| Tokens | Um token único (SHA-256) | Multi-token com escopos, HMAC e expiração |
| CLI de WordPress | — | Completo (plugins, temas, banco, arquivos, exec) com trava dupla, desligado por padrão |
| Modo de IA | — | Premium × econômico (poupa contexto de IA grátis/barata) |
| Auditoria | — | Audit log com dados sensíveis mascarados |
| Segurança de rede | Rate limit básico | Throttle por IP, IP allowlist, revalidação do admin dono |
| Terminal (WP-CLI) | — | wp mmcb … |
02Arquitetura
O núcleo (servidor MCP, CLI, auth, audit) é agnóstico de builder. Toda lógica específica vive num driver, e o Builder_Manager carrega apenas o driver ativo. Um builder por vez.
Cliente MCP / IDE / WP-CLI
│ Bearer <token>
▼
┌───────────────────────────────┐
│ Núcleo (Marreira\MCP_Builders)│
│ MCP_Server · Tool_Registry │
│ Rest_Guard · Audit_Log │
│ Batch_Runner · Context_Strategy│
└───────────────┬───────────────┘
│ Builder_Manager (1 ativo)
┌─────────┴─────────┐
▼ ▼
┌───────────┐ ┌────────────┐
│Bricks_Driver│ │Elementor_Driver│
│ árvore plana│ │ árvore aninhada│
│ classes/paleta│ │ Kit (cores/fontes)│
└───────────┘ └────────────┘03Instalação & onboarding
Baixar marreira-mcp-builders-1.8.1.zip
- Instale o zip
marreira-mcp-builders-1.8.1.zipem Plugins → Adicionar novo → Enviar e ative. - Abra o menu MarreiraMCP e rode o assistente: escolha o builder (ele detecta o que está ativo no site), escolha o tier de IA (premium ou econômico) e gere o primeiro token — ele aparece uma única vez.
- Configure o cliente MCP com o endpoint e o token (abaixo).
O CLI geral de WordPress (plugins, temas, banco, exec) vem desligado. Ligue-o em Configurações só se for usar — e conceda ao token apenas as abilities necessárias.
04Conexão & endpoints
Autentique com Authorization: Bearer <token> sobre HTTPS. As rotas ficam ocultas do índice de /wp-json/.
| Método | Rota | Descrição |
|---|---|---|
| POST | /wp-json/marreira-mcp/v1/mcp | Endpoint MCP (JSON-RPC 2.0: initialize / tools/list / tools/call). Exige a ability builder. |
| GET | /marreira-mcp/v1/skill | Público. Serve o SKILL.md (variante enxuta no modo econômico). |
| GET | /marreira-mcp/v1/describe | Com token. Builder ativo, tier, abilities do token e catálogo de tools. |
| GET | /marreira-mcp/v1/cli/... | CLI geral de WordPress (desligado por padrão). Ver seção CLI. |
POST /wp-json/marreira-mcp/v1/mcp
Authorization: Bearer mmcb_XXXX.XXXXXXXX
Content-Type: application/json
{ "jsonrpc": "2.0", "id": 1, "method": "tools/list" }4bConector (Claude.ai / ChatGPT)
No app de IA, adicione um conector (servidor MCP remoto) apontando para /wp-json/marreira-mcp/v1/mcp. O OAuth é automático: o app se registra, abre a tela de consentimento no seu WordPress (onde um administrador logado autoriza) e recebe o token. A aprovação acontece nessa tela — não é preciso pré-aprovar nada no painel.
Não conecta? Quase sempre é o firewall / CDN — não o plugin
Erros como “Não foi possível registrar no serviço de login” vêm de Cloudflare, WAF ou plugin de segurança bloqueando as requisições que o servidor da Anthropic/OpenAI faz ao seu site. O conector faz três chamadas de servidor (não de navegador) — registrar o app → pegar o token → usar as tools — com User-Agent de biblioteca (ex.: python-httpx). Bot Fight Mode e WAF costumam barrá-las antes de chegarem ao plugin, então a conexão falha mesmo com tudo certo aqui.
Sintoma típico: no navegador as chamadas passam (registro 201), mas com o User-Agent do provedor de IA o firewall devolve 520/403 e o pedido nem chega ao PHP. A conexão por token (Claude Code, curl) continua funcionando — porque não passa pelo mesmo bloqueio de bot.
Libere estas rotas no firewall / CDN
/wp-json/marreira-mcp/* /marreira-mcp-oauth/* /.well-known/oauth-*
No Cloudflare:
- Security → Bots: desligue o Bot Fight Mode (ou libere essas rotas no Super Bot Fight Mode).
- Security → WAF → Custom rules: uma regra com ação Skip (pular Managed Rules, Rate Limiting e Bot Fight) quando o
URI Pathcontiver/wp-json/marreira-mcp/,/marreira-mcp-oauth/ou começar com/.well-known/oauth. - Rate Limiting: isente essas rotas — o conector faz várias chamadas.
No host: se usar Wordfence, Imunify360, BitNinja ou mod_security, coloque as mesmas rotas na allowlist (um 520 costuma ser a origem derrubando a requisição).
Como confirmar: a aba Logs do painel registra as falhas de OAuth (oauth:register_failed, oauth:authorize_failed, oauth:token_failed). Se você tenta conectar e nada aparece lá, o pedido não chegou ao plugin — é o firewall/CDN. “Gerar um Client ID manual” não resolve sozinho: a troca de token e as chamadas das tools continuam vindo do servidor do provedor e batem no mesmo bloqueio.
05Tools
As tools do builder ativo aparecem em tools/list — sempre confirme os nomes ali. Além delas, o núcleo registra duas tools que valem para qualquer builder.
Do builder (exemplos)
Páginas e templates (CRUD), edição fina de elementos (insert / update / move / delete / duplicate), estilos globais (classes e paleta no Bricks; Kit de cores e fontes no Elementor), introspecção (list_elements, get_element_schema) e utilidades (get_capabilities, validate_tree, regenerate_css).
Do núcleo
| Tool | O que faz |
|---|---|
run_batch | Aplica vários comandos numa única requisição. Aceita stop_on_error e dry_run. |
get_map | Mapa compacto do site (páginas, templates, resumo de estilos) — sem as árvores completas. |
06run_batch — a regra de ouro
Para aplicar mais de uma mudança, nunca dispare vários POSTs em sequência: muitas requisições remotas seguidas podem ser lidas por hosts e WAFs como um ataque. Agrupe tudo em um run_batch.
{
"jsonrpc": "2.0", "id": 7, "method": "tools/call",
"params": {
"name": "run_batch",
"arguments": {
"commands": [
{ "tool": "create_bricks_page",
"arguments": { "title": "Home", "elements": [ /* ... */ ] } },
{ "tool": "regenerate_css", "arguments": {} }
],
"stop_on_error": false,
"dry_run": false
}
}
}A resposta traz o status por comando (results[]) e um resumo (ok / failed). Use dry_run: true para validar sem gravar.
07Modo de IA
O onboarding define um tier que muda como a IA deve consumir contexto — informado também em /describe.
Premium
IA paga/capaz. Skill completa, respostas completas, pode puxar o mapa inteiro e árvores conforme precisar.
Econômico
IA grátis/barata. Skill enxuta servida em /skill, respostas concisas, comece por get_map e liste com limites pequenos — e sempre agrupe escritas em run_batch.
08Tokens & abilities
Cada token é uma credencial estreita: guardamos apenas o hash HMAC-SHA256, com expiração opcional. As abilities limitam o que ele pode fazer — dê ao seu agente só o que ele precisa.
| Ability | Concede |
|---|---|
builder | As tools MCP do builder (páginas, templates, elementos, estilos). |
read | Leituras gerais (site, usuários, logs, schema do banco). |
content | Posts, termos, comentários e mídia. |
plugins · themes · core | Gestão de plugins, temas e core do WordPress. |
files · snippets | Arquivos do tema e snippets PHP. |
db · db_query | Introspecção do banco e SELECT seguro. |
exec | Execução de PHP (trava dupla — ver Segurança). |
* | Acesso total. |
09CLI geral de WordPress
Além do builder, o plugin oferece um controle remoto de WordPress em /wp-json/marreira-mcp/v1/cli/... — no espírito do WP-CLI, porém por token com escopos e auditado.
Desligado de fábrica. Nada em /cli/* funciona até você ligar enable_general_cli. Os poderes perigosos (exec/php, db/query, escrita de arquivo) têm trava dupla: uma flag nas configurações e a ability no token. E o CLI nunca desativa o próprio plugin nem apaga o tema ativo.
| Área | Rotas (prefixo /cli) | Ability |
|---|---|---|
| Descoberta | /status · /site · /describe | token válido |
| Plugins | /plugins · /plugins/install|activate|deactivate|update|delete | plugins |
| Temas | /themes · /themes/install|activate|update|delete | themes |
| Core | /core · /core/update | core |
| Arquivos do tema | /theme/files|file|functions | files |
| Snippets | /snippets · /snippets/{id} · /toggle | snippets |
| Conteúdo | /posts · /terms · /comments · /media · … | content |
| Banco | /db/tables|.../schema|.../sample|relations | db |
| Banco (query) | /db/query (SELECT com allowlist) | db_query |
| Execução | /exec/php | exec |
10WP-CLI local
Para o dono operar pelo terminal do servidor, sem rede nem token — reusa o mesmo registry e o mesmo batch runner.
wp mmcb tools
wp mmcb call get_page --args='{"post_id":12}'
wp mmcb batch mudancas.json --dry-run
wp mmcb builder elementor
wp mmcb token create "agente-ia" --abilities=builder --expires=3011Segurança
- Token só como hash HMAC-SHA256 (texto puro nunca é gravado nem logado); comparação com
hash_equals. - Escopos por token + expiração; throttle por IP (20 falhas / 5 min) e IP allowlist opcional.
- Revalidação do admin dono a cada requisição — se ele perde o papel, o token para de valer.
- Audit log de cada requisição, com mascaramento de dados sensíveis e retenção configurável.
- Guard anti-RCE recusa execução de código nos elementos; rotas ocultas do índice público.
- Trava dupla para exec/DB/arquivo e self-protection (não se autodesativa, não apaga o tema ativo).
MMCB_TRUST_PROXYpara ler o IP real atrás de proxy/CDN (desligado por padrão, contra spoofing).