Model Context Protocol · Meta Marketing API — Graph v25
Um servidor MCP que liga o Claude à Meta Marketing API — leia insights com ROAS por campanha, crie campanhas, conjuntos, anúncios e criativos, duplique o que funciona e mande conversões server-side (CAPI), sem abrir o Gerenciador de Anúncios. Login Meta embutido, token que não expira. Status: LIVE.
O MCP META ADS B2 TECH é um servidor Model Context Protocol que dá ao Claude acesso real às suas contas de anúncio — não um chatbot que adivinha, mas chamadas tipadas na Meta Marketing API (Graph v25).
Liste contas, campanhas, conjuntos, anúncios, criativos, páginas e pixels; leia insights síncronos com resumo que cabe no contexto ou rode relatórios assíncronos para períodos grandes. "Qual o ROAS das campanhas ativas?" vira uma chamada, não um palpite.
Os MCPs irmãos (GA4, Google Ads, GTM, Cloudflare, Instagram) medem, taggeiam e publicam; o Meta Ads cria a campanha, sobe o criativo, lê o resultado e devolve a conversão via CAPI. Tudo numa conversa.
Deploy multi-tenant em mcp-meta-ads-alpha.vercel.app — OAuth 2.1 Authorization Server embutido com Login for Business da Meta, tokens cifrados em Supabase, cache no Upstash. Mesmo stack dos MCPs irmãos.
29 tools agrupadas por função — da descoberta da conta ao relatório de ROAS, do criativo à conversão server-side. Tudo abaixo já está implementado e no ar.
effective_status=["ACTIVE"] server-side, numa chamada só.object_story_spec), imagem por URL/hash, enhancements Advantage+ opt-in por feature.confirm, devolve o preview do que seria pausado — e não executa.confirm=true.event_id uuid4 para dedup com o Pixel; test_event_code mira a aba Test Events.Do diagnóstico ao resultado numa conversa: get_insights → duplicar o que funciona → subir criativo novo → send_capi_event fechando a medição.
Campanha ativa é dinheiro saindo — por isso cada write passa por barreiras explícitas, herdadas dos MCPs irmãos.
Writes nascem em PAUSED
create_campaign, create_adset, create_ad e as cópias entregam o objeto pausado. Nada entra em veiculação sem você mandar ativar explicitamente.
Pausar exige confirm=true
pause_campaign, pause_adset e pause_ad sem confirm devolvem um preview do que seria pausado e não executam nada — nada sai do ar por acidente.
Token BISU cifrado, logs limpos
O login emite um token de System User (BISU) que não expira, cifrado com AES-GCM no Supabase com RLS default-deny. Nenhuma tool devolve token; os loggers HTTP são silenciados para ele nunca vazar.
appsecret_proof em toda chamada
Toda request ao Graph vai assinada, com retry/backoff limitado. Erros da Meta viram mensagens seguras com dica de "o que fazer" — payload cru e token nunca chegam ao modelo.
PII hasheada no CAPI
Identificadores do send_capi_event são normalizados e hasheados (SHA-256) no servidor — nunca logados nem ecoados. event_id uuid4 por padrão para dedup com o Pixel do browser.
Tenant nunca é argumento
O tenant é derivado do seu login Meta e resolvido por request. Nenhuma tool aceita "de qual cliente" — impossível operar a conta errada. OAuth com PKCE e validação de state.
Servidor hospedado e multi-tenant, zero setup: adicione o connector, faça login com sua conta Meta e o Claude já opera suas campanhas. Um login só — o token não expira.
Adicione o servidor MCP como connector no Claude e faça login na Meta. Nada para instalar; um login resolve tudo.
https://mcp-meta-ads-alpha.vercel.app/api/mcp. No Claude Code, use o comando abaixo.# Claude Code claude mcp add --transport http \ meta-ads https://mcp-meta-ads-alpha.vercel.app/api/mcp
/mcp. O login emite um token que não expira — um login, acesso durável, CAPI incluído. Aluno B2Tech com o mesmo email da compra? O acesso vincula sozinho — senão, rode connect_hotmart.meta_token_status para validar a credencial e list_ad_accounts para ver suas contas de anúncio. Pronto para operar.Pedidos reais que o servidor resolve de ponta a ponta — criação sempre nasce pausada.
# você, no chat: "Quanto gastei por campanha ativa nos últimos 7 dias e qual foi o ROAS?" # → get_insights level=campaign, só ACTIVE
"Cria uma campanha de conversão com um
conjunto pra esse público e este criativo"
# → tudo nasce PAUSED; você ativa quando quiser"Duplica o conjunto campeão e manda um
Purchase de teste pro pixel"
# → copy_adset + send_capi_event (PII hasheada)Ficou alguma dúvida? Escreva para bruno@b2tech.io.
connect_hotmart envia um código de 6 dígitos para o email da compra e confirm_hotmart conclui o vínculo. Ainda não é aluno? Conheça o treinamento em claude-code.b2tech.io.PAUSED — ativação é sempre um pedido explícito seu. E pausar o que está rodando exige confirm=true: sem ele, as tools pause_* devolvem um preview do que seria pausado e não executam nada.mcp-meta-ads-alpha.vercel.app) e o código-fonte é privado — não existe versão para rodar na sua máquina. Você só adiciona o connector no Claude e faz login com sua conta Meta; nós cuidamos do resto.meta_token_status aponta o problema e meta_login refaz o vínculo.appsecret_proof, e os logs estruturados não carregam PII nem token.get_insights com o resumo padrão devolve spend, cliques, CPC, purchases e ROAS já achatados — uma linha por campanha/conjunto/anúncio — e filtra por effective_status=["ACTIVE"] server-side, numa chamada só. Relatórios grandes voltam com a cauda de baixo gasto cortada numa linha _truncated informativa — não é erro. Para períodos longos ou muitos objetos, run_insights_report roda assíncrono.send_capi_event posta eventos na Conversions API usando o token do próprio tenant — nenhum token do Events Manager é necessário. A PII é normalizada e hasheada (SHA-256) no servidor, nunca logada nem devolvida; event_id sai como uuid4 por padrão para dedup com o Pixel do browser; test_event_code direciona o evento para a aba Test Events antes de ir para produção.Campanhas, conjuntos, anúncios, criativos, duplicação do que funciona, insights com ROAS e conversões server-side — do diagnóstico ao resultado numa conversa, com writes nascendo em PAUSED e pausa travada por confirm=true.
29 tools · login Meta · multi-tenant na Vercel