Provides full access to the Google Ads API v20. Requires OAuth2 or Service Account credentials for configuration.
A comprehensive Model Context Protocol (MCP) server that provides full access to Google Ads API v20 functionality. This server enables AI assistants to perform any Google Ads operation through natural language commands.
# Install with pip
pip install -e .
# Or install dependencies directly
pip install mcp google-ads pydantic httpx tenacity python-dotenv beautifulsoup4 structlog
Create a .env
file or set these environment variables:
# OAuth2 Authentication
GOOGLE_ADS_CLIENT_ID=your_client_id
GOOGLE_ADS_CLIENT_SECRET=your_client_secret
GOOGLE_ADS_REFRESH_TOKEN=your_refresh_token
# OR Service Account Authentication
GOOGLE_ADS_SERVICE_ACCOUNT_PATH=/path/to/service-account.json
GOOGLE_ADS_IMPERSONATED_EMAIL=user@example.com # Optional
# Required for all auth methods
GOOGLE_ADS_DEVELOPER_TOKEN=your_developer_token
GOOGLE_ADS_LOGIN_CUSTOMER_ID=1234567890 # Manager account ID if applicable
Alternatively, create a config file at ~/.config/google-ads-mcp/config.json
:
{
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"refresh_token": "your_refresh_token",
"developer_token": "your_developer_token",
"login_customer_id": "1234567890"
}
Add to your Claude Desktop config (~/.config/claude/mcp.json
):
{
"mcpServers": {
"google-ads": {
"command": "python",
"args": ["-m", "google-ads-mcp"],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "your_token",
"GOOGLE_ADS_CLIENT_ID": "your_client_id",
"GOOGLE_ADS_CLIENT_SECRET": "your_secret",
"GOOGLE_ADS_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
# List all accounts
Use the list_accounts tool
# Create a campaign
Use create_campaign with customer_id="1234567890", name="Summer Sale 2025",
budget_amount=100.0, campaign_type="SEARCH"
# Get campaign performance
Use get_campaign_performance with customer_id="1234567890", date_range="LAST_30_DAYS"
# Run custom GAQL query
Use run_gaql_query with query:
SELECT campaign.name, metrics.clicks, metrics.conversions
FROM campaign
WHERE metrics.impressions > 1000
AND segments.date DURING LAST_7_DAYS
ORDER BY metrics.clicks DESC
# Add negative keywords to Performance Max campaign
Use add_negative_keywords with customer_id="1234567890",
campaign_id="123", keywords=["cheap", "discount", "free"]
The server provides detailed error information:
pytest tests/
_register_tools()
in tools.py
# Run with debug logging
export LOG_LEVEL=DEBUG
python -m google-ads-mcp
This server is built for Google Ads API v20 (released June 2025) and includes:
MIT License - See LICENSE file for details
Contributions are welcome! Please:
For issues and questions:
A read-only server for querying live Workday data using LLMs, powered by the CData JDBC Driver.
Core AWS MCP server providing prompt understanding and server management capabilities.
Deploy a remote MCP server on Cloudflare Workers with OAuth login support, using Cloudflare KV for data storage.
List and analyze Netbird network peers, groups, policies, and more.
Server for using HuggingFace Spaces, supporting Images, Audio, Text and more. Claude Desktop mode for ease-of-use.
Interact with Stripe API
Integrates with the Slide API for device and infrastructure management.
An MCP server for interacting with the Kayzen Analytics API, requiring credentials configured via environment variables.
AniList MCP server for accessing AniList API data
A remote MCP server deployable on Cloudflare Workers without authentication.