Ads MCP server
io.github.gudlab/ads-mcp·v0.1.1MCP server for Google Ads and Meta Ads. Wraps both APIs directly to manage campaigns.
0 stars
Reviews
Write oneNobody has reviewed Ads yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Ads tools (13, 3 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
google_ads_add_keywordsAdd keywords to an existing ad group
google_ads_add_negative_keywordsAdd campaign-level negative keywords
google_ads_create_search_campaignwrite actionCreate a new Search campaign with ad groups, keywords and RSAs. Always created PAUSED.
google_ads_get_campaign_structureGet a campaign's ad groups, keywords, ads, and negatives
google_ads_list_campaignsList campaigns with status and budget
google_ads_remove_keywordswrite actionPermanently remove keywords. Requires confirm_delete: true.
google_ads_set_campaign_statusEnable or pause a campaign. The only tool that can turn spend on.
google_ads_set_keyword_statusPause or enable keywords (reversible)
google_ads_update_bid_strategywrite actionChange a campaign's bidding strategy
meta_ads_get_ad_statusGet an ad's review status and rejection reason if any
meta_ads_list_ads_by_statusList ads in an account filtered by effective_status (e.g. DISAPPROVED)
meta_ads_list_campaignsList Meta campaigns with status and budget
meta_ads_set_campaign_statusEnable or pause a Meta campaign. The only tool that can turn spend on.
Public scan report
scanner v0.1.9 · 2026-09-22 · same rubric, same numbers if you re-run it
- Code scan6 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 0 days ago15/15
- Maintainer identityregistry namespace matches repository owner7/10
How Ads compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 82/100
- higher than 63% of 48,273 servers
- Tools
- 13
- the typical server has 7
- Tools that change things
- 23%
- typical: 0%. Fewer write tools means less an agent can break
What its tools let an agent do: 10 read · 3 change
Install Ads in Claude Code, Cursor or VS Code
Runs npx -y @gudlab/ads-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add ads-mcp -- npx -y @gudlab/ads-mcp
What the publisher says
From the Ads repository's README, as published. We do not edit it. Read it on GitHub
ads-mcp
An MCP server wrapping the Google Ads API and Meta Marketing API directly, with no third-party quota or middleman. Point an MCP-compatible client at it and manage Search campaigns, keywords, ads and Meta ad review status straight against Google's and Meta's own APIs.
Every write tool that could spend money is safe by default: googleadscreatesearchcampaign always creates campaigns PAUSED, and the only tools that can turn spend on are googleadssetcampaignstatus / metaadssetcampaignstatus, called explicitly.
Setup
Credentials require logins and business identity only you have; nothing here can be automated.
Google Ads
- Google Cloud project + OAuth client: console.cloud.google.com, new (or existing) project, APIs & Services, Credentials, Create OAuth client ID (type: Desktop app). Copy the Client ID/Secret into .env.
- Under that OAuth client, add http://localhost:8787/oauth2callback as an authorized redirect URI.
- Developer token: ads.google.com/aw/apicenter, apply for a token. Basic access is free and usually approved within a few days; it allows ~15,000 operations/day. Put it in .env as GOOGLEADSDEVELOPER_TOKEN.
- Run pnpm install then pnpm google:auth, this opens a browser, you sign in and consent, and it prints a refresh token to paste into .env as GOOGLEADSREFRESH_TOKEN.
- Set GOOGLEADSCUSTOMERID to the 10-digit account ID (no dashes) these tools should operate on by default. If that account is managed under an MCC account, also set GOOGLEADSLOGINCUSTOMER_ID to the MCC's ID.
Meta Ads
- Meta App: developers.facebook.com, My Apps, Create App (type: Business). Copy the App ID/Secret from Settings, Basic into .env.
- Request the adsmanagement permission under App Review. This needs Business Verification** (documents proving the business is real) and usually a short screen-recording demo of the exact use case. This step is slow, budget for weeks, not days.
- Once approved, generate a long-lived System User access token (Business Settings, System Users) with adsmanagement scope on the ad account, and put it in .env as METAACCESS_TOKEN.
- Set METAADACCOUNTID to the numeric account ID (no act prefix needed, the client adds it).
Running
pnpm install
pnpm dev # runs the MCP server over stdio via tsx, for local testing
pnpm build && pnpm start # compiled versionOnce published to npm, it also runs via npx @gudlab/ads-mcp, no local clone needed. Point an MCP-compatible client at it, e.g. in Claude Code's .mcp.json:
{
"mcpServers": {
"ads-mcp": {
"command": "npx",
"args": ["-y", "@gudlab/ads-mcp"],
"env": {
"GOOGLE_ADS_CLIENT_ID": "...",
"GOOGLE_ADS_CLIENT_SECRET": "...",
"GOOGLE_ADS_DEVELOPER_TOKEN": "...",
"GOOGLE_ADS_REFRESH_TOKEN": "...",
"GOOGLE_ADS_CUSTOMER_ID": "...",
"META_APP_ID": "...",
"META_APP_SECRET": "...",
"META_ACCESS_TOKEN": "...",
"META_AD_ACCOUNT_ID": "..."
}
}
}
}Before that's published, point it at the local build instead: command: "node", args: ["/path/to/ads-mcp/dist/index.js"], or command: "pnpm", args: ["dev"] with cwd set to this directory for local iteration.
First real run: verify before trusting it
The Google Ads and Meta Marketing APIs both shift field/enum names across versions, so before relying on any tool here for real campaign work:
- Run googleadslistcampaigns / metaadslistcampaigns first, read-only, the cheapest way to confirm auth and the client libraries are wired correctly.
- Test googleadscreatesearchcampaign on a throwaway campaign name, then check it directly in the Google Ads UI rather than trusting the tool's own response as proof of correctness.
- Only after that, use it for real campaign work.
Tool reference
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Ads: common questions
- Is Ads MCP server safe?
- Mostly: it is graded B (82/100). Read the Ads safety report
- How do I install Ads?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Ads need an API key?
- Yes. The registry entry asks for
GOOGLE_ADS_CLIENT_ID,GOOGLE_ADS_CLIENT_SECRET,GOOGLE_ADS_DEVELOPER_TOKEN,GOOGLE_ADS_REFRESH_TOKENand 2 more. - Is Ads maintained?
- The last commit was 41 days ago (2026-09-22). The latest release is v0.1.1.
- What can I use instead of Ads?
- Servers from other publishers that do the same job: AdLoop MCP server.
- How does Ads compare with other MCP servers?
- safety score 82/100 (higher than 63% of 48,273 servers); tools 13 (the typical server has 7); tools that change things 23% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Ads
Same job from other publishers: the closest match first, then the best rated.
- AdLoopGoogle Ads, Reddit Ads, GA4 and Tag Manager in your AI client, with a preview before every change.not reviewedEstablishedA