Google Ads MCP Server
by CoraCote
README.md
# Google Ads MCP Server
*Updated on May 22, 2025 - Phase 5 Automated Insights Features Implementation Complete*
A Model Context Protocol (MCP) server that provides access to Google Ads data through Claude Desktop.
## Features
- Access Google Ads campaigns, accounts, and performance metrics via Claude
- Budget Management API Endpoints with visualizations (Project Quantum Pulse Phase 3)
- Keyword Management API Endpoints with visualizations (Project Quantum Pulse Phase 2)
- Ad Group Management API Endpoints (Project Quantum Pulse Phase 1)
- Support for both Manager (MCC) and client account data
- Built-in caching to improve performance and reduce API calls
- Claude Artifacts integration for data visualization
- Multi-environment support (development, testing, production)
- Containerized deployment with Docker
## Project Quantum Pulse Roadmap
This repository implements the Project Quantum Pulse roadmap for enhanced Google Ads management capabilities:
### Phase 1: Ad Group Management API Endpoints (COMPLETE) - March 29 to April 4, 2025
- Get ad groups with filtering capabilities
- View ad group performance metrics
- Create new ad groups
- Update existing ad groups
- Visualize ad group performance
### Phase 2: Keyword Management API Endpoints (COMPLETE) - April 5 to April 18, 2025
- Browse keywords with filtering capabilities ✅
- Analyze search terms and find insights ✅
- Add, update, and remove keywords ✅
- Visualize keyword performance with tables, charts, and word clouds ✅
### Phase 3: Budget Management API Endpoints (COMPLETE) - April 19 to May 2, 2025
- Retrieve campaign budgets with performance metrics ✅
- Analyze budget utilization and distribution ✅
- Generate budget recommendations ✅
- Visualize budget performance with charts and tables ✅
- Update budget properties (API call implementation pending)
### Phase 4: Enhanced Visualization Templates (COMPLETE) - May 3 to May 16, 2025
- Implement comprehensive dashboard templates ✅
- Create comparison visualization templates ✅
- Build breakdown visualization templates ✅
- Integration, testing, and documentation ✅
### Phase 5: Automated Insights Features (COMPLETE) - May 17 to May 30, 2025
- Implement performance anomaly detection ✅
- Generate optimization suggestions ✅
- Discover growth opportunities ✅
- Create integrated insights dashboard ✅
## Prerequisites
- Python 3.9 or higher
- Google Ads API credentials
- Claude Desktop
## Quick Start
### Local Development
1. Clone this repository:
```
git clone https://github.com/yourusername/google-ads-mcp.git
cd google-ads-mcp
```
2. Set up a virtual environment:
```
python -m venv .venv
source .venv/bin/activate # On Windows, use: .venv\Scripts\activate
```
3. Install dependencies:
```
pip install -r requirements.txt
```
4. Create a `.env` file with your Google Ads credentials:
```
cp .env.example .env
# Edit .env file with your credentials
```
5. Run the server:
```
python server.py
```
### Docker Deployment
1. Build the Docker image:
```
docker build -t google-ads-mcp:latest .
```
2. Run the container:
```
docker run -p 8000:8000 --env-file .env google-ads-mcp:latest
```
Alternatively, use docker-compose:
```
docker-compose up -d
```
## Configuration
The application supports different environments (dev, test, prod) with environment-specific configurations:
- Set `APP_ENV` to `dev`, `test`, or `prod` to specify the environment
- Configure environment variables as documented in `.env.example`
- Feature flags allow enabling/disabling specific functionality
## Claude Desktop Integration
1. Configure Claude Desktop for the MCP server in your Claude Desktop App configuration:
```json
{
"mcpServers": {
"google-ads": {
"command": "python",
"args": [
"/absolute/path/to/server.py"
]
}
}
}
```
2. Restart Claude Desktop and look for the tools icon to appear
3. Use Google Ads data in Claude by asking questions like:
- "Show me my Google Ads account performance"
- "What campaigns are performing well in my account?"
- "Create a visualization of my campaign performance"
- "List all ad groups in my 123-456-7890 account"
- "Update the status of ad group 12345678 to PAUSED"
- "Create a new ad group called 'Summer Products 2025' in campaign 98765432"
## Ad Group Management Tools
The following MCP tools are available for ad group management:
| Tool | Description |
|------|-------------|
| `get_ad_groups` | Get ad groups for a Google Ads account with optional filtering |
| `get_ad_groups_json` | Get ad groups in JSON format for visualization |
| `get_ad_group_performance` | Get performance metrics for a specific ad group |
| `get_ad_group_performance_json` | Get ad group performance metrics in JSON format for visualization |
| `create_ad_group` | Create a new ad group within a campaign |
| `update_ad_group` | Update an existing ad group's attributes |
## Keyword Management Tools
The following MCP tools are available for keyword management:
| Tool | Description |
|------|-------------|
| `get_keywords` | Get keywords for a Google Ads account with optional filtering |
| `get_keywords_json` | Get keywords in JSON format for visualization |
| `add_keywords` | Add a new keyword to an ad group |
| `update_keyword` | Update an existing keyword's status or bid |
| `remove_keywords` | Remove keywords from an ad group |
| `get_search_terms_report` | View search terms that triggered your ads |
| `get_search_terms_report_json` | Get search terms in JSON format for visualization |
| `analyze_search_terms` | Get insights about your search terms performance |
| `analyze_search_terms_json` | Get insights about your search terms performance in JSON format for visualization |
Example usage in Claude:
- "List all keywords in my 123-456-7890 account"
- "Show me search terms for campaign 12345678"
- "Add a broad match keyword 'summer shoes' to ad group 87654321"
- "Pause keyword 12345"
- "Analyze search terms in my account to find opportunities"
## Budget Management Tools
The following MCP tools are available for budget management:
| Tool | Description |
|------|-------------|
| `get_budgets` | Get campaign budgets with performance metrics and utilization |
| `get_budgets_json` | Get budget information in JSON format with visualizations |
| `analyze_budgets` | Analyze budget performance with insights and recommendations |
| `update_budget` | Update a budget's amount or delivery method (placeholder implementation) |
Example usage in Claude:
- "Show me all campaign budgets in my account"
- "Analyze budget utilization across my campaigns"
- "Visualize budget distribution by campaign"
- "Which budgets are being depleted too quickly?"
- "What are the budget recommendations for my account?"
- "Update the daily budget for campaign 12345678 to $100"
Example response for `get_budgets`:
```
Budget Report (3 budgets found)
ID: 123456789
Name: Search Campaign Budget
Amount: 50.00 USD (Daily)
Status: ENABLED
Utilization: 65.4%
Associated Campaigns: Brand Search, Generic Search
ID: 987654321
Name: Display Campaign Budget
Amount: 100.00 USD (Daily)
Status: ENABLED
Utilization: 94.2%
Associated Campaigns: Retargeting Display, Prospecting Display
ID: 456789123
Name: Shopping Campaign Budget
Amount: 75.00 USD (Daily)
Status: ENABLED
Utilization: 32.1%
Associated Campaigns: Product Shopping
```
Example response for `analyze_budgets`:
```
Budget Analysis Report
Budget: Display Campaign Budget (ID: 987654321)
Amount: 100.00 USD (Daily)
Utilization: 94.2%
Associated Campaigns: Retargeting Display, Prospecting Display
Insights:
- High Utilization (94.2%)
- Budget nearly depleted before day end
Recommendations:
- Consider increasing budget to 120.00 USD
- Or reduce bid adjustments during peak hours
Budget: Search Campaign Budget (ID: 123456789)
Amount: 50.00 USD (Daily)
Utilization: 65.4%
Associated Campaigns: Brand Search, Generic Search
Insights:
- Moderate Utilization (65.4%)
- Performing well within budget constraints
Recommendations:
- Monitor performance
- Consider reallocating budget to high-performing campaigns
Budget: Shopping Campaign Budget (ID: 456789123)
Amount: 75.00 USD (Daily)
Utilization: 32.1%
Associated Campaigns: Product Shopping
Insights:
- Low Utilization (32.1%)
- Budget consistently underutilized
Recommendations:
- Consider reducing budget to 50.00 USD
- Or reallocate budget to higher-performing campaigns
```
## Enhanced Visualization Tools
The following MCP tools provide rich data visualization and advanced analysis capabilities:
### Dashboard Visualization Tools
| Tool | Description |
|------|-------------|
| `get_account_dashboard_json` | Get a comprehensive account dashboard with KPIs, trends, and top performers |
| `get_campaign_dashboard_json` | Get a detailed dashboard for a specific campaign |
Example usage in Claude:
- "Show me an account dashboard for the last 30 days"
- "Create a dashboard for campaign 12345678"
- "Compare my account performance to the previous month"
- "Show a dashboard with all my campaign KPIs"
The account dashboard includes:
- KPI cards with period-over-period comparisons
- Performance trend charts for key metrics
- Top campaigns and ad groups by performance
- Cost distribution visualizations
The campaign dashboard includes:
- Campaign overview and details
- KPI cards with period-over-period comparisons
- Performance trend charts
- Ad group breakdown
- Device performance distribution
- Top keywords
### Comparison Visualization Tools
| Tool | Description |
|------|-------------|
| `get_performance_comparison_json` | Compare metrics between multiple entities (campaigns, ad groups) |
Example usage in Claude:
- "Compare campaigns 123456 and 789012"
- "Show me a side-by-side comparison of my top 3 campaigns"
- "Compare clicks and conversions across my search campaigns"
- "Which campaign has better performance, 123456 or 789012?"
The comparison visualizations include:
- Side-by-side bar charts for key metrics
- Detailed comparison tables with absolute and relative differences
- Radar charts for multi-metric comparisons (when 3+ metrics are selected)
### Breakdown Visualization Tools
| Tool | Description |
|------|-------------|
| `get_performance_breakdown_json` | Break down performance by various dimensions (device, geo, time, etc.) |
Example usage in Claude:
- "Break down campaign 123456 performance by device"
- "Show my account performance by day of week"
- "What's the geographic distribution of my ad spend?"
- "Break down campaign 123456 by device and time"
The breakdown visualizations include:
- Stacked bar charts for categorical dimensions (device, network, geo)
- Line charts for time dimensions (day, week, month)
- Treemap charts for hierarchical data visualization
- Detailed tables with segment metrics and percentage contribution
Example response for `get_account_dashboard_json`:
```json
{
"date_range": "LAST 30 DAYS",
"comparison_range": "PREVIOUS 30 DAYS",
"visualization": {
"charts": [
{
"type": "line",
"title": "Cost Trend",
"data": { ... }
},
{
"type": "line",
"title": "Engagement Trend",
"data": { ... }
},
{
"type": "doughnut",
"title": "Cost Distribution by Campaign",
"data": { ... }
}
],
"tables": [
{
"title": "Account Performance",
"type": "kpi_cards",
"cards": [ ... ]
},
{
"title": "Top Campaigns by Spend",
"headers": ["Campaign", "Budget", "Status", "Cost"],
"rows": [ ... ]
}
]
}
}
```
## Automated Insights Tools
The following MCP tools provide automated insights and recommendations based on account data analysis:
### Anomaly Detection Tools
| Tool | Description |
|------|-------------|
| `get_performance_anomalies` | Detect significant changes in performance metrics across campaigns, ad groups, or keywords |
| `get_performance_anomalies_json` | Get performance anomaly data in JSON format with visualizations |
Example usage in Claude:
- "Find performance anomalies in my account for the last 7 days"
- "Detect unusual changes in my campaign performance"
- "Which metrics have significant changes compared to last week?"
- "Analyze my account for performance issues"
The performance anomaly detection includes:
- Statistical analysis to identify outliers in key metrics
- Comparison against previous periods
- Severity scoring for detected anomalies
- Visualization of anomalies by metric and entity
- Ranked list of most significant changes
### Optimization Suggestion Tools
| Tool | Description |
|------|-------------|
| `get_optimization_suggestions` | Generate actionable optimization suggestions for an account |
| `get_optimization_suggestions_json` | Get optimization suggestions in JSON format with visualizations |
Example usage in Claude:
- "What optimizations should I make to my account?"
- "Suggest ways to improve my campaign performance"
- "Give me optimization ideas for my keywords"
- "How can I better allocate my budget?"
The optimization suggestions include:
- Bid management recommendations (increase/decrease bids)
- Budget allocation recommendations
- Negative keyword suggestions
- Ad copy improvement recommendations
- Account structure suggestions
### Opportunity Discovery Tools
| Tool | Description |
|------|-------------|
| `get_opportunities` | Discover growth opportunities in a Google Ads account |
| `get_opportunities_json` | Get growth opportunities in JSON format with visualizations |
Example usage in Claude:
- "Find growth opportunities in my account"
- "What search terms should I add as keywords?"
- "Where can I expand my advertising reach?"
- "Discover new keyword opportunities based on search terms"
The opportunity discovery includes:
- Keyword expansion suggestions based on high-performing search terms
- Ad variation recommendations for top ad groups
- Account structure optimization opportunities
- Prioritized list of actions by potential impact
### Integrated Insights Tool
| Tool | Description |
|------|-------------|
| `get_account_insights_json` | Get comprehensive account insights combining anomalies, suggestions, and opportunities |
Example usage in Claude:
- "Give me a complete analysis of my account"
- "What's the overall health of my Google Ads campaigns?"
- "Show me everything I should know about my account"
- "Generate a comprehensive insights report"
The integrated insights dashboard includes:
- Summary statistics and key findings
- Tabs for anomalies, suggestions, and opportunities
- Prioritized recommendations
- Interactive visualizations for each insight type
Example response for `get_performance_anomalies`:
```
Google Ads Performance Anomalies
Account ID: 123-456-7890
Entity Type: CAMPAIGN
Date Range: 2025-05-15 to 2025-05-22
Comparison Period: PREVIOUS_PERIOD
Total Anomalies Detected: 3
Entity Name Metric Current Previous Change Severity
----------------------------------------------------------------------------------------------
Search - Brand Terms clicks 250 180 +38.9% MEDIUM
Display - Retargeting cost $452.18 $325.45 +38.9% MEDIUM
Shopping - Products impressions 5,420 8,750 -38.1% HIGH
```
Example response for `get_optimization_suggestions`:
```
Google Ads Optimization Suggestions
Account ID: 123-456-7890
Date Range: 2025-04-22 to 2025-05-22
Total Suggestions: 5
Budget Allocation Suggestions (2)
--------------------------------------------------
HIGH: Increase budget for campaign 'Search - Generic Terms' which is limited by budget (currently at 98% utilization)
Action: Consider increasing the budget by 10-20% to allow for growth
MEDIUM: Campaign 'Display - Awareness' is significantly under budget (only 45% utilized)
Action: Consider decreasing the budget to improve overall account efficiency, or reallocate to better-performing campaigns
Bid Management Suggestions (2)
--------------------------------------------------
HIGH: Keyword 'summer shoes sale' has strong conversion rate (8.5%) at $12.50 per conversion
Action: Increase bid by 10-15% to capture more traffic for this high-performing keyword
MEDIUM: Keyword 'generic footwear' has high CPC ($2.75) with no conversions after 45 clicks
Action: Decrease bid by 25-30% or pause if performance doesn't improve
Negative Keywords Suggestions (1)
--------------------------------------------------
MEDIUM: Add 'free shoes' as a negative keyword - spent $45.25 with no conversions
Action: Add 'free shoes' as a negative exact match keyword to prevent further wasted spend
```
Example response for `get_opportunities`:
```
Google Ads Growth Opportunities
Account ID: 123-456-7890
Date Range: 2025-04-22 to 2025-05-22
Total Opportunities: 4
Keyword Expansion Opportunities (2)
--------------------------------------------------
HIGH: Add 'summer sandals women' as a keyword in ad group 'Women's Footwear'
Action: Add 'summer sandals women' as an exact match keyword to better control bidding and relevance
MEDIUM: Add 'designer shoes discount' as a keyword in ad group 'Designer Collection'
Action: Add 'designer shoes discount' as an exact match keyword to better control bidding and relevance
Ad Variation Opportunities (2)
--------------------------------------------------
MEDIUM: Create additional ad variations for ad group 'Men's Dress Shoes'
Action: Add at least one more responsive search ad to test different headlines and descriptions
MEDIUM: Create additional ad variations for ad group 'Women's Athletic Shoes'
Action: Add at least one more responsive search ad to test different headlines and descriptions
```
## Deployment
This repository includes Kubernetes manifests for deployment:
- `kubernetes/dev/` - Development environment deployment
- `kubernetes/test/` - Test environment deployment
- `kubernetes/prod/` - Production environment deployment
CI/CD pipelines are configured using GitHub Actions for automated testing, building, and deployment.
## Security
- All credentials are stored in Kubernetes secrets or environment variables, never in code
- The server uses proper authentication for API access
- Rate limiting is enabled in production environments
- Container security best practices are followed
## Testing
Run the test suite:
```
pytest
```
Run specific tests:
```
# Test Ad Group functionality
python -m google_ads_mcp_server.tests.unit.test_ad_groups
# Test Keyword functionality
python -m google_ads_mcp_server.tests.unit.test_keywords
# Test Budget functionality
python -m google_ads_mcp_server.tests.unit.test_budgets
# Test MCP Tools
python -m google_ads_mcp_server.tests.unit.test_tools
# Test Visualization formatters
python -m google_ads_mcp_server.tests.unit.test_visualizations
# Test Budget Visualizations
python -m google_ads_mcp_server.tests.unit.test_budget_visualizations
```
## Contributing
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/my-feature`
3. Commit your changes: `git commit -am 'Add new feature'`
4. Push to the branch: `git push origin feature/my-feature`
5. Submit a pull request
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Acknowledgements
- Google Ads API team for their documentation and support
- Anthropic for Claude and the Model Context Protocol This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues