# Google Ads in Cursor.

Adwarp is an open-source MCP server and CLI that connects Cursor to Google Ads. Add it in 1 click, sign in from your terminal, then ask Cursor's agent to research keywords, build paused Search campaigns and pull reports.

```text
$ cursor-agent
> Draft a Search campaign for the page at example.com/product.
adwarp.gads_keyword_ideas page example.com/product: 50 ideas
adwarp.gads_launch_search_campaign dry run: valid
Validated by Google. Nothing was created yet.
Confirm and it's created paused. You switch it on in Google Ads.
```

## Set up in 3 steps.

1. Get Google Ads API access. A developer token from your Google Ads manager account, plus a Desktop app OAuth client in Google Cloud.

   [ads.google.com/aw/apicenter](https://ads.google.com/aw/apicenter)
2. Sign in from your terminal. Add both to ~/.adwarp/google.json, and Adwarp opens your browser for Google's approval.

   `npx -y adwarp google auth login`
3. Add it to Cursor. 1 click, and Cursor's agent can use all 9 Google Ads tools on your machine.

   [Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=adwarp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImFkd2FycCIsIm1jcCJdfQ==)

### Prefer to edit the config?

Add this entry to ~/.cursor/mcp.json, or to .cursor/mcp.json inside a project. It's the same entry the button adds.

`~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "adwarp": { "command": "npx", "args": ["-y", "adwarp", "mcp"] }
  }
}
```

## 5 prompts to try first.

### Which revops keywords get the most searches in the US?

```text
$ cursor-agent
> Which revops keywords get the most searches in the US?
adwarp.gads_keyword_ideas "revops", US, en: 50 ideas
Monthly searches, competition and top-of-page bid range for each
```

### Draft a Search campaign for the page at example.com/product.

```text
$ cursor-agent
> Draft a Search campaign for the page at example.com/product.
adwarp.gads_keyword_ideas page example.com/product: 50 ideas
adwarp.gads_launch_search_campaign dry run: valid
Validated by Google. Nothing was created yet.
Confirm and it's created paused. You switch it on in Google Ads.
```

### How did each ad group do in the last 30 days?

```text
$ cursor-agent
> How did each ad group do in the last 30 days?
adwarp.gads_performance ad_group, last_30_days: by ad group
Impressions, clicks, click-through rate, cost per click and conversions
```

### Which client accounts sit under my manager account?

```text
$ cursor-agent
> Which client accounts sit under my manager account?
adwarp.gads_list_client_accounts manager account: client accounts
```

### Run a GAQL query for every paused campaign.

```text
$ cursor-agent
> Run a GAQL query for every paused campaign.
adwarp.gads_search campaign.status = PAUSED: read-only
```

## Why running Google Ads from Cursor gets better results.

### Keywords from the page

Keyword ideas can start from your landing page URL, so research matches what the page offers.

### Copy matches the page

Ads and the landing page sit in 1 workspace, so headlines match the page they point to.

### Nothing spends by accident

Every build is validated by Google first and lands paused, and only you can switch it on.

## Questions, answered.

### Is there an official Google Ads MCP server?

Yes, and it's read-only. Adwarp is independent and open source, and it also researches keywords and builds paused Search campaigns.

### How do I add Adwarp to Cursor?

Click Add to Cursor, or paste the JSON entry above into Cursor's MCP config. Then sign in once with npx -y adwarp google auth login.

### Can Cursor launch Google Ads campaigns?

It builds them, always paused. Adwarp has no tool to enable a campaign, so you switch it on yourself in Google Ads.

### Does it work with the hosted endpoint?

Not for Google Ads. The hosted endpoint serves many callers, and Google credentials there would come from shared server settings, so it never registers the Google tools. Run Adwarp on your machine with your own developer token and OAuth client.

### What access do I need?

A Google Ads developer token from a manager account and a Desktop app OAuth client. Campaigns and reporting work on Explorer access, and keyword research needs Basic access.

- A developer token from the API Center of a Google Ads manager account. A plain client account can't issue one.
- Explorer access arrives automatically and covers campaigns and reporting. Keyword research needs Basic access, a separate application on the same screen.
- An OAuth client of the Desktop app type, in a Google Cloud project with the Google Ads API enabled.
- A consent screen that isn't left in Testing, which issues sign-ins that stop working after 7 days.

### What goes in google.json?

Your OAuth client, developer token and account ids, kept on your machine.

loginCustomerId is your manager account, needed only when you reach the ad account through one. Then run npx -y adwarp google auth login.

`~/.adwarp/google.json`:

```json
{
  "clientId": "....apps.googleusercontent.com",
  "clientSecret": "...",
  "developerToken": "...",
  "loginCustomerId": "1234567890",
  "defaultCustomerId": "0987654321",
  "defaultConversionActionNames": ["Demo Booked"]
}
```

### Which Google Ads tools does it add?

9 tools, all running on your machine.

| Tool | What it does |
| --- | --- |
| `gads_list_accounts` | Every Google Ads customer your login can reach. Run it first to prove the setup works. |
| `gads_list_client_accounts` | The client accounts under a manager account. |
| `gads_keyword_ideas` | Search volume, competition and top-of-page bid range for seed terms or a landing page. |
| `gads_list_campaigns` | Campaigns with their ad groups, paused ones included. |
| `gads_list_ads` | The ads in an ad group, with their responsive search copy. |
| `gads_list_conversion_actions` | Conversion actions on the account, so a launch can name 1. |
| `gads_launch_search_campaign` | A paused Search campaign from a brief, in 1 atomic change, validated by Google first. |
| `gads_performance` | Rows at campaign, ad group, ad, keyword or search term level. |
| `gads_search` | A raw, read-only GAQL query. |

### Which house rules does every campaign follow?

Search network only, people in your target area, manual CPC to start, and created paused.

- Search network only. Display expansion and search partners are off.
- People physically in your target area. US means people in the US, not anyone who searched about it.
- Manual CPC to start. Switch to smart bidding in Google Ads once there's conversion data.
- Created paused, with no tool to enable it. You switch it on in Google Ads.
- Search campaigns only for now. No Performance Max, Display, Shopping, video or Customer Match yet.

## Related

- [Google Ads](https://adwarp.dev/google-ads): Search campaigns, keywords, reporting
- [Google Ads CLI](https://adwarp.dev/google-ads/cli): Script it instead
- [LinkedIn Ads in Cursor](https://adwarp.dev/linkedin-ads/cursor): The same setup for LinkedIn

Unofficial. Not affiliated with or endorsed by LinkedIn or Google.

Canonical page: https://adwarp.dev/google-ads/cursor
Last updated: 2026-10-18
