Meta built an official way to connect Claude or ChatGPT straight to your ads account. Not a scraper. Not a third-party bridge. First-party, Meta-authenticated, with the same access Ads Manager already has. This guide takes you from access token to your first working command. The whole setup runs about thirty minutes, and one step is the only part that trips people up.
Here is the loop you run today. You want last week's numbers, so you open Ads Manager. You click through the account, the campaign, the ad set, the breakdown. You export. You do the same dance again to change a budget. Then again to launch.
Every one of those clicks is now a sentence you type instead.
The version most people miss is that Meta shipped this for its competitors. The same company running its own Llama models handed Claude and ChatGPT first-class access to Meta Ads. If you run paid acquisition for a service business, that is the part worth sitting with. The agencies still billing you for manual reporting hours are about to look expensive.
What Meta Actually Shipped
An official, Meta-built way to drive your ads account from an AI chat. You log in with the same account that owns the ads, so it sees exactly what your login is allowed to see and nothing more.
There are two ways to connect. They do the same job from different surfaces, and you only need one.
| Path | What it is | Who it fits |
|---|---|---|
| MCP connector | A registered server Claude talks to. You ask in plain English, Claude calls the Meta tools behind the scenes. | You live in Claude Desktop or ChatGPT and want to stay in a chat window. |
| Ads CLI | Meta's official command-line tool. You run it in your terminal and let Claude Code write and execute the commands. | You already work in a terminal, or you want Claude Code building repeatable scripts. |
Both hit the same account through the same permissions. Pick the surface you already spend your day in. You can switch later without redoing the token.
What is an MCP, in plain terms
An MCP is a standard way to give an AI assistant a safe, named set of tools it can use on your behalf. Instead of Claude guessing or scraping, Meta publishes the exact actions it is allowed to take on your ads, and Claude calls those actions when you ask. You stay in control of the login, the permissions, and what gets confirmed before it runs.
Step One: Get The Four Things In Place First
Before you touch a token, line these up. Missing one is the usual reason the next step stalls.
You need a Meta Business account with an active ad account, which lives at business.facebook.com. You need admin access to that ad account, set under Business Settings, then Ad Accounts, then People. You need a Meta developer app, created at developers.facebook.com under My Apps. And you need a current version of Claude, Desktop or Code, or ChatGPT.
The admin part matters more than it looks. The token you make in the next step inherits whatever permission level you have. A viewer-only role gives you a token that can read reports but cannot change a single budget. If you are not an admin on the ad account, ask whoever is to add you before you go further.
The mistake that makes it fail: building the token on a viewer account, then wondering why every write command comes back refused. Fix the role first. The token cannot grant power the account never gave you.
Step Two: Create The App And The Access Token
This is the field that trips people up. Take it one step at a time and it is fifteen minutes of clicking, not an afternoon.
- Go to developers.facebook.com and sign in with your Meta Business login.
- Open My Apps and click Create App. Choose the business type and connect it to your Business account.
- Inside the app, add the Marketing API product. This is what exposes the ad-account actions.
- Open the Graph API Explorer, or the Marketing API token tool, and generate an access token. Select your app and your ad account.
- Grant the scopes the connection needs. At minimum:
ads_management,ads_read,business_management. If you want Claude touching product catalogs too, addcatalog_management. - Copy the token. Then convert the short-lived token into a long-lived one so it does not expire in an hour. The token tool has a button for this. If yours does not, exchange it through the token endpoint.
Treat that token like a password, because it is one. Anyone holding it can spend your ad budget. Do not paste it into a chat message. Do not put it in a screenshot. Do not commit it to a repo. It goes in an environment variable or a secrets file the assistant reads at runtime, never inline in the conversation.
The mistake that makes it fail: skipping the long-lived exchange in step six. A short-lived token works for the first test, dies an hour later, and leaves you convinced the whole setup broke. It did not. The token expired. Do the exchange.
Step Three: Connect It To Claude Or ChatGPT
Two paths. Pick the one that matches how you work.
If you use the MCP connector
Register the Meta Ads MCP server in your client's config and pass the token as an environment variable, so it never gets written into the conversation. A minimal entry looks like this.
Copy this.
{
"mcpServers": {
"meta-ads": {
"command": "npx",
"args": ["-y", "meta-ads-mcp"],
"env": { "META_ACCESS_TOKEN": "${META_ACCESS_TOKEN}" }
}
}
}
Set the token in your shell first, then restart the client so it loads the new server.
Copy this.
export META_ACCESS_TOKEN="your-long-lived-token"
If you use the official Ads CLI
Install the CLI, authenticate once, and let Claude Code build the commands for you. You stay in the terminal. Claude writes the calls and runs them against your account. This path suits anyone who wants the commands saved as scripts they can rerun on a schedule.
Step Four: Prove The Connection With A Read-Only Ask
Before you let it near a budget, confirm the wiring with a request that cannot break anything. Ask for numbers, not changes.
Copy the connection check
Copy this.
List my ad accounts and show total spend for the last 7 days, broken down by campaign. Read only. Do not change anything.
If real numbers come back that match what you see in Ads Manager, you are wired up correctly. If the reply is empty or throws a permission error, walk back one step: recheck the scopes on the token, confirm you are an admin on the account, and make sure you restarted the client after adding the server.
Done. The connection is live and you have watched it read your real data without touching it.
Step Five: What It Unlocks Once It Works
Every report, change, and launch you used to click through is now a sentence.
| Job | What you ask Claude |
|---|---|
| Performance insights | "Pull a 7-day report. Rank creatives by cost per result." |
| Budget changes | "Pause campaign 4. Boost campaign 2 by 20 percent." |
| Ad creation | "Launch a new ad set with variant B and these three creatives." |
| Catalog updates | "Add these products to the summer catalog and refresh prices." |
The operator's move is to start small. Replace the report you pull every Monday morning first. Once you trust that, hand over the budget tweaks. Build confidence on the boring, reversible stuff before you ever let it launch a live campaign. The point is not to automate everything on day one. It is to take back the hours you spend clicking, one safe task at a time.
The Guardrails Worth Keeping
Reads are safe. Writes spend money. Treat the two differently and you get all of the speed with none of the horror stories.
Run reports freely. Nothing you ask it to read can cost you anything. Confirm every write, though, until the pattern earns your trust. That means budget changes, launches, and pauses all get a human yes for at least the first week. Keep one checkpoint between Claude's suggestion and the spend actually moving. And if that token ever leaves the machine, in a log, a paste, anywhere, rotate it. Long-lived does not mean forever-safe.
Honest: When Not To Wire This Up
A few cases where you should wait.
If you do not have admin on the ad account, stop at step one. You can still get a read-only token for reporting, but half the value here is the changes, and a viewer token cannot make them. Fix the role or skip the setup.
If nobody on your team is comfortable storing a secret in an environment variable, get that sorted before you generate the token. The single biggest risk in this whole setup is a leaked token, and the way tokens leak is people pasting them into places they should not. If secret handling is loose in your shop, tighten it first.
And if your ad account is tiny, a couple of campaigns you glance at once a week, the thirty-minute setup may not pay you back fast. The math flips the moment you are running enough campaigns that reporting and budget tweaks eat real hours. That is who this is for.
If You Only Do One Thing This Week
Wire it up and run one read-only report. That is the whole assignment. Do not launch anything, do not change a budget, do not build an automation. Just get the token made, connect the server, and ask it to pull last week's spend.
If the numbers come back and match Ads Manager, you have proof it works and a token that will still be alive tomorrow. If they do not, you spent half an hour and learned exactly which permission was missing. Either way you are further than the people still clicking through six screens for a number they could have asked for.