MCP Server — Coding Agent Knowledge Pack
Google Ads Search Platform MCP Server Knowledge Pack
Search campaign management, ad optimization, keyword diagnostics, and bid strategy for Google Ads
sidebutton install ads.google.com Google Ads Search Platform
Browser-based management of Google Ads Search campaigns. Covers campaign diagnostics, responsive search ad editing, keyword management, bid strategy configuration, and ad strength optimization.
Browser Access
- Requires Google account login in connected browser
- URL pattern:
https://ads.google.com/aw/{section}?ocid={account_id}&authuser={n} - Multi-account:
authuser=0for primary,authuser=1for secondary - Session expires after ~30min idle — watch for account chooser screen
- Ad blocker dialog may appear — does not block functionality but hides some content
URL Patterns
| Page | URL Pattern |
|---|---|
| Campaigns | /aw/campaigns?ocid={id} |
| Ad groups | /aw/adgroups?campaignId={cid}&ocid={id} |
| Ads | /aw/ads?ocid={id} |
| Keywords | /aw/keywords?campaignId={cid}&ocid={id} |
| Ad Preview & Diagnosis | /aw/diagnostic/AdPreview?ocid={id} |
| Keyword Planner | /aw/keywordplanner/home?ocid={id} |
| Campaign Settings | Edit via gear icon on campaign row, not a separate URL |
| RSA Editor | /aw/ads/edit/search?adId={aid}&adGroupIdForAd={agid}&ocid={id} |
Navigation Hierarchy
Account
> Campaign (budget, bid strategy, networks, locations)
> Ad Group (keyword theme, default bid)
> Keywords (match type, status, quality score)
> Ads (responsive search ad: headlines, descriptions, sitelinks)
Key UI Elements
Top-level Navigation (Left sidebar)
| Element | Location |
|---|---|
| Campaigns menu | menuitem "Campaigns" — expands to: Campaigns, Ad groups, Ads, Assets, Keywords |
| Tools menu | menuitem "Tools" — expands to: Keyword Planner, Ad Preview, etc. |
| Settings tab | Tab within campaign view — campaign-level settings |
Campaign List Page
| Element | How to Find |
|---|---|
| Campaign link | a:has-text("Campaign Name") in grid |
| Edit settings gear | button "Edit settings" next to campaign name (opens slide-out panel) |
| Bid strategy column | Column "Bid strategy type" — shows "Maximize clicks", "Manual CPC", etc. |
| Budget column | Column "Budget" — shows daily/total amount |
| Status column | Shows "Bid strategy learning", "Eligible", etc. |
Campaign Settings Panel (Slide-out)
Opened by clicking gear icon next to campaign name. Contains collapsible sections:
| Section | Key Fields |
|---|---|
| Campaign name | Text input |
| Campaign status | Enabled/Paused |
| Networks | Google Search, Search Partners, Display Network |
| Budget | Daily amount or campaign total |
| Bidding | Strategy type + Max CPC bid limit |
| Locations | Geographic targeting |
| Languages | Language targeting |
Bidding section expanded shows:
- Strategy selector (Maximize clicks, Manual CPC, Target CPA, etc.)
- "Set a maximum cost per click bid limit" checkbox
- Maximum CPC bid limit input (e.g., "€2.00")
Keywords Page
| Element | How to Find |
|---|---|
| Keyword list | Grid with columns: Keyword, Match type, Ad group, Status, Impr., Clicks, etc. |
| Match types | "Phrase match", "Exact match", "Broad match" |
| Status values | "Eligible", "Paused", "Below first page bid" |
| Pagination | "Show rows" dropdown + "Go to next page" button at bottom |
Responsive Search Ad Editor
Opened by clicking ad title link, then Edit assets FAB button.
| Element | Selector / How to Find |
|---|---|
| Final URL | textbox "Final URL" |
| Display Path 1 | textbox "Path 1" |
| Display Path 2 | textbox "Path 2" |
| Headlines (max 15) | Series of textbox "Headline" inputs |
| Descriptions (max 4) | Series of textbox "Description" inputs |
| Business name | textbox "Business name" |
| Sitelinks section | Region with "Sitelinks" heading — "Add" buttons for each slot |
| Ad Strength indicator | progressbar "Ad strength overall score is ..." |
| Save button | material-button:has-text("Save ad") — at very bottom, may need JS to find |
| Pin options | button "Please select pin options" next to each headline/description |
Ad Strength categories (shown as notes with score indicators):
- Add more headlines
- Include popular keywords in your headlines
- Make your headlines more unique
- Make your descriptions more unique
- Add more sitelinks
Score levels: low (empty circle), medium (blue partial), high (green check)
Ad Strength ratings: Incomplete → Poor → Average → Good → Excellent
Sitelink Creation Dialog
Opened by clicking "Add" button in sitelinks section of RSA editor.
| Field | Max Length |
|---|---|
| Sitelink text | 25 chars |
| Description line 1 | 35 chars |
| Description line 2 | 35 chars |
| Final URL | Full URL |
- Supports up to 6 sitelinks per ad
- Multiple sitelinks can be created in one dialog (expandable panels)
- Click "Create" button to save sitelinks, then "Save ad" for the full ad
Ad Preview & Diagnosis Tool
| Element | How to Find |
|---|---|
| Search term input | combobox "Enter a search term" |
| Location selector | Region "Location setting" |
| Language selector | Region "Language setting" |
| Device selector | Region "Device setting" |
| Results grid | Grid "Rejected ads" with columns: Campaigns, Ad group, Reason |
Diagnosis reasons:
- "The ad is rejected early on because it's unlikely to lead to an impression based on the predicted Ad Rank."
- "Your ad is showing" (green)
- "Your ad isn't showing" (red) with match count
Keyword Planner
| Element | How to Find |
|---|---|
| Discover keywords card | button "Discover new keywords" |
| Search volume card | button "Get search volume and forecasts" |
| Keywords textarea | textbox "Enter or paste your keywords..." |
| Submit button | Unnamed button next to textarea (becomes enabled when text entered) |
| Results grid | Grid with columns: Keyword, Avg. monthly searches, Competition, Top of page bid (low/high) |
Data Model
Campaign
| Field | Type | Values |
|---|---|---|
| Status | enum | Enabled, Paused, Removed |
| Bid strategy | enum | Maximize clicks, Manual CPC, Target CPA, Target ROAS, Maximize conversions |
| Max CPC bid limit | currency | Optional cap on auto-bidding strategies |
| Budget type | enum | Daily, Campaign total |
| Networks | multi-select | Google Search, Search partners, Display Network |
| Campaign type | enum | Search, Performance Max, Display, Video, Shopping |
Keyword
| Field | Type | Values |
|---|---|---|
| Match type | enum | Broad, Phrase, Exact |
| Status | enum | Eligible, Paused, Below first page bid, Removed |
| Quality Score | 1-10 | Based on expected CTR, ad relevance, landing page experience |
| Max CPC | currency | Keyword-level bid override (optional) |
Responsive Search Ad
| Field | Limits |
|---|---|
| Headlines | 3-15 (minimum 3 required, 15 max, aim for 13+ for Excellent) |
| Descriptions | 2-4 (minimum 2 required, 4 max) |
| Final URL | 1 required |
| Display path | 2 segments, 15 chars each |
| Sitelinks | 0-6 (need 6 for "high" score) |
| Business name | 0-25 chars |
Ad Rank Formula
Ad Rank = Bid x Quality Score x Expected Impact of Extensions
Quality Score components:
- Expected CTR — predicted click-through rate
- Ad relevance — how closely ad matches search intent
- Landing page experience — page relevance, speed, mobile-friendliness
Key insight: Low Max CPC bid limit is the #1 cause of "ad rejected early" — check Keyword Planner for "Top of page bid" to set appropriate limits.
Common Tasks
1. Diagnose Why Ads Aren't Showing
- Navigate to Ad Preview & Diagnosis: Tools > Troubleshooting > Ad preview and diagnosis
- Enter target keyword in search box
- Set location, language, device, audience
- Check results grid — expand each campaign row to see rejection reason
- If "low Ad Rank": check Max CPC bid limit vs Keyword Planner top-of-page bids
2. Check/Update Max CPC Bid Limit
- Navigate to Campaigns page
- Click gear icon "Edit settings" next to campaign name
- Click "Bidding" section to expand
- Check "Set a maximum cost per click bid limit" checkbox state
- If checked, compare limit value against Keyword Planner "Top of page bid (high range)"
- Increase or uncheck to let Google optimize freely
- Click Save
3. Get Keyword CPC Estimates
- Navigate to Tools > Planning > Keyword Planner
- Click "Get search volume and forecasts"
- Enter keywords (comma-separated or one per line)
- Click submit button (unnamed, next to textarea)
- Review grid: Avg. monthly searches, Competition, Top of page bid (low/high range)
- Compare against current Max CPC bid limit
4. Improve Ad Strength to Excellent
Headlines (need 13-15 for Excellent):
- Include primary keywords in at least 3 headlines
- Mix benefit statements ("Ship Code 20x Faster") with feature statements ("AI Code Review & PRs")
- Include pricing ("From $99/Agent/Month")
- Include CTA ("Deploy AI Agents Today")
- Include trust ("Open Source AI Platform", "No Vendor Lock-In")
- Each headline must be unique — no near-duplicates
Descriptions (need 4/4):
- Description 1: core value proposition
- Description 2: features and social proof
- Description 3: metrics and urgency
- Description 4: differentiation and trust (open source, no lock-in)
- Max 90 chars each
Sitelinks (need 6 for high score):
- Pricing page link
- How it works / process
- FAQ
- Primary CTA (Get Started / Contact)
- Feature page (tech stack, integrations)
- Trust page (open source, security)
- Each needs: text (25 chars), 2 description lines (35 chars each), URL
Business name: Set to match domain or brand
5. Cross-Reference with Keyword Planner
- Export campaign keywords from Keywords page
- Enter all keywords in Keyword Planner
- Compare "Top of page bid (high range)" against Max CPC limit
- Any keyword where bid high > Max CPC will likely not show
- Prioritize keywords by: search volume x affordability
6. Edit Responsive Search Ad
- Navigate to Ads page
- Click ad title link to open assets view
- Click Edit assets FAB button (
material-fab[aria-label="Edit assets"]) - Edit headlines, descriptions, display path, business name
- Add sitelinks via "Add" buttons in Sitelinks section
- Monitor Ad Strength indicator — aim for all 5 categories "high"
- Find Save button:
material-button:has-text("Save ad")(at bottom, may require JS evaluation to locate)
States
| State | Indicators |
|---|---|
| Ad showing | Green status in Ad Preview, impressions > 0 |
| Ad not showing — low Ad Rank | "rejected early" in diagnosis, 0 impressions |
| Ad not showing — paused | Campaign or ad group status = Paused |
| Bid strategy learning | Status column shows "Bid strategy learning" (normal for new campaigns, 1-2 weeks) |
| Account not verified | Advertiser verification required banner |
| Session expired | Google account chooser screen appears |
Tips
- snapshot(includeContent=true) is the primary tool — returns full page content + accessibility tree with element refs
- Use screenshot only for visual verification (ad preview, chart readings)
- Campaign settings panel is a slide-out dialog, not a separate page — click gear icon to open
- The RSA editor "Save ad" button is often off-screen — use JS evaluation to find:
material-button:has-text("Save ad") - When viewing keyword data, the page may show "1-10 of many" — use pagination buttons to see all
- Keyword Planner results are region-specific — check the location filter (Germany vs US will show different volumes/CPCs)
- Google may auto-suggest sitelinks — accept good ones, add custom ones for the rest
- Display path is cosmetic only — it doesn't need to match a real URL, but should match the landing page theme
Gotchas
- Ad blocker dialog: "Turn off ad blockers" dialog appears frequently — it does NOT block functionality, just overlays. Most actions still work.
- Session expiry: Google Ads sessions expire after ~30min idle. Watch for account chooser screen. Navigate back to the target URL with
authuser=0. - Wrong account login: If account chooser appears, clicking wrong account (e.g.,
[email protected]instead of main account) leads to "You do not have any Google Ads accounts" — must switch back. - Save button hidden: The RSA editor "Save ad" button is a
material-buttonat the very bottom of a long scrollable form. Use JS to find it:document.querySelectorAll('material-button').filter(b => b.textContent.includes('Save ad')) - Preview vs Save confusion: The RSA editor has both "Preview ads" and "Save ad" buttons at the bottom — they look similar. "Preview" opens a modal, "Save" saves the ad.
- Sitelink character limits: Sitelink text = 25 chars, Description lines = 35 chars each. Exceeding causes validation error (red border, "Value too long").
- Display path not a URL: Display path is cosmetic (
aictpo.com/ai-agents) — the actual click destination is the Final URL. Don't put an anchor route here. - Settings tab filter: The "Settings" tab on campaigns page may show "No campaigns match your filters" if campaign-type filters are active.
- Keyword Planner creates plans: Each "Get search volume" query creates a persistent "Plan" in your account — clean up old plans periodically.
- "Bid strategy learning": New campaigns show this status for 1-2 weeks. Normal behavior, but if Max CPC is too low, learning phase produces no data.
- Display Network on Search campaigns: Enabling Display Network on a Search campaign dilutes budget on low-quality placements — generally disable it for Search campaigns.
- Hash URLs for sitelinks: URLs like
https://example.com/#pricingwork as sitelink Final URLs — Google follows the hash anchor.
References
references/ad-strength-checklist.md— step-by-step checklist for reaching Excellent ad strengthreferences/keyword-diagnostics.md— diagnostic workflow for "ads not showing" issues