Skip to main content
Glama
README_GITHUB.md4.86 kB
# Google Ads MCP Server A powerful Model Context Protocol (MCP) server for Google Ads API integration with Claude Desktop. Query, manage, and analyze your Google Ads campaigns directly from Claude. ## Features - **18 Comprehensive Methods** - Full Google Ads API coverage - Campaign management (list, analyze) - Ad groups, ads, and keywords - Extensions, audiences, and labels - Bidding strategies and performance metrics - Custom GAQL query support - **Token Efficient** - 98.7% reduction vs. individual tool interfaces - **Real-time Data** - Direct Google Ads API integration - **Multi-format Output** - JSON, CSV, and ASCII table support - **Full Pagination** - Handle large result sets seamlessly - **Production Ready** - Error handling, logging, and validation ## Quick Start ### 1. Install Dependencies ```bash pip install -r requirements.txt ``` ### 2. Configure Credentials Copy `.env` to `.env.local` and add your Google Ads API credentials: ```bash cp .env .env.local ``` Then edit `.env.local` with: ``` GOOGLE_ADS_DEVELOPER_TOKEN=your_token GOOGLE_ADS_LOGIN_CUSTOMER_ID=your_login_customer_id GOOGLE_ADS_CLIENT_ID=your_client_id GOOGLE_ADS_CLIENT_SECRET=your_secret GOOGLE_ADS_REFRESH_TOKEN=your_refresh_token ``` **Get credentials:** https://developers.google.com/google-ads/api/docs/client-libs/python/configuration ### 3. Add to Claude Desktop **macOS:** ```bash ~/Library/Application Support/Claude/claude_desktop_config.json ``` **Windows:** ``` %APPDATA%\Claude\claude_desktop_config.json ``` Add this configuration: ```json { "mcpServers": { "google-ads": { "command": "python", "args": ["/path/to/server.py"], "env": { "GOOGLE_ADS_DEVELOPER_TOKEN": "your_token", "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "your_login_customer_id", "GOOGLE_ADS_CLIENT_ID": "your_client_id", "GOOGLE_ADS_CLIENT_SECRET": "your_secret", "GOOGLE_ADS_REFRESH_TOKEN": "your_refresh_token" } } } } ``` ### 4. Restart Claude Desktop Quit and reopen Claude - the Google Ads server will be available. ## Usage Once running in Claude, try: ``` "List my campaigns" "What was yesterday's performance?" "Show me my top converting keywords" "Execute: SELECT campaign.name, metrics.clicks FROM campaign LIMIT 10" ``` ## Available Methods ### List Operations - `list_accounts` - List all ad accounts - `list_campaigns` - List all campaigns - `list_ad_groups` - List ad groups in a campaign - `list_ads` - List ads in an ad group - `list_keywords` - List keywords in an ad group - `list_extensions` - List ad extensions - `list_audiences` - List audiences - `list_labels` - List labels - `list_bidding_strategies` - List bidding strategies ### Query & Analytics - `execute_gaql` - Execute custom GAQL queries with pagination - `get_performance` - Get performance metrics at any level (account, campaign, ad group, ad) - `gaql_help` - Get GAQL syntax reference - `search_tools` - Search available tools ## Documentation - **[MAC_SETUP.md](MAC_SETUP.md)** - Mac-specific setup guide - **[QUICK_START.md](QUICK_START.md)** - Common prompts and examples - **[GAQL_REFERENCE.md](GAQL_REFERENCE.md)** - 20+ GAQL query examples - **[IMPLEMENTATION_SUMMARY.md](IMPLEMENTATION_SUMMARY.md)** - Architecture details - **[BEFORE_AND_AFTER.md](BEFORE_AND_AFTER.md)** - Design evolution ## Architecture This server implements the Model Context Protocol (MCP) standard with a unified `call_tool` interface, following [Anthropic's token efficiency best practices](https://www.anthropic.com/research/developing-constitutional-ai). **Why unified interface?** - Individual tools: ~150,000 tokens overhead - Unified `call_tool`: ~2,000 tokens overhead - **98.7% reduction in token usage** ## Security - ✅ Credentials stored in `.env` files (git-ignored) - ✅ No hardcoded secrets - ✅ Environment variable support - ✅ Production-ready error handling **Never commit `.env` files to version control.** ## Requirements - Python 3.8+ - Google Ads API credentials (free tier available) - Claude Desktop ## Troubleshooting **"DEVELOPER_TOKEN invalid"** - Verify all 5 credentials are correctly set in your `.env.local` file **"No campaigns found"** - This is normal - check if campaigns exist in your Google Ads account **"Command not found: python"** - Use full path or `python3` - update config accordingly ## Support - Google Ads API Docs: https://developers.google.com/google-ads/api - MCP Documentation: https://modelcontextprotocol.io - Issues: Create a GitHub issue ## License MIT License - see [LICENSE](LICENSE) file for details. ## Contributing Contributions welcome! Feel free to: - Add more GAQL examples - Improve error messages - Add additional query helpers - Test on different platforms --- **Made for Claude Desktop** | Built with MCP | Powered by Google Ads API

Latest Blog Posts

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/blievens89/MCPGoogleAds'

If you have feedback or need assistance with the MCP directory API, please join our Discord server