Claude and AI
Meta Ads MCP server: build your own or use a hosted one
A Meta Ads MCP server turns the Marketing API into tools Claude can call. Compare running your own against a hosted connector, and what to check first.
Also available in: Português
A Meta Ads MCP server is a service that exposes the Meta Marketing API as tools an AI model can call: list ad accounts, pull spend by campaign, pause an ad set. You have two ways to get one. Run an open-source project yourself, with your own Meta app, your own tokens and your own hosting. Or point Claude at a hosted connector and authorize with Facebook. Both are legitimate. This is the honest comparison of what each one costs you, what breaks in each, and what to ask before you give any of them write access to a live account.
What a Meta Ads MCP server actually is
MCP is the Model Context Protocol, the open standard that lets a model call outside tools. If the term is new, what is MCP for marketers covers it in five minutes. The one-line version: the model is the client, and a server publishes a list of tools it can call.
A Meta Ads MCP server is one of those servers, wrapped around Meta's Marketing API. It does three things.
- It declares tools, each with a name and a description. "Query Meta Ads insights for a date range" is a tool. "Set a daily budget" is another.
- It holds an access token for a Meta app and calls the Graph API on your behalf when a tool runs.
- It translates. The model asks for "spend by campaign last week"; the server turns that into a real API call with the right fields, levels and date preset, and returns clean rows.
The model does not know anything the tools do not expose. If there is no tool for placement breakdowns, Claude cannot produce them, and a well-built server says so instead of guessing. That is the whole security model in one sentence: the tool list is the permission list.
Road one: run an open-source server yourself
There are open-source MCP servers for the Meta Marketing API, and this route is real work, not a weekend script. Here is what you actually sign up for.
Your own Meta app. The server authenticates as an app you create in Meta's developer console. That app needs the ads permissions, and Meta gates those behind Business Verification and App Review. You submit, you wait, you answer questions about what your app does. There is no shortcut, and the timeline is not something you control.
Tokens and renewal. Access tokens expire. Someone has to notice before the Monday report does. If you manage client accounts, a revoked permission on one Business Manager is a silent failure until you go looking.
Hosting and secrets. The server has to run somewhere reachable by Claude, over HTTPS, with the token stored somewhere that is not a text file on a laptop. Add logging, or you will have no answer when a client asks who changed the budget.
Graph API versions. Meta versions the Graph API and retires older versions on a published schedule. When the version your server pins goes away, calls start failing and fields move. This is maintenance forever, not a one-time port.
Write safety is yours to build. An open-source server that can set budgets will happily set the one the model asked for. Caps, confirmations and an audit trail are features someone on your side has to write.
None of that makes the route wrong. If you are a technical team that wants the code in your own repo, the token in your own vault, and tools shaped exactly around how you work, self-hosting gives you that and nothing else does. Some agencies also have client contracts that make a third-party data processor a conversation they would rather not have. Fair.
Road two: a hosted connector
A hosted Meta Ads MCP server is run by someone else. You authorize with Facebook through the normal login screen, tick which ad accounts to include, paste the server address into Claude, and ask your first question. The app, the App Review, the token refresh, the hosting and the Graph API upgrades are the provider's problem.
What you give up is control of the tool surface. You get the tools the provider built. If you need a field nobody exposed, you wait or you ask. What you get back is time and a shorter list of things that can silently break on a Friday.
Side by side
| Open-source server you run | Hosted connector | |
|---|---|---|
| Time to first data | Days to weeks, mostly waiting on Meta | Minutes |
| Meta app and App Review | Yours to create, submit and defend | Already done by the provider |
| Graph API version retires | Your calls break; you port the code | Provider ports it; you notice nothing |
| Write safeguards | You build caps, confirmation and audit | Should ship with them; verify before trusting |
| Who holds the token | You | The provider, under OAuth you can revoke |
| Audit trail | Whatever you log | Should be built in, including refused actions |
| Cost shape | Hosting plus engineering time, ongoing | A subscription |
| Best for | Teams that want the code and the token in house | Media buyers and agencies who want the answer |
The row people underestimate is the fourth one. Reading is forgiving. A wrong query returns a wrong number and you catch it. A wrong write sets a daily budget at ten times what you meant, on a Friday, on a client account.
What to ask before trusting an ads MCP server with write access
Run this checklist against any server, including one you built.
- How do I authorize? The answer should be OAuth through Facebook's own screens, with no password ever typed into the tool. If anything asks for your Facebook password, stop.
- Which accounts can it see? You should choose, account by account, and be able to shrink the list later.
- Is writing off by default? Reading a report and pausing a campaign are different powers and should be different switches.
- Is there a cap per action? A ceiling like "no single change sets a daily budget above US$ 500" turns a misunderstanding into a refusal instead of an invoice.
- Does it confirm before acting? Every action that touches a live campaign should be shown to you in the chat and wait for a yes.
- Is every change logged? With author, origin, and the state before and after. Refused attempts included, because those are the interesting ones.
- Can I revoke it in one click? From the tool and from Facebook itself.
- What happens when a tool cannot answer? The right behaviour is to say the field is not available. A server that lets the model improvise is worse than no server.
Answer those eight and you know more about the server than most people who connect one.
How to connect Vazante in three steps
Vazante is a hosted Meta Ads MCP server, plus a panel for the people who want something to open. Setup looks like this.
1. Authorize. Sign up and authorize Facebook. That single authorization covers Meta Ads and Facebook Pages, including accounts clients shared with you through their business portfolios. Vazante lists them and you tick the ones to include. Authorize Google the same way if you also run Google Ads, manager accounts included. Vazante never sees your password, and the whole step takes under a minute.
2. Add the connector in Claude. Settings → Connectors → Add custom connector → paste https://vazante.app/api/mcp → authorize. No API key, no code. You need a Claude plan that supports connectors. The step-by-step with screenshots is on the connect Meta Ads to Claude page.
3. Ask something you already know the answer to. "Spend by campaign, last 7 days, account X." Compare it against Ads Manager. When it matches, move on to the questions you do not have time to answer by hand. Plans and what each one includes are on pricing.
Which road to pick
Pick the open-source route if you have an engineer who owns this, a reason the token must live in your infrastructure, and tolerance for Meta's review queue and version schedule. It is a good answer for teams building something specific on top of the Marketing API.
Pick a hosted connector if what you want is the answer, and the ad account paperwork is not the product you are building. That is most media buyers and most agencies.
Either way, start read-only on one account for a week. Once the numbers hold up against Ads Manager, Claude for paid ads covers what to ask and how to turn writing on without regret, Meta Ads reporting covers what belongs in the report itself, and AI for media buyers is the wider view of what this actually changes in the job.
Frequently asked questions
What is a Meta Ads MCP server?
A service that exposes the Meta Marketing API as tools an AI model can call. Instead of you opening Ads Manager, the model asks the server for spend by campaign, and the server queries Meta and returns the numbers.
Do I need a Meta app of my own to use one?
Only if you run the server yourself. A self-hosted server authenticates as your own Meta app, so you handle the app, the tokens, Business Verification and App Review. A hosted connector uses its own approved app, so you just authorize with Facebook.
Can a Meta Ads MCP server change my campaigns?
It can if it exposes write tools and you allow it. Look for writing off by default, a cap per action, confirmation in the chat before anything runs, and a change log that records refused attempts too.
Is an open-source Meta Ads MCP server a bad idea?
No. It is a reasonable choice when you want full control of the code and the token, and you have someone to maintain it. The cost is the Meta app paperwork, hosting, and keeping up with Graph API versions.
How do I connect a hosted Meta Ads MCP server to Claude?
In Claude, go to Settings, Connectors, Add custom connector, paste the server address, and authorize. With Vazante the address is the one on the connect page, and no API key or code is involved.