AdCopilotby Atromx

Gemini CLI + Google Ads: Setup and First Prompts

Connect Gemini CLI to Google Ads with one JSON block — httpUrl, not url — then verify with /mcp, run first prompts, and handle the quirks.

Updated 2026-08-11Atromx IntelligenceGoogle Ads · Search, PMax, Display, YouTube, Demand Gen
The short answer

Gemini CLI connects to Google Ads through one settings.json entry: {"mcpServers":{"adcopilot":{"httpUrl":"https://mcp.adcopilot.cloud/c/<your connector key>/mcp"}}} — the field must be httpUrl, since url means SSE and will not connect to a streamable-HTTP connector. Restart Gemini CLI, run /mcp to see the tools, and ask for last week's spend. Writes prompt for confirmation before executing.

Gemini CLI takes your Google Ads connector as one JSON block in settings.json — wire it up and your agent reads and runs the account from plain-language prompts, at the speed of a sentence. There's a single trap: the field is httpUrl, not url. Get that right and the rest is two minutes — restart, /mcp, first prompt. This page covers the Gemini-specific details; how the connector itself works across every MCP client is the pillar.

The config block

Edit ~/.gemini/settings.json (create it if missing) and add:

{
  "mcpServers": {
    "adcopilot": {
      "httpUrl": "https://mcp.adcopilot.cloud/c/<your connector key>/mcp"
    }
  }
}

If the file already has content, merge the mcpServers object into it rather than pasting a second JSON document — a syntax error here makes Gemini CLI silently ignore the whole file.

Two placement rules:

  • httpUrl, not url. Gemini CLI uses url for SSE servers and httpUrl for streamable HTTP. The connector is streamable HTTP; the wrong field gives you a server entry that never lists tools.
  • Global file, not project file. A .gemini/settings.json inside a repo works too — but the connector address is a credential, and repo config gets committed. Keep the key in your home directory.

Restart Gemini CLI after editing; the config is read at startup.

Verify, then ask

Inside Gemini CLI, run:

/mcp

You should see adcopilot with its tool list — reads like search and list_accessible_customers, writes like create_campaign and add_negative_keywords. If the server shows but tools do not, it is the httpUrl trap above; if nothing shows at all, work through the troubleshooting page.

Then three first prompts, in order:

List the Google Ads accounts you can see.
In account <account>, what did we spend in the last 7 days, by campaign,
with conversions and cost per conversion?
Which search terms cost money in the last 14 days without converting?
Top 20 by cost — just show me, don't change anything.

All three are reads: no confirmations, no risk, immediate answers. They are also a calibration test — you know this account, so check the numbers against the UI once, and you have established the accuracy that every later approval leans on.

How approvals look here

The first time the agent calls a write tool — say add_negative_keywords — Gemini CLI stops and asks for confirmation, naming the tool, with options to allow once or always allow. That pause is the approval loop, and the sane policy is the same one as in every other client: graduate read tools and harmless writes to always-allow as they prove boring, keep budgets and statuses on manual confirmation forever.

Resist the shortcut of "trust": true on the server entry. It switches off confirmations wholesale — reads and budget changes alike — which trades the entire safety mechanism for a saved keypress.

Two quirks worth using deliberately

  • includeTools makes a read-only session. Add "includeTools": ["search", "list_accessible_customers", "get_resource_metadata"] to the server entry and Gemini CLI exposes only those tools — an ads analyst config with no write path at all. Client-side filtering, not a server guarantee, but a tidy default for a first week or a reporting-only teammate.
  • Config edits need a restart. Gemini CLI reads settings.json at launch. If you edit the block mid-session and wonder why nothing changed — that is why.

Five minutes from here

Paste the block, restart, run /mcp, and ask the three first prompts — that is the whole setup, and the third prompt usually surfaces the first wasted spend worth killing. The same connector address works unchanged in Claude Code and Cursor, so trying another client costs nothing but the paste.

No connector address yet? Start a free pilot — sign in with your own Google account, copy the private address it gives you, and drop it into the httpUrl field above. Seven days, full toolset, up to five accounts, no card.

Frequently asked questions

Why does Gemini CLI show the server but no tools?

Nearly always the wrong field name: url instead of httpUrl. Gemini CLI treats url as an SSE endpoint and httpUrl as streamable HTTP; the connector speaks streamable HTTP, so the url variant fails to complete the handshake. Fix the field, restart Gemini CLI, and run /mcp again — the tool list should populate.

Should I set trust: true to skip the confirmation prompts?

Not for a server with write tools. trust: true suppresses the per-call confirmation, which is the only thing standing between a misread instruction and an executed account change. If the prompts feel heavy, use the always-allow option on individual read tools as they come up, and keep confirmations on every tool that mutates the account.

Can I make Gemini CLI read-only for my ads account?

Yes, at the client level: Gemini CLI's per-server includeTools setting lets you list only the tools you want exposed — list the read tools and the session simply has no write capability. It is a client-side filter rather than a server guarantee, but for day-one exploration or a teammate's config it is a clean way to run reads with zero risk.

The offer

Try it on your own account for a week

The full set of tools for the week, so you can see what it actually does — and it still cannot delete anything. No cost, no card, no contract: you connect your own Google account and can withdraw the access whenever you like.

  • Up to 5 accounts
  • One week
  • Full tools
  • No card
Keep reading