PerfoAds MCP: a free Google Ads MCP server
PerfoAds MCP is a free, open-source Google Ads MCP server. You run it on your own computer and sign in with your own Google account. Then your AI app (Claude, the ChatGPT desktop app or Codex) can read your Google Ads accounts, run 162 checks on them, and make changes you approve. Your data goes only between your computer and Google. Nothing passes through PerfoAds.
It works with Google Ads. It isn't made, endorsed or supported by Google.
Key facts
- Price
- Free
- License
- Apache-2.0, open source
- Runs on
- Your own computer (Mac, Windows or Linux) with Node.js 22.13 or later
- Works in
- Claude Desktop, Claude Code, the ChatGPT desktop app, Codex and Cursor
- Doesn't work in
- ChatGPT on the web
- Tools
- 25
- Checks
- 162, with no AI involved
- Changes
- 14 kinds, each with an undo
- Who approves
- You, on a page outside the chat
- Built by
- PerfoAds (Pawel Wilk)
- Status
- Early release
What is a Google Ads MCP server?
MCP stands for Model Context Protocol. It's an open standard that lets an AI app use outside tools. A Google Ads MCP server gives your AI app tools to read your ad account and, if you allow it, change it.
You ask in plain words, like “which search terms cost money last month and never sold anything?” Search terms are what people typed into Google before they saw your ad. The AI picks the right tool and answers with your real numbers.
What can PerfoAds MCP do?
Read your accounts
14 read tools cover campaigns, ad groups, keywords, search terms, budgets and bidding, negative keywords, ads and assets, audiences, conversions and change history. Negative keywords are words you've told Google never to show your ads for. Accounts under a manager account show up too. Money comes back in each account's own currency.
Check them
162 checks look at conversion tracking, account structure, budgets and bidding, Search, Performance Max, Shopping, devices and locations, and trends over time. No AI is involved, so the same data always gives the same result.
Each problem comes with where it is and the numbers behind it. A check that couldn't run says so and gives the reason. It's never counted as clean.
The checks tell you what's wrong and show the evidence. They don't give fix advice. Fix plans live in the paid PerfoAds app.
Change them, with your approval
There are 14 kinds of change: budgets, campaign status, bid targets, negative keywords (add or remove), shared negative keyword lists, new keywords, pausing a keyword, ad text, sitelinks, callouts, audience exclusions, removing products from Shopping ads, and a new Search campaign.
Each change can be undone, most of them for 30 days. A new campaign is always made paused, and it can only be undone while it hasn't run.
How are changes approved?
- The AI proposes a change. The server reads the live values, checks your limits, and asks Google to test the change without applying it.
- A page opens in your browser, on your computer only. It shows the account, the exact change, every campaign it touches, and the AI's reason in a separate box marked “unverified”.
- You approve with the 6-character code from that page, or you reject the change. An AI saying “yes” approves nothing.
- The change is sent once. Then the server reads the account again to confirm it landed, and it logs every step.
Changes are off until you switch them on for an account in your policy file. That file also sets your spend limits, how big a budget step can be, and a kill switch that stops every change.
What does a check look like?
Here's the real answer from the explain_check tool for check SK05. It looks for search terms that spend past a set amount without a single sale.
{
"id": "SK05",
"title": "search term spends past the waste bar without a conversion",
"group": "search",
"noneFoundMeans": "No search term spends past the bar without a sale.",
"requires": [
"searchTerms",
"campaigns"
],
"dependsOn": [
"searchTerms",
"adGroups",
"campaigns",
"dailyMetrics"
],
"producedBy": [
{
"table": "searchTerms",
"section": "search_terms"
},
{
"table": "adGroups",
"section": "ad_groups"
},
{
"table": "campaigns",
"section": "campaigns"
},
{
"table": "dailyMetrics",
"section": "daily_metrics"
}
],
"settings": {
"floors.wasteBandUnder1kUsd": 20,
"floors.wasteBand1kTo10kUsd": 50,
"floors.wasteBand10kTo50kUsd": 100,
"floors.wasteBand50kPlusUsd": 200
},
"maxSeverity": "warning",
"emitsFindings": true,
"infoLine": null,
"whenNotRun": [
"Not run when any table it depends on (searchTerms, adGroups, campaigns, dailyMetrics) was not read, failed, was refused by Google, was cut (a sample) or points at missing parents.",
"Not run when its own floors are not met (too little spend, too few conversions, too new) or when nothing it judges exists on the account."
]
}The bar goes up with the size of the account, from $20 to $200. When the data is missing or too thin, the check says “not run” and gives the reason. For a problem worked through step by step, read Performance Max spending but no sales.
How do I install it?
Setup takes about 15 minutes, plus Google's review of your access request.
- Install Node.js 22.13 or later.
- In Google Cloud, make a project, turn on the Google Ads API, and make an OAuth client of the type “Desktop app”. OAuth is Google's standard sign-in for apps.
- On the Google Ads API page of that project, apply for Explorer access. Until Google approves it, only test accounts work.
- In a terminal, run
npx -y perfoads-mcp@0.2.0-alpha.0 init. It asks for your OAuth client, opens Google's sign-in, saves the sign-in encrypted, and prints the settings for your AI app. - Add it to your AI app. For Claude Code, run:
For Claude Desktop and Cursor, paste the settingsclaude mcp add --scope user perfoads-mcp -- npx -y perfoads-mcp@0.2.0-alpha.0 serveinitprinted. They look like this:
For the ChatGPT desktop app and Codex, follow the setup guide.{ "mcpServers": { "perfoads-mcp": { "command": "npx", "args": ["-y", "perfoads-mcp@0.2.0-alpha.0", "serve"] } } } - Ask your AI: “Check my PerfoAds setup.” It tests the sign-in, your access level and your policy file, and says what to fix.
Every step in detail: the setup guide on GitHub.
What can't it do?
- It doesn't work in ChatGPT on the web. That needs a remote server, and PerfoAds MCP runs on your computer. The ChatGPT desktop app and Codex both work.
- It doesn't give fix advice. It says what's wrong, with the evidence.
- Explorer access allows 2,880 operations a day on live accounts. Keyword ideas need Basic or Standard access.
- If your Google Cloud app stays in “Testing” mode, Google ends the sign-in after 7 days. The setup guide shows how to avoid that.
- It's an early release. It has passed live tests on a Google Ads test account, and read-only runs on real accounts.
Where does my data go?
Everything stays on your computer. Your Google sign-in is saved encrypted in one settings folder. Account snapshots are deleted after 24 hours. There's no PerfoAds account, no tracking and no telemetry.
Your AI app sees what it reads, under your own agreement with the company that makes it. Full details: the privacy policy and the terms of service.
Who built it?
Pawel Wilk, founder of PerfoAds. He's run Google Ads for about 7 years and managed millions of dollars in ad spend. PerfoAds is a one-person company in Warsaw, so your questions reach him directly.
Want the fixes too?
PerfoAds MCP tells you what's wrong. The PerfoAds app adds fix plans and fixes you approve in 1 click. Or talk it through with Pawel on a free 1-hour call.
Frequently asked questions
Is PerfoAds MCP free?
Yes. It's free and open source under the Apache-2.0 license. You can use it, change it and share it for any purpose. Your only costs are your own: your ad spend and your AI app's plan.
Does it work with ChatGPT?
Yes, in the ChatGPT desktop app and in Codex. It doesn't work in ChatGPT on the web, because that needs a remote server and PerfoAds MCP runs on your computer.
Can the AI change my Google Ads account without asking me?
No. Changes are off until you turn them on for an account. Then every change waits for you on an approval page outside the chat, and you approve it with a code. The only exception is one you set up yourself: your policy file can let the AI pause a campaign or lower a budget on its own.
Is PerfoAds MCP made by Google?
No. It works with the Google Ads API, but Google didn't make it and doesn't endorse or support it. Google Ads is a trademark of Google LLC.
Does PerfoAds see my Google Ads data?
No. Your data goes only between your computer and Google. PerfoAds never receives your data, your sign-in or your chats.
More from PerfoAds: the fix library and the best Google Ads audit tools.