MCP.Market

Ads MCP server

by gudlab·io.github.gudlab/ads-mcp·v0.1.1

MCP server for Google Ads and Meta Ads. Wraps both APIs directly to manage campaigns.

B82/100grade B
What users say
No reviews yet
Be the first
Safety scan
B82/100

full report

Adoption
New

0 stars

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • google_ads_add_keywords

    Add keywords to an existing ad group

  • google_ads_add_negative_keywords

    Add campaign-level negative keywords

  • google_ads_create_search_campaignwrite action

    Create a new Search campaign with ad groups, keywords and RSAs. Always created PAUSED.

  • google_ads_get_campaign_structure

    Get a campaign's ad groups, keywords, ads, and negatives

  • google_ads_list_campaigns

    List campaigns with status and budget

  • google_ads_remove_keywordswrite action

    Permanently remove keywords. Requires confirm_delete: true.

  • google_ads_set_campaign_status

    Enable or pause a campaign. The only tool that can turn spend on.

  • google_ads_set_keyword_status

    Pause or enable keywords (reversible)

  • google_ads_update_bid_strategywrite action

    Change a campaign's bidding strategy

  • meta_ads_get_ad_status

    Get an ad's review status and rejection reason if any

  • meta_ads_list_ads_by_status

    List ads in an account filtered by effective_status (e.g. DISAPPROVED)

  • meta_ads_list_campaigns

    List Meta campaigns with status and budget

  • meta_ads_set_campaign_status

    Enable 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

no findings
  • 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
Overall 82/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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

  1. 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.
  2. Under that OAuth client, add http://localhost:8787/oauth2callback as an authorized redirect URI.
  3. 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.
  4. 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.
  5. 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

  1. Meta App: developers.facebook.com, My Apps, Create App (type: Business). Copy the App ID/Secret from Settings, Basic into .env.
  2. 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.
  3. 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.
  4. 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 version

Once 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:

  1. Run googleadslistcampaigns / metaadslistcampaigns first, read-only, the cheapest way to confirm auth and the client libraries are wired correctly.
  2. 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.
  3. 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_TOKEN and 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.

  • AdLoop
    Google Ads, Reddit Ads, GA4 and Tag Manager in your AI client, with a preview before every change.
    A