Updated May 2026Intermediate17 min read

Meta Ads MCP and CLI: Inside Meta's Official AI Connectors

On April 29, 2026, Meta opened the beta of two new artifacts: an HTTP MCP server at mcp.facebook.com/ads and a local Python CLI. Same 29-tool surface, two shapes — one for Claude Desktop and ChatGPT, one for Claude Code and Codex. This is the developer-grade tour: the OAuth handshake, the tool catalog, the gotchas the launch posts skipped, and how it stacks up to the community servers you may already be running.

Hero illustration: a glowing chat-window glyph on the left and a terminal-window glyph on the right, both flowing through teal dot-and-dash arcs into a central luminous campaign-hierarchy hub with a small bullseye target glyph beside it.
On this page · 16 sections
  1. One-sentence definition
  2. Why Meta shipped this
  3. Mental model
  4. Smallest end-to-end example
  5. The 29 tools, grouped
  6. CLI vs MCP: which to use
  7. Official vs community
  8. What I got wrong
  9. Common mistakes
  10. Who this is for
  11. Community signal
  12. The verdict
  13. The bigger picture
  14. FAQ
  15. Glossary
  16. All sources

One-sentence definition

Meta’s Ads AI Connectors are an HTTP MCP server at mcp.facebook.com/ads and a local Python CLI that wrap the Meta Marketing API behind Meta Business OAuth, expose 29 tools across reporting, campaign management, catalog, and signal diagnostics, and let any MCP client or terminal agent edit a Meta ad account without registering a Developer App.

That sentence is the whole launch. Everything below is a deeper read of one of its words.

Why Meta shipped this

Before April 29, 2026, automating Meta Ads from an AI client meant one of three painful paths. Register a Meta Developer App, wait one to three days for app review, then copy a long-lived access token into a community MCP like Pipeboard’s or brijr/meta-mcp — and pray Meta’s account-integrity systems did not flag the request pattern as automation. Use a hosted third-party connector and accept their token-isolation model. Or skip automation entirely and copy CSVs out of Ads Manager by hand.

The risk in path one was not theoretical. Through 2025, multiple agency operators reported permanent ad-account restrictions after pointing Claude or Codex at Meta’s Marketing API through unofficial connectors — Cody Schneider documented one such case involving a third-party MCP and a personal-use marketing token. Meta never confirmed the connection officially, but the chilling effect on agency adoption was real.

The official launch resolves that ambiguity in governance terms. The Meta Ads AI Connectors are Meta-authored, Meta-hosted, OAuth-authed, and explicitly positioned as “the authorized, official connection” — language Meta employee David Parrottino reportedly used to steer advertisers away from the Claude for Chrome browser extension and toward the new connector during launch discussions captured by PPC Land. Setup that previously took days now takes minutes.

This does not unlock Meta’s optimization layer

The connectors expose Marketing API capabilities — query, edit, create, diagnose. They do not give your AI client access to Meta’s bidding algorithm, Advantage+ features, or auction internals. Acadia’s Alan Carroll told Digiday that performance optimization — Meta’s strongest area — is “least likely to open up to third-party access.” This is plumbing, not a new brain.

Mental model: the four named pieces

Once you know these four pieces, every doc page on developers.facebook.com is a deeper read of one of them.

┌──────────────┐                    ┌─────────────────────────┐
│  Claude      │                    │  mcp.facebook.com/ads   │
│  Desktop     │ ── streamable ────▶│                         │
│  ChatGPT     │       http         │   ┌─────────────────┐   │
│              │ ◀── tool result ───│   │  29 tools       │   │
└──────────────┘                    │   │  ─────────────  │   │
                                    │   │  campaigns (5)  │   │
┌──────────────┐                    │   │  catalog   (10) │   │
│  Claude Code │   meta CLI         │   │  accounts (3)   │   │
│  Codex       │ ── subprocess ────▶│   │  datasets (4)   │   │
│  CI runner   │      pipe          │   │  insights (7)   │   │
│              │ ◀── stdout JSON ───│   └─────────────────┘   │
└──────────────┘                    │                         │
                                    │   Meta Business OAuth   │
                                    │   (no Developer App)    │
                                    └─────────────────────────┘
  • The MCP server — an HTTP endpoint Meta hosts at mcp.facebook.com/ads. Speak the standard MCP wire format. Used by Claude Desktop, ChatGPT, Cursor, and any client that takes a remote MCP URL. Meta-managed; you don’t deploy it.
  • The CLI binary — a local Python package, invoked as meta. Used by Claude Code, OpenAI Codex, custom agents, and CI pipelines. Outputs table, JSON, or TSV. Same Marketing API surface as the MCP, different consumption shape.
  • Meta Business OAuth — the auth primitive both surfaces share. The same flow Shopify or Mailchimp use. No Developer App, no app review queue, no long-lived tokens for you to leak. Three scope tiers at consent time: read-only, read/write, and read/write/financial.
  • The 29-tool catalog — what both surfaces actually expose. Five groups: campaign management, product catalog, accounts and pages, dataset quality, and insights. Inventory in a moment.

One more concept matters the moment you ship anything live: the PAUSED default. Every campaign, ad set, and ad created via either surface lands in PAUSED status. A human flips them on. The CLI’s --no-input and --force flags do not override that — they suppress prompts, not the paused state. This is a deliberate safety net, and you should not try to defeat it.

Smallest end-to-end example

Two paths. Pick the surface that matches your client.

Path A: MCP in Claude Desktop or ChatGPT

  1. Open Claude Desktop → Settings → Connectors → Add custom connector.
  2. Paste https://mcp.facebook.com/ads as the remote URL.
  3. Click Connect. The Facebook OAuth dialog opens. Sign in with the Facebook account that owns Business Manager access.
  4. Pick the ad accounts and Pages you want exposed. Choose the scope tier — pick the narrowest. For reporting-only work, read-only is enough.
  5. Back in Claude, ask: “Show me my Meta ad accounts.” The model picks the ads_get_ad_accounts tool, the result lands in the chat.

Path B: CLI for Claude Code, Codex, or CI

# install
pip install meta-ads-cli      # Python 3.12+

# one-time auth (opens Facebook OAuth in a browser)
meta auth login

# pick a default account (act_xxx is your ad-account ID)
meta config set default_account act_1234567890

# query — table output by default
meta ads campaign list

# get insights as JSON, pipe into jq
meta ads insights get \
  --campaign_id 23847123456789 \
  --date-preset last_7d \
  --fields impressions,spend,conversions \
  --format json | jq '.[] | {id, conversions}'

# create a campaign (lands PAUSED by default)
meta ads campaign create \
  --name "Summer Sale 2026" \
  --objective OUTCOME_SALES \
  --daily-budget 5000

# exit codes for scripting
# 0 = success, 3 = auth error, 4 = API error

In Claude Code, you can now ask: “Run meta ads insights get for every campaign that spent over $500 yesterday and write a CHANGELOG.md entry about which one was the worst CTR.” Claude Code resolves the spec, runs the CLI for each campaign, parses JSON output, writes the file. The exit codes mean it knows when to stop.

Specifics drawn from Meta’s Ads CLI announcement (John Holstein, Matt Mayberry, Andrew Kutsy, and Sanjay Patel, April 29, 2026).

The 29 tools, grouped

Both surfaces share the same Marketing API tool catalog. Here is the full inventory, grouped by capability area, as published by Meta and inventoried by Pasquale Pillitteri.

Campaign management · 5

  • ads_create_campaign
  • ads_create_ad_set
  • ads_create_ad
  • ads_update_entity
  • ads_activate_entity

Accounts, Pages, assets · 3

  • ads_get_ad_accounts
  • ads_get_ad_entities
  • ads_get_pages_for_business

Product catalog · 10

  • ads_catalog_create
  • ads_catalog_get_catalogs
  • ads_catalog_get_details
  • ads_catalog_get_diagnostics
  • ads_catalog_get_feed_rules
  • ads_catalog_get_product_details
  • ads_catalog_get_product_feed_details
  • ads_catalog_get_product_set_products
  • ads_catalog_get_product_sets
  • ads_catalog_get_products

Dataset quality · 4

  • ads_get_dataset_details
  • ads_get_dataset_quality
  • ads_get_dataset_stats
  • ads_get_errors

Insights and benchmarks · 7

  • ads_insights_advertiser_context
  • ads_insights_anomaly_signal
  • ads_insights_auction_ranking_benchmarks
  • ads_insights_industry_benchmark
  • ads_insights_performance_trend
  • ads_get_opportunity_score
  • ads_get_help_article

Opinion: ten of the twenty-nine tools are catalog operations. That weighting tells you Meta is taking commerce ads seriously as the wedge use case. If you sell physical products, you get the most leverage. If you only run lead gen or app-install, eight or nine tools are dead weight that still ship in your tool descriptions and burn input tokens (more on that in Common Mistakes).

CLI vs MCP: which one to use

Same Marketing API. Different consumption shapes. The right surface depends on what you want from the AI: a conversation or a script.

 MCP serverCLI binary
Lives whereMeta-hosted endpointYour machine, your CI
Used byClaude Desktop, ChatGPT, CursorClaude Code, Codex, CI scripts
AuthOAuth in client UImeta auth login once
OutputConversational proseTable, JSON, TSV
Best atReporting, exploration, ad-hoc “show me”Bulk ops, repeatable launches, CI
ReproducibilityChat history onlySpec files, exit codes, jq pipelines
Local file accessNo — needs public URLsReads filesystem directly

The single most useful framing comes from the Ads Uploader team in their April 2026 critique: “MCP for analysis, CLI for execution.” The MCP path is excellent at “tell me which campaign spent the most yesterday and why” because that is a read-and-summarize workflow. The CLI path is excellent at “launch ten ad sets from this CSV with these creatives” because that is a deterministic, multi-step operation that benefits from spec files and exit codes.

Opinion: pick the MCP for first-time exploration and reporting; graduate to the CLI when a workflow has repeated three times. The chat surface buys you fast learning. The CLI buys you durable artefacts — specs, scripts, version-controlled operations.

Official vs community: what changes for existing setups

Pre-launch, the directory’s most-installed Meta connector was pipeboard-co/meta-ads-mcp, which exposes a similar surface area through a Pipeboard-hosted remote MCP at mcp.pipeboard.co/meta-ads-mcp. There are others: GoMarble’s cross-platform MCP that joins Meta with Google Ads and Shopify; brijr/meta-mcp as a bare Marketing API wrapper; and Madgicx as the paid enterprise option.

Here is what actually changes for each of those if you migrate to Meta’s official surface.

What you gain on the official surface

  • Free during open beta. Community options often charge $25–$99/month.
  • No API token to copy, store, or rotate. The OAuth flow is per-user.
  • Three Meta-managed scope tiers (read-only, read/write, financial), picked granularly per ad account.
  • Meta-blessed compliance — the “will this ban my account?” question is settled.

What community keeps its edge on

  • Cross-platform joins. GoMarble joins Meta with Google Ads, GA4, and Shopify in a single tool surface.
  • Multi-account auto-discovery for agency rollups; the official MCP requires per-integration scope.
  • Per-client token isolation a regulated-industries setup may need.
  • White-label client reporting that the official tools do not expose.

Opinion: keep the community connector if you actually use its cross-platform features. If you installed it just to talk to Meta and the cross-account dashboard never made it into your workflow, rip it out. The official MCP is simpler, free, and removes the token-leak risk surface.

What I got wrong

Three assumptions I made when I first tested the connectors that turned out to be incorrect.

1. I thought the CLI was for power users only. It is not. The CLI is the agency’s durable artefact. A spec file written once becomes a versioned, diffable, reusable launch template that an agent can run repeatedly. The MCP chat is great for the first time you do something; by the third time, you want a CLI invocation under version control. I was thinking about humans typing commands; the actual user is Claude Code or Codex calling the CLI as a subprocess.

2. I thought “free during beta” meant the whole thing was free. Only the connector subscription is free. You still pay normal Meta ad spend — the Marketing API is not a discount on impressions. This is obvious in retrospect and not obvious in the launch copy, which leans hard on the “no fee” framing.

3. I underestimated the tool-description token tax. The Ads Uploader team measured roughly 55,000 input tokens consumed by a 58-tool MCP profile in a single chat session — context they could not use for reasoning or output. With Meta’s 29 tools enabled alongside any non-trivial second connector, you are paying real money in input tokens before the model writes a single word back. Scope down. Disable the catalog tools when you are not doing commerce work. The MCP-side scope tiers help, but they are coarser than tool-level toggles, which the official surface does not yet offer.

Common mistakes

Bot resets bids every 15 minutes

Root cause: violating Meta’s learning phase. Each structural change — budget, audience, creative swap — resets the per-ad-set 50-event learning window. Brody K., a Meta Client Partner, told PPC Land at launch: “Just be sure to remind your agent about the learning phase.” Put a system prompt in front of your agent that says: “Do not edit budgets or audiences more than once per 24 hours.”

Trying to upload local creatives via MCP

Root cause: the MCP path needs publicly reachable URLs for image and video creatives. Local-disk files, Google Drive, and Dropbox folders without public sharing fail. Use the CLI for creative upload — it reads the filesystem directly — or stage creatives on a public URL first.

Granting financial scope by default

Root cause: the OAuth picker offers three scope tiers, and the largest is read/write/financial. Pick the narrowest scope your task needs. Reporting work is read-only. Most campaign edits are read/write — only payment-method or billing changes need financial.

Asking the AI to “optimize” the campaign

Root cause: Meta’s own bidding algorithm is the optimizer; your AI sees the surface, not the auction. Ask the AI to investigate, summarize, and propose structural changes. Let Meta optimize the bids. Tucker Matheson of Markacy framed this for Digiday: Meta’s algorithms remain paramount.

Expecting sub-second bid edits

Root cause: write tools on the MCP path are synchronous, and conversational latency is in seconds. As Pasquale Pillitteri observed in his April 2026 audit, Claude does not have optimal latency for sub-second changes. Real-time programmatic bidding still belongs in a deterministic Marketing API client, not in an LLM-mediated loop.

Who this is for, who it isn’t

Use the official connectors if

  • You manage one or more Meta ad accounts manually today.
  • You already use Claude or ChatGPT for marketing analysis.
  • You want a Meta-blessed automation path with no Developer App registration.
  • You run agency reporting workflows you currently rebuild every Monday.
  • You sell physical products and want catalog tooling in the AI loop.

Skip the official connectors if

  • You rely on a community connector’s cross-platform features (Google Ads + GA4 + Shopify joins).
  • You need real-time programmatic bid management at sub-second latency.
  • You require white-labeled client reporting the official surface does not expose.
  • Your compliance posture demands per-client token isolation rather than per-user OAuth.
  • You actively prefer paid hosted alternatives for support SLAs.

Community signal

The launch hit a chord with practitioners who had been living with the Marketing-API-and-token approach. Bryan Cano captured the immediate reaction:

Jason Yim’s read leaned on the natural-language creation angle — the part Meta’s launch copy was loudest about:

The contrarian reading deserves equal airtime. Three threads of skepticism showed up across the launch discussion:

The bans haven’t been formally retracted. Francis Teo, in the launch comment thread captured by PPC Land, wrote that the connectors are “absolutely worthless unless Meta addresses the concerns officially and clearly that people are getting banned for using automation solutions.” John Gargiulo amplified that as “the most important comment on the internet right here.” Meta’s implicit answer is that the official path is the safe path; whether that retroactively clears third-party-tool history is unclear.

Launching is harder than reporting. The Ads Uploader team’s breakdown of the MCP path argues that reporting workloads are well-served and launching workloads are structurally fragile — multi-step API calls in a chat surface lose transcripts, fail without good error handling, and require public URLs for creatives that most production workflows do not have. Their pitch is “MCP for analysis, CLI for execution.” That tracks.

Meta keeps the optimization layer. The Common Thread Collective writeup put the boundary cleanly: “Meta’s own AI and algorithm will always be paramount for performance optimization.” The connectors give your agent access to the steering wheel, not the engine.

The verdict

Our take

Default to the official MCP for reporting and exploration in Claude Desktop or ChatGPT. Pair it with the official CLI inside Claude Code for repeatable launches, bulk catalog work, and CI. The combination is the best Meta-Ads-from-AI workflow available today, and it costs nothing during the open beta.

Keep your existing Pipeboard, GoMarble, or Madgicx setup if you depend on cross-platform joins, multi-account agency dashboards, or white-labeled client reporting — the official surface is intentionally Meta-only and will not replace those workflows. And whatever you pick, do not point an AI at the auction. Use it for structure and reporting; let Meta’s algorithm optimize bids.

The bigger picture

Three trends converge at this launch and are worth tracking past it.

Ads platforms are standardizing on MCP. Google shipped its Ads MCP in October 2025; Amazon Advertising followed in November 2025; Google Analytics got a read-only MCP in July 2025. Meta’s April 2026 launch is the third major ads platform to ship an official agent connector and the first to ship full read-and-write at launch. This is becoming a platform feature, not a community add-on. If you maintain ads tooling, expect every major surface to have one within twelve months.

Compliance is the unlock. The ban-or-not-ban question dominated agency conversations through 2025. Cody Schneider’s widely-shared post about a banned ad account using a third-party MCP was cited by half the agency operators we talked to. The official path is a legal-and-policy answer first and a tooling answer second — the new feature is permission, the wire format is incidental.

The agency artefact is the spec file. The open question for 2026 is whether the durable artefact in agency workflows is a Claude chat history, a Claude Code skill, or a CLI spec file. The CLI tilts the answer toward spec file. We expect the agency winners will be the ones who treat ad operations the way platform engineers treat infrastructure: declarative specs in git, applied through a tool that returns exit codes.

Frequently asked questions

What is the Meta Ads MCP server URL?

The official endpoint is https://mcp.facebook.com/ads. You add it as a custom connector in Claude Desktop, ChatGPT, or any MCP-compatible client, then sign in with Facebook. Meta opened the beta on April 29, 2026.

Do I need a Meta Developer App or Marketing API approval?

No. The official MCP and CLI use the standard Meta Business OAuth flow — the same login Shopify and Mailchimp use. There is no Developer App registration, no app review wait, and no token to copy or rotate.

Will using Claude or ChatGPT to manage Meta Ads get my account banned?

Using the official MCP or CLI is the Meta-blessed path and does not trigger automation flags by itself. Bans for unauthorized automation usually came from third-party tools driving the Marketing API with a personal access token. Stick to the official connector and you avoid that class of risk.

Should I use Meta's official MCP or the Pipeboard community server?

Default to the official MCP for Meta-only workflows — it is free, OAuth-authed, and Meta-blessed. Keep Pipeboard or GoMarble if you need cross-account dashboards, multi-platform joins (Google Ads + GA4 + Shopify), or per-client token isolation that the official surface does not yet provide.

What is the difference between the Meta Ads MCP and the Meta Ads CLI?

Same Marketing API surface, different shape. The MCP is an HTTP server you point Claude Desktop or ChatGPT at, used through chat. The CLI is a local Python binary you call from Claude Code, OpenAI Codex, or a CI runner — output is table, JSON, or TSV, with proper exit codes for scripting.

Is the Meta Ads connector free?

The connector itself is free during the open beta. You still pay your normal Meta ads spend; only the integration layer is no-cost. Meta has not announced a post-beta fee structure as of this writing.

Can the AI launch live ads, or are they paused by default?

By default, both surfaces create campaigns, ad sets, and ads in PAUSED status. A human flips them live. The CLI exposes --no-input and --force flags for non-interactive runs, but the paused-by-default rule still applies — you must opt out explicitly.

Glossary

Meta Ads MCP

HTTP MCP server hosted by Meta at mcp.facebook.com/ads.

Meta Ads CLI

Local Python binary `meta` that wraps the same Marketing API surface.

Meta Business OAuth

The standard Meta login flow Shopify and Mailchimp use; powers both surfaces.

Marketing API

Meta's underlying REST API for ad management; both connectors wrap it.

Developer App

Legacy Meta-app object that previously had to be registered for API access — not needed for the official connector.

Learning phase

Per-ad-set window of about 50 conversions during which Meta's algorithm stabilizes; resets on structural edits.

Campaign objective

The optimization goal Meta drives toward (OUTCOME_SALES, OUTCOME_TRAFFIC, etc.).

Ad set

Layer between campaign and ad — owns budget, schedule, audience, optimization.

Catalog

Meta's product feed for shopping ads; ten of the 29 tools manage it.

Conversions API

Server-side event-tracking pipe; signal-quality tools surface its health.

Read / Write / Financial

The three OAuth scope tiers picked at consent time.

PAUSED

Default status for AI-created campaigns, ad sets, and ads — a human must flip live.

All sources

Primary — Meta

Community and analysis

Contrarian and risk

Internal — on MCP.Directory

Keep reading