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:
Interact with the Invertir Online (IOL) API to manage investments and access market data.
APISIX Model Context Protocol (MCP) server is used to bridge large language models (LLMs) with the APISIX Admin API, supporting querying and managing all resources in Apache APISIX.
Get up-to-date EC2 pricing information with one call. Fast. Powered by a pre-parsed AWS pricing catalogue.
A security-focused MCP server for performing safe operations on an Ubuntu system, featuring robust security controls and audit logging.
An MCP server for processing payments using stdio transport, configured via environment variables.
Provides comprehensive analytics for Solana wallets, including real-time portfolio insights and detailed DeFi activity tracking.
Exposes Check Point security management data for AI-powered automation and analysis.
An MCP server designed to run on Cloudflare Workers, featuring OAuth login support and Cloudflare KV integration for data storage.
Access Grafana resources like dashboards, datasources, Prometheus, Loki, and alerts.
An example of a remote MCP server deployable on Cloudflare Workers without authentication.