io.github.davidmosiah/google-ads-mcp MCP Server
io.github.davidmosiah/google-ads-mcp
What is the io.github.davidmosiah/google-ads-mcp MCP server?
Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.
How to install io.github.davidmosiah/google-ads-mcp
Copy-paste configuration for popular MCP clients.
GOOGLE_ADS_DEVELOPER_TOKENsecretGoogle Ads API developer token from your Google Ads Manager account. Required.
GOOGLE_ADS_CLIENT_IDGoogle OAuth2 client ID. Required.
GOOGLE_ADS_CLIENT_SECRETsecretGoogle OAuth2 client secret. Prefer storing in ~/.google-ads-mcp/config.json via setup.
GOOGLE_ADS_LOGIN_CUSTOMER_IDManager (MCC) customer ID used as login-customer-id header, no dashes (e.g., 1234567890). Optional but required for multi-account access.
GOOGLE_ADS_REDIRECT_URIOAuth redirect URI. Defaults to http://127.0.0.1:3000/callback.
GOOGLE_ADS_TOKEN_PATHOptional local path for OAuth tokens. Defaults to ~/.google-ads-mcp/tokens.json (0600).
GOOGLE_ADS_PRIVACY_MODEOptional payload mode: summary, structured, or raw. Defaults to structured. raw returns full Google Ads API payloads.
GOOGLE_ADS_ALLOW_MUTATIONSSet to true to enable write tools (pause/resume keywords/campaigns, set bids, set budgets). Default false (read-only). Agents changing real ad spend is high-stakes; review every change.
GOOGLE_ADS_CACHEOptional SQLite cache toggle. Set to true or sqlite to enable.
GOOGLE_ADS_CACHE_PATHOptional local SQLite cache path. Defaults to ~/.google-ads-mcp/cache.sqlite.
GOOGLE_ADS_CACHE_TTL_SECONDSOptional cache TTL in seconds. Defaults to 60. Set to 0 to keep entries indefinitely (entries are still overwritten on each hit).
GOOGLE_ADS_NO_RETRYSet to true to disable the HTTP retry middleware. Default false.
{
"mcpServers": {
"google-ads-mcp": {
"command": "npx",
"args": [
"-y",
"google-ads-mcp-unofficial"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<YOUR_GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<YOUR_GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<YOUR_GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<YOUR_GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<YOUR_GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<YOUR_GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<YOUR_GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<YOUR_GOOGLE_ADS_NO_RETRY>"
}
}
}
}{
"mcpServers": {
"google-ads-mcp": {
"command": "npx",
"args": [
"-y",
"google-ads-mcp-unofficial"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<YOUR_GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<YOUR_GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<YOUR_GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<YOUR_GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<YOUR_GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<YOUR_GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<YOUR_GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<YOUR_GOOGLE_ADS_NO_RETRY>"
}
}
}
}{
"mcpServers": {
"google-ads-mcp": {
"command": "npx",
"args": [
"-y",
"google-ads-mcp-unofficial"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<YOUR_GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<YOUR_GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<YOUR_GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<YOUR_GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<YOUR_GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<YOUR_GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<YOUR_GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<YOUR_GOOGLE_ADS_NO_RETRY>"
}
}
}
}{
"servers": {
"google-ads-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"google-ads-mcp-unofficial"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<YOUR_GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<YOUR_GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<YOUR_GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<YOUR_GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<YOUR_GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<YOUR_GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<YOUR_GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<YOUR_GOOGLE_ADS_NO_RETRY>"
}
}
}
}claude mcp add google-ads-mcp --env GOOGLE_ADS_DEVELOPER_TOKEN=<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN> --env GOOGLE_ADS_CLIENT_ID=<YOUR_GOOGLE_ADS_CLIENT_ID> --env GOOGLE_ADS_CLIENT_SECRET=<YOUR_GOOGLE_ADS_CLIENT_SECRET> --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID> --env GOOGLE_ADS_REDIRECT_URI=<YOUR_GOOGLE_ADS_REDIRECT_URI> --env GOOGLE_ADS_TOKEN_PATH=<YOUR_GOOGLE_ADS_TOKEN_PATH> --env GOOGLE_ADS_PRIVACY_MODE=<YOUR_GOOGLE_ADS_PRIVACY_MODE> --env GOOGLE_ADS_ALLOW_MUTATIONS=<YOUR_GOOGLE_ADS_ALLOW_MUTATIONS> --env GOOGLE_ADS_CACHE=<YOUR_GOOGLE_ADS_CACHE> --env GOOGLE_ADS_CACHE_PATH=<YOUR_GOOGLE_ADS_CACHE_PATH> --env GOOGLE_ADS_CACHE_TTL_SECONDS=<YOUR_GOOGLE_ADS_CACHE_TTL_SECONDS> --env GOOGLE_ADS_NO_RETRY=<YOUR_GOOGLE_ADS_NO_RETRY> -- npx -y google-ads-mcp-unofficialRelated MCP servers
Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents
Local-first nutrition MCP for AI agents: food, barcode, photo, intake, hydration, goals.
Privacy-first, unofficial WHOOP MCP server for AI health, sleep, recovery, and performance agents.
Privacy-first unofficial Garmin Connect MCP for AI health, sleep, activity & recovery agents.
Unofficial Eight Sleep MCP server: read sleep trends, temperature, alarms; gated pod control.
Unofficial local-first MCP server for Samsung Health personal-data CSV/ZIP exports.