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: google-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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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 Connectors
Google Ads, Meta Ads & GA4 MCP server - 250+ tools for campaigns, creatives, audiences & reports.
Google Ads MCP server — manage campaigns, keywords, and metrics.
Meta Ads MCP server with 47 tools for campaigns, creatives, audiences, and insights.
Google Ads MCP with 20,000+ account peer context and staged approve-then-execute writes.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceMCP server that provides tools and resources for interacting with Google Ads API, enabling search, metadata retrieval, and account management through natural language.907Apache 2.0- AlicenseAqualityDmaintenanceAn MCP server for the Google Ads API, providing 29 tools for campaign management, reporting, and optimization.293MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Google Ads API with built-in safeguards, MCC support, and 36 tools for campaign management, reporting, and optimization.3181MIT
- AlicenseNot gradedqualityBmaintenanceComplete Google Ads API v21 MCP server with 40+ fully implemented tools for campaign, ad group, keyword, extension, and portfolio bidding management, enabling AI assistants to create, optimize, and manage Google Ads campaigns through natural language commands.MIT
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