Google Ads MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Ads MCP ServerGet performance metrics for campaign 'Spring Sale' last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Ads MCP Server
A comprehensive Google Ads MCP server providing ~47 tools for full read/write access to Google Ads accounts. Built for Claude Desktop, Claude Code, and other MCP-compatible clients.
Features
Accounts — list accessible accounts, get account info, MCC hierarchy
Campaigns — full CRUD for Search, Display, Video, Demand Gen campaigns
Ad Groups — create, update, list, and manage ad groups
Ads — RSA, Responsive Display, Video, and Demand Gen ad creation
Keywords — add, remove, update bids, get performance
Performance Max — complete PMax support: asset groups, assets, audience signals
Budgets — create, update, list, and check utilization
Reporting — flexible GAQL queries, campaign/ad group/keyword performance
Utilities — GAQL resource discovery, field metadata, micros conversion
Related MCP server: ads-mcp
Setup
Prerequisites
Python 3.12+
uv for dependency management
Google Ads API credentials (developer token, GCP service account JSON key)
Installation
git clone https://github.com/bertramdev/GoogleAdsMCP.git
cd GoogleAdsMCP
uv syncConfiguration
Copy .env.example to .env and fill in your credentials:
cp .env.example .envRequired environment variables:
GOOGLE_ADS_DEVELOPER_TOKEN— your API developer tokenGOOGLE_ADS_SERVICE_ACCOUNT_PATH— path to GCP service account JSON key fileGOOGLE_ADS_LOGIN_CUSTOMER_ID— MCC customer ID (if using MCC)
Optional:
GOOGLE_ADS_IMPERSONATED_EMAIL— Workspace user email for domain-wide delegationGOOGLE_ADS_CUSTOMER_ID— default customer ID for operations
Running
uv run google-ads-mcpClaude Desktop Configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"google-ads": {
"command": "uv",
"args": ["run", "--directory", "/path/to/GoogleAdsMCP", "google-ads-mcp"],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "...",
"GOOGLE_ADS_SERVICE_ACCOUNT_PATH": "/path/to/service-account.json",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "...",
"GOOGLE_ADS_IMPERSONATED_EMAIL": "user@yourdomain.com"
}
}
}
}Claude Code Configuration
Add to .mcp.json in the project root:
{
"mcpServers": {
"google-ads": {
"command": "uv",
"args": ["run", "--directory", "/path/to/GoogleAdsMCP", "google-ads-mcp"],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "...",
"GOOGLE_ADS_SERVICE_ACCOUNT_PATH": "/path/to/service-account.json",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "...",
"GOOGLE_ADS_IMPERSONATED_EMAIL": "user@yourdomain.com"
}
}
}
}Permissions
All tools include MCP tool annotations (readOnlyHint, destructiveHint, etc.) so clients can make informed permission decisions. However, Claude Code requires explicit allow rules — annotations alone don't auto-approve tools.
Within this project: The project-level .claude/settings.json auto-allows read-only tools (get_*, list_*, execute_gaql, convert_micros). Write tools require approval on each use.
From other projects: Project-level permissions don't apply. To allow all tools globally, add to ~/.claude/settings.json:
{
"permissions": {
"allow": [
"mcp__google-ads__*"
]
}
}Or for read-only tools only:
{
"permissions": {
"allow": [
"mcp__google-ads__get_*",
"mcp__google-ads__list_*",
"mcp__google-ads__execute_gaql",
"mcp__google-ads__convert_micros"
]
}
}Security Considerations
This MCP server cannot modify account access, user permissions, login credentials, billing, or payment methods. There are no tools for account administration — a compromised server cannot lock anyone out of their account.
Worst-case impact if credentials are compromised:
Risk | Details |
Financial | Creating campaigns/budgets or increasing keyword bids could spend money |
Disruption | Pausing/removing campaigns, keywords, or ad groups |
Data exposure | Reading account performance, search terms, and campaign details. |
Removal tools (remove_campaign, remove_keyword, remove_asset_from_group) require confirm_removal=True as a server-side safety guard. The set_*_status tools execute immediately without a confirmation parameter.
Testing
uv run pytestTool Reference (47 tools)
Accounts (3)
list_accessible_accounts— List accounts accessible via credentialsget_account_info— Account details (name, currency, timezone)get_account_hierarchy— MCC hierarchy tree
Campaigns (6)
list_campaigns— List campaigns with optional status filterget_campaign— Single campaign detailscreate_campaign— Create Search/Display campaign with budgetupdate_campaign— Update name, bidding strategy, etc.set_campaign_status— Enable/pause/removeremove_campaign— Soft delete with confirm
Ad Groups (5)
list_ad_groups— List ad groups in campaignget_ad_group— Ad group detailscreate_ad_group— Create ad group with bidupdate_ad_group— Update name, bid, statusset_ad_group_status— Enable/pause/remove
Ads (7)
list_ads— List ads in ad groupcreate_responsive_search_ad— RSA for Search campaignscreate_responsive_display_ad— Responsive display adcreate_video_ad— Video ad for YouTubecreate_demand_gen_ad— Demand Gen adset_ad_status— Enable/pause/removeget_ad_details— Full ad details
Keywords (5)
list_keywords— List keywords in ad groupadd_keywords— Add keywords with match types (batch)remove_keyword— Remove keywordupdate_keyword_bid— Update CPC bidget_keyword_performance— Keyword metrics
Performance Max (8)
create_performance_max_campaign— Full PMax campaign creationlist_asset_groups— List asset groups in PMax campaignget_asset_group_details— Asset group details with linked assetsadd_assets_to_group— Add assets to asset groupremove_asset_from_group— Remove asset from asset groupadd_audience_signal— Add audience/search theme signalsget_asset_performance— Asset-level performance labelsget_pmax_placement_performance— Channel breakdown
Budgets (4)
list_budgets— List campaign budgetscreate_budget— Create shared budgetupdate_budget— Update budget amountget_budget_utilization— Budget vs actual spend
Reporting (6)
execute_gaql— Flexible GAQL query executionget_campaign_performance— Campaign metricsget_ad_group_performance— Ad group metricsget_search_terms_report— Search terms reportget_keyword_performance_report— Keyword metricsget_account_performance_summary— Account daily summary
Utilities (3)
list_gaql_resources— Available GAQL resourcesget_field_metadata— Field metadata for a resourceconvert_micros— Micros to currency conversion
License
Apache 2.0 — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Google Ads API — 22 tools for campaigns, keywords, RSAs, assets, audiences, geo/device performance, impression share, auction insights, and budget pacing. Community edition with B2B/agency-focused tooling beyond the official Google MCP.Last updated22591MIT
- Alicense-qualityBmaintenanceUnified MCP server for managing Meta Ads, LinkedIn Ads, Google Ads, GA4, and Search Console with 89 read/write tools, multi-account support, OAuth setup, and safe dry-run mutations.Last updatedMIT
- AlicenseAqualityFmaintenanceA read-write MCP server for managing Google Ads campaigns, ad groups, keywords, and ads via natural language.Last updated122The Unlicense

google-ads-mcpofficial
Alicense-qualityBmaintenanceMCP server that provides tools and resources for interacting with Google Ads API, enabling search, metadata retrieval, and account management through natural language.Last updated732Apache 2.0
Related MCP Connectors
All-in-one marketing MCP: research, create, publish & manage ads from your agent. 73 tools.
Manage Google, Meta, Amazon, TikTok, LinkedIn & ChatGPT ads. 430 tools for campaigns & analytics.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bertramdev/GoogleAdsMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server