Connect Meta Ads to Claude: the official Ads MCP, vendor connectors, or a synced backend
The most direct way to connect Meta Ads to Claude is Meta's own ads MCP server at https://mcp.facebook.com/ads. Add that URL in Claude as a custom connector — or in Claude Code as a remote HTTP server — sign in with Facebook, and Claude can pull campaign reports and create or edit campaigns, ad sets and ads. Meta announced these "Meta ads AI connectors" in open beta on April 29, 2026. Two other routes exist. Hosted vendor connectors such as Windsor.ai, Supermetrics and Pipeboard put Meta next to other ad platforms in one connector, and they can make changes too. A synced data backend such as TableBI stores campaign-level Meta data that your agent queries with read-only SQL, beside Google Ads, GA4 and Search Console. Pick Meta's server to let Claude operate a Meta account, a vendor to cover several networks from one connector, and a synced backend when the same report comes back every week and must never touch a live campaign.
Three ways to connect Meta Ads to Claude, compared
"Meta Ads MCP" can mean Meta's own server or someone else's. Meta hosts the official one. Vendors run their own hosted MCP servers on top of Meta's Marketing API, and all three covered here can change campaigns. A synced backend — the route the second half of this page sets up — only reads.
| Route | What the agent reads | Can it change campaigns? | What you set up | Price |
|---|---|---|---|---|
| Meta's ads MCP server (official) | Campaign performance reports, activity logs, signal (pixel and dataset) health, catalogs and Help Center articles, live from Meta | Yes — creates and edits campaigns, ad sets and ads (new ads start paused), plus custom audiences, catalogs and A/B tests; portfolio admins can block actions or cap budgets with ads MCP server rules | Add https://mcp.facebook.com/ads as a custom connector in Claude, or with claude mcp add in Claude Code; sign in with Facebook Login for Business | Open beta; Meta lists no price |
| Windsor.ai's Claude connector | Meta Ads metrics and dimensions at account, campaign, ad set and ad level, pulled from the Marketing API when you ask | Yes — creates, pauses, enables and re-budgets campaigns, ad sets and ads, after you confirm each change | Link the ad account at onboard.windsor.ai, then add Windsor from Claude's connector directory | Free plan; paid plans from $19/month billed yearly, as of September 2026 |
| Supermetrics' Claude connector | Facebook Ads reporting data, Instagram placements included, fetched each time you ask | Yes — creates campaigns (paused for review), pauses, adjusts budgets and targeting; actions are logged in Campaign History | Click Connect on the Supermetrics listing in Claude's directory, then authorize Facebook Ads | 14-day free trial, then a paid plan |
| Pipeboard (pipeboard-co/meta-ads-mcp) | Insights, campaigns, ad sets, ads, creatives and targeting through a hosted remote MCP server | Yes — launches campaigns (paused by default), updates budgets, pauses and resumes, with an explicit confirmation on writes | Add https://meta-ads.mcp.pipeboard.co/ as a connector and connect the ad account at pipeboard.co; self-hosting needs your own Meta developer app | Free plan (30 AI tool executions a week, 2 ad accounts); paid from US$29.90/month, as of September 2026. Code is source-available under the Business Source License 1.1 |
| TableBI (this page) | A synced, campaign-level daily copy in read-only SQL — spend, impressions, clicks, purchases and purchase value, plus reach and frequency in the raw table — beside Google Ads, GA4 and Search Console | No — read-only by design; it requests only Meta's ads_read permission | tablebi install, then tablebi connect meta_ads in Claude Code — in beta, so only people added to our Meta app as test users can authorize | Free for one source and one live dashboard; see pricing |
Sources, read September 26, 2026: Meta's announcement (April 29, 2026, updated July 16), Business Help Center article, developer docs and developer blog; Anthropic's custom connectors article; Windsor.ai's Meta Ads to Claude guide and pricing; Supermetrics' Facebook Ads to Claude page; pipeboard-co/meta-ads-mcp and Pipeboard pricing.
Pick by the job. If Claude should operate the account — draft campaigns, shift budget, pause what's fatigued — use a connector that writes, and set its guardrails before the first prompt: Meta's ads MCP server rules let a business-portfolio admin block campaign creation or cap budgets per ad account. Meta's own server is the direct route when Meta is the only platform in the conversation; a vendor connector makes sense when the same conversation also has to act on Google Ads or other networks. If the job is a number you report every week — spend, CPA and ROAS against Google Ads and GA4 under one definition — a synced backend fits better: the data is stored once, the agent can only read it, and a pinned dashboard refreshes without anyone re-asking the API.
Meta's official ads MCP server: what it does and how to add it
Meta ads AI connectors include a Meta-hosted ads MCP server and an ads command-line interface. Meta announced both in open beta on April 29, 2026. On July 16, 2026, it opened the server to developers with their own Meta app and added ads MCP server rules, which let anyone with full control of a business portfolio decide what AI agents may do on each ad account or catalog. Per Meta's Help Center, the server covers:
- Reporting — performance insights and detailed reports; Meta's developer blog lists spend, impressions, CTR and ROAS with breakdowns by age, gender and platform.
- Ad creation and management — create and edit campaigns, ad sets, ads and creatives. All ads are paused by default until you set them live.
- Audiences, catalogs and tests — create, update and delete custom audiences; build catalogs and troubleshoot feeds; create and manage A/B tests and conversion lift studies.
- Diagnostics — signal health for your pixel and datasets, a search of Meta Business Help Center articles, and activity logs that mirror the campaign history page in Ads Manager.
Meta lists four supported agents — ChatGPT, Claude, Claude Code and Perplexity — and the server URL is the same for all of them:
# Claude app: Customize → Connectors → + → Add custom connector # URL: https://mcp.facebook.com/ads # Claude Code: add it as a remote HTTP server claude mcp add --transport http meta-ads https://mcp.facebook.com/ads # then run /mcp inside Claude Code and finish the Facebook login in the browser
In the Claude app, custom connectors work on every plan, but the Free plan allows one, and on Team and Enterprise plans an Owner adds the connector for the organization first. Developers who want the server under their own Meta app pass that app's ID with --client-id. Two cautions from Meta's own pages: access is still rolling out — the Help Center warns you may not have every tool yet — so ask the agent which tools it has after connecting; and Meta says any action taken on your behalf needs your authorization through the agent, so set the rules in Meta Business Suite (Settings → Integrations → Ads MCP server) before a budget is in play. For terminal-first work, Meta's ads CLI (meta ads …, Python 3.12 or later) exposes the same kind of operations as shell commands, and it also creates new resources paused by default.
Vendor connectors: one connector across ad networks
Windsor.ai, Supermetrics and Pipeboard each run a hosted MCP server that reaches Meta through its Marketing API and also covers other ad platforms, so one conversation can compare — or change — Meta and Google Ads together. All three write, and all three put a check in front of changes: Windsor.ai shows the change and waits for your confirmation, Supermetrics creates new campaigns paused and logs every action in its Campaign History, and Pipeboard confirms writes and starts new campaigns paused. Windsor.ai and Supermetrics are listed in Claude's connector directory; Pipeboard's README has you add its server by URL. Their prices scale differently: Windsor.ai's plans with data sources and accounts, Supermetrics' with data sources, users and accounts after a 14-day trial, and Pipeboard's with ad account slots and weekly tool executions.
The read-only route: sync Meta Ads into SQL for Claude Code
The third route doesn't give Claude the keys to the account. TableBI syncs Meta Ads into a data backend that Claude Code queries with read-only SQL, next to Google Ads, GA4 and Search Console:
npm i -g @tablebi/cli
tablebi login
tablebi install
# browser opens for Meta OAuth; the ad account starts syncing
tablebi connect meta_ads
Meta Ads is in beta. Our Meta app hasn't passed Meta's App Review yet, so Meta only lets people with a role on the app authorize it: our own ad accounts and users we add as testers. If you aren't one of them, the Ads Manager export route below lands in exactly the same tables. Search Console, GA4 and Google Ads connect live with no such caveat.
TableBI is not an MCP server: tablebi install plants a Claude Code skill, and the agent runs tablebi ask for read-only SQL and tablebi pin for a live dashboard URL. An MCP entrance is on the roadmap, not shipped. The connector requests only Meta's ads_read permission, so nothing here can edit a campaign. Synced data lands at two altitudes:
facts— one row per day per campaign:cost(Meta's spend),impressions,clicks,conversionsandconversion_value, under the same definitions as Google Ads and GA4. The live connector syncs at campaign level, sodate,platform,accountandcampaigncarry values whilead_group,ad,channelandcountrystay empty.meta_ads_raw— Meta's own fields for the same rows, including reach, frequency, CPC and CPM, for when the unified view isn't enough.
One definition to know before the first query: the synced conversions count Meta's purchase actions, and conversion_value is their purchase value. A lead-generation campaign therefore shows zero conversions here — read that zero as "no purchases", not as waste.
Ad set and ad detail come in by file. Export an Ads Manager report broken down by day that includes the Ad set name column, and load it; the ad set lands in ad_group. When the same account also syncs live, give the export its own label, as below, so its rows don't add to the synced campaign totals. If the beta connector can't authorize your account, label the export meta_ads instead, so it sits exactly where synced rows would — the Facebook Ads to Looker Studio guide covers that export, including the Platform breakdown that splits out Instagram.
# ad set rows from an Ads Manager export, kept apart from the campaign sync
tablebi connect csv --file meta-adsets.csv --platform meta_ads_adsets
Three queries for the weekly Meta review
1. The campaign leaderboard: spend, purchases, CPA, ROAS
tablebi ask "SELECT campaign, SUM(cost) AS spend, SUM(conversions) AS purchases,
cpa(SUM(cost), SUM(conversions)) AS cpa,
roas(SUM(conversion_value), SUM(cost)) AS roas
FROM facts
WHERE platform = 'meta_ads'
AND date >= (SELECT MAX(date) FROM facts WHERE platform = 'meta_ads') - 28
GROUP BY campaign ORDER BY spend DESC LIMIT 20"
cpa(…) and roas(…) are definition macros: the arithmetic lives in the engine, so the agent never re-derives a ratio slightly wrong. The window anchors to Meta's own newest synced day rather than the wall clock — current_date isn't available in the query layer — so days that haven't synced can't drag the totals down.
2. Campaigns spending with zero purchases
tablebi ask "SELECT campaign, SUM(cost) AS spend, SUM(clicks) AS clicks
FROM facts
WHERE platform = 'meta_ads'
AND date >= (SELECT MAX(date) FROM facts WHERE platform = 'meta_ads') - 28
GROUP BY campaign
HAVING SUM(cost) > 0 AND SUM(conversions) = 0
ORDER BY spend DESC"
This is the scan that is tedious in Ads Manager and one pass here. Before acting on anything it lists, check two things: whether the campaign optimizes for something other than purchases, such as leads or traffic, and whether most of its spend falls in the last few days — Meta keeps crediting conversions within its attribution window, and the trust block warns that the most recent 72 hours move the most. The decision to pause stays with a person in Ads Manager — or with one of the connectors above, if you've chosen to let Claude write.
3. Meta versus Google Ads, one definition of ROAS
tablebi ask "SELECT platform, SUM(cost) AS spend,
roas(SUM(conversion_value), SUM(cost)) AS roas,
cpa(SUM(cost), SUM(conversions)) AS cpa
FROM facts
WHERE platform IN ('meta_ads', 'google_ads')
AND date >= (SELECT MAX(date) FROM facts) - 28
GROUP BY platform ORDER BY spend DESC"
Here platform is just another dimension, and cost and conversion value mean the same thing on every row, so a cross-network comparison is a GROUP BY. Treat the result as directional — Meta and Google attribute conversions differently, and when both are connected the trust block that ships with every answer attaches a caveat saying so, next to each source's freshness, so a two-row table can't hide it. The Google Ads side of this setup is covered in connecting Google Ads to Claude Code, and GA4 in connecting Google Analytics 4 to Claude.
Pin it: a Meta Ads weekly that refreshes itself
tablebi pin --title "Meta Ads weekly" \ --widget "Daily spend (28d)::line=SELECT date, SUM(cost) AS spend FROM facts WHERE platform = 'meta_ads' AND date >= (SELECT MAX(date) FROM facts WHERE platform = 'meta_ads') - 28 GROUP BY date ORDER BY date" \ --widget "Campaign leaderboard=SELECT campaign, SUM(cost) AS spend, SUM(conversions) AS purchases, roas(SUM(conversion_value), SUM(cost)) AS roas FROM facts WHERE platform = 'meta_ads' AND date >= (SELECT MAX(date) FROM facts WHERE platform = 'meta_ads') - 28 GROUP BY campaign ORDER BY spend DESC LIMIT 10" ✓ published → https://dk.tablebi.com/d/dsh_… (public, read-only, self-refreshing)
Widgets tagged ::line render as line charts; the rest render as tables. The URL is public, read-only and self-refreshing — syncs run on a schedule and are also triggered when someone opens the page. The full reporting routine this replaces, from ROAS rankings to week-over-week checks, is in Meta Ads reporting. The same three-way comparison for the other sources: Google Ads, Google Analytics 4 and Search Console.
FAQ
What is the Meta Ads MCP server URL?
https://mcp.facebook.com/ads. Meta hosts the server, and the same URL works for every agent Meta supports — ChatGPT, Claude, Claude Code and Perplexity. In Claude you add it as a custom connector; in Claude Code you add it as a remote HTTP server and sign in with /mcp.
Is there an official AI agent for Meta ads?
Meta has two answers. Meta AI business assistant works inside Ads Manager. Meta ads AI connectors — the ads MCP server and the ads CLI — let an AI tool you already use, such as Claude, read and manage your ad account.
Can Claude change my Meta Ads campaigns?
Through Meta's ads MCP server or a vendor connector that writes, yes: Claude can create and edit campaigns, ad sets and ads, and Meta starts new ads paused. A business-portfolio admin can block actions such as creating campaigns or editing budgets with ads MCP server rules. Through TableBI, no — it requests only Meta's ads_read permission and runs read-only SQL over synced data.
Is Meta's ads MCP server free?
Meta's announcement and Help Center article list no price; the connectors launched in open beta on April 29, 2026. Tool access is still rolling out gradually, so ask your agent which tools it can use after connecting.
Why is TableBI's Meta Ads connector in beta?
Our Meta app hasn't passed Meta's App Review yet, so Meta only lets people with a role on the app authorize it: our own ad accounts and users we add as testers. If you aren't one of them, export the report from Ads Manager and load it with tablebi connect csv --file meta-export.csv --platform meta_ads; it lands in the same tables.
Can I see ad sets and ads, not just campaigns?
Not in TableBI's synced tables — the live connector syncs at campaign level. Export an Ads Manager report with an Ad set name column and load it as a CSV; the ad set lands in the ad_group column. Meta's server and the vendor connectors query ad set and ad level live.
Give your Claude Code a read-only data backend in five minutes.
npm i -g @tablebi/cli && tablebi install