Google Ads MCP Server
Provides access to Google Ads API for comprehensive campaign analytics, including account info, campaign, ad group, ad, keyword, search term, asset group, conversion, demographic, and budget performance analytics.
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 ServerShow me campaign performance for last 7 days"
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 Model Context Protocol (MCP) server that provides access to Google Ads API for comprehensive campaign analytics. Use with Claude Code for conversational ad performance analysis.
Features
Google OAuth Authentication: Secure login with Google for multi-user access
Remote HTTP Access: StreamableHTTP transport for remote MCP connections
11 Analytics Tools: Comprehensive Google Ads performance analytics
Account information
Campaign, Ad Group, and Ad performance metrics
Keyword performance with quality scores
Search term reports
Performance Max asset group analysis
Conversion action tracking
Demographic performance (age, gender, device)
Budget pacing and utilization analysis
Multi-level data export
Docker Support: Containerized deployment with health checks
Production Ready: Environment-based configuration, security best practices
Related MCP server: ads-mcp-server
Prerequisites
Node.js 24+ (or Docker)
Google Ads API access (apply for developer token)
Google Cloud project with OAuth 2.0 credentials
Google Ads account with active campaigns
Quick Setup (Local Development)
1. Clone and Install
git clone https://github.com/jgdeutsch/google-ads-mcp.git
cd google-ads-mcp
npm install2. Get Google Ads API Credentials
Create a Google Cloud project at console.cloud.google.com
Enable the Google Ads API
Create OAuth 2.0 credentials (Desktop application type)
Get your developer token from Google Ads API Center
3. Get Refresh Token
# Edit scripts/get_refresh_token.py with your CLIENT_ID and CLIENT_SECRET
python3 scripts/get_refresh_token.py4. Configure Environment
cp .env.example .env
# Edit .env and add:
# - GOOGLE_ADS_CLIENT_ID (from OAuth credentials)
# - GOOGLE_ADS_CLIENT_SECRET (from OAuth credentials)
# - GOOGLE_ADS_REFRESH_TOKEN (from step 3)
# - GOOGLE_ADS_DEVELOPER_TOKEN (from API Center)
# - GOOGLE_ADS_LOGIN_CUSTOMER_ID (MCC account, no dashes)
# - GOOGLE_ADS_CUSTOMER_ID (ad account, no dashes)
# - SESSION_SECRET (generate with: openssl rand -base64 32)
# - REQUIRE_AUTH=false (for local use)5. Start the Server
npm run build && npm start
# Or for development with hot reload:
npm run dev6. Configure Claude Code
Add to ~/.config/claude-code/mcp.json:
{
"mcpServers": {
"google-ads": {
"url": "http://localhost:3000/mcp",
"transport": "http"
}
}
}7. Test in Claude Code
You: "Show me campaign performance for last 7 days"
You: "What are my top performing keywords?"
You: "Show search terms with highest spend"
You: "How's my budget pacing this month?"Available Tools
# | Tool | Description |
1 |
| Account info (name, currency, timezone, status) |
2 |
| Campaign metrics with budget and bidding strategy |
3 |
| Ad group metrics with campaign context |
4 |
| Individual ad performance metrics |
5 |
| Keyword metrics with quality scores |
6 |
| Search queries that triggered your ads |
7 |
| Performance Max asset group metrics |
8 |
| Conversion actions and conversion metrics |
9 |
| Performance by age, gender, or device |
10 |
| Budget pacing and utilization rates |
11 |
| Multi-level data export with daily breakdowns |
Date Ranges
All tools support these date range presets:
TODAY,YESTERDAYLAST_7_DAYS,LAST_14_DAYS,LAST_30_DAYS,LAST_90_DAYSTHIS_MONTH,LAST_MONTH
Docker Deployment
# Build and start
docker-compose up -d
# View logs
docker-compose logs -f
# Stop
docker-compose downProduction Deployment (Railway)
Fork this repo
Connect to Railway
Set environment variables in Railway dashboard
Deploy (uses Dockerfile automatically)
Environment Variables
See .env.example for full documentation.
Required
Variable | Description |
| OAuth client ID |
| OAuth client secret |
| OAuth refresh token |
| Google Ads API developer token |
| MCC account ID (no dashes) |
| Ad account ID (no dashes) |
| Random 32+ char secret |
Optional
Variable | Default | Description |
|
| Server port |
|
| Bind address |
|
| Environment |
|
| Enable OAuth for team access |
|
| Session duration (ms) |
Development
npm install # Install dependencies
npm run type-check # Type checking
npm run dev # Development with hot reload
npm run build # Build TypeScript
npm start # Run built versionSecurity
OAuth 2.0 with PKCE for authentication
Bearer tokens with 24-hour expiry
Non-root Docker container
No secrets in version control
.envexcluded via.gitignore
License
MIT
Support
GitHub Issues: https://github.com/jgdeutsch/google-ads-mcp/issues
Built with the Model Context Protocol SDK
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.
Latest Blog Posts
- 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/jgdeutsch/google-ads-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server