Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.
Connect Runs on your machine
claude mcp add google-ads-mcp -e GOOGLE_ADS_DEVELOPER_TOKEN=<GOOGLE_ADS_DEVELOPER_TOKEN> -e GOOGLE_ADS_CLIENT_ID=<GOOGLE_ADS_CLIENT_ID> -e GOOGLE_ADS_CLIENT_SECRET=<GOOGLE_ADS_CLIENT_SECRET> -e GOOGLE_ADS_LOGIN_CUSTOMER_ID=<GOOGLE_ADS_LOGIN_CUSTOMER_ID> -e GOOGLE_ADS_REDIRECT_URI=<GOOGLE_ADS_REDIRECT_URI> -e GOOGLE_ADS_TOKEN_PATH=<GOOGLE_ADS_TOKEN_PATH> -e GOOGLE_ADS_PRIVACY_MODE=<GOOGLE_ADS_PRIVACY_MODE> -e GOOGLE_ADS_ALLOW_MUTATIONS=<GOOGLE_ADS_ALLOW_MUTATIONS> -e GOOGLE_ADS_CACHE=<GOOGLE_ADS_CACHE> -e GOOGLE_ADS_CACHE_PATH=<GOOGLE_ADS_CACHE_PATH> -e GOOGLE_ADS_CACHE_TTL_SECONDS=<GOOGLE_ADS_CACHE_TTL_SECONDS> -e GOOGLE_ADS_NO_RETRY=<GOOGLE_ADS_NO_RETRY> -- npx -y [email protected]
{
"mcpServers": {
"google-ads-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<GOOGLE_ADS_NO_RETRY>"
}
}
}
}
{
"mcpServers": {
"google-ads-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<GOOGLE_ADS_NO_RETRY>"
}
}
}
}
{
"servers": {
"google-ads-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"GOOGLE_ADS_DEVELOPER_TOKEN": "<GOOGLE_ADS_DEVELOPER_TOKEN>",
"GOOGLE_ADS_CLIENT_ID": "<GOOGLE_ADS_CLIENT_ID>",
"GOOGLE_ADS_CLIENT_SECRET": "<GOOGLE_ADS_CLIENT_SECRET>",
"GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
"GOOGLE_ADS_REDIRECT_URI": "<GOOGLE_ADS_REDIRECT_URI>",
"GOOGLE_ADS_TOKEN_PATH": "<GOOGLE_ADS_TOKEN_PATH>",
"GOOGLE_ADS_PRIVACY_MODE": "<GOOGLE_ADS_PRIVACY_MODE>",
"GOOGLE_ADS_ALLOW_MUTATIONS": "<GOOGLE_ADS_ALLOW_MUTATIONS>",
"GOOGLE_ADS_CACHE": "<GOOGLE_ADS_CACHE>",
"GOOGLE_ADS_CACHE_PATH": "<GOOGLE_ADS_CACHE_PATH>",
"GOOGLE_ADS_CACHE_TTL_SECONDS": "<GOOGLE_ADS_CACHE_TTL_SECONDS>",
"GOOGLE_ADS_NO_RETRY": "<GOOGLE_ADS_NO_RETRY>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
GOOGLE_ADS_DEVELOPER_TOKENOptional, secret | Google Ads API developer token from your Google Ads Manager account. Required. |
GOOGLE_ADS_CLIENT_IDOptional | Google OAuth2 client ID. Required. |
GOOGLE_ADS_CLIENT_SECRETOptional, secret | Google OAuth2 client secret. Prefer storing in ~/.google-ads-mcp/config.json via setup. |
GOOGLE_ADS_LOGIN_CUSTOMER_IDOptional | Manager (MCC) customer ID used as login-customer-id header, no dashes (e.g., 1234567890). Optional but required for multi-account access. |
GOOGLE_ADS_REDIRECT_URIOptional | OAuth redirect URI. Defaults to http://127.0.0.1:3000/callback. |
GOOGLE_ADS_TOKEN_PATHOptional | Optional local path for OAuth tokens. Defaults to ~/.google-ads-mcp/tokens.json (0600). |
GOOGLE_ADS_PRIVACY_MODEOptional | Optional payload mode: summary, structured, or raw. Defaults to structured. raw returns full Google Ads API payloads. |
GOOGLE_ADS_ALLOW_MUTATIONSOptional | Set 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 | Optional SQLite cache toggle. Set to true or sqlite to enable. |
GOOGLE_ADS_CACHE_PATHOptional | Optional local SQLite cache path. Defaults to ~/.google-ads-mcp/cache.sqlite. |
GOOGLE_ADS_CACHE_TTL_SECONDSOptional | Optional cache TTL in seconds. Defaults to 60. Set to 0 to keep entries indefinitely (entries are still overwritten on each hit). |
GOOGLE_ADS_NO_RETRYOptional | Set to true to disable the HTTP retry middleware. Default false. |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 3 Jul 2026 |
| Last updated | 3 Jul 2026 |
| Registry name | io.github.davidmosiah/google-ads-mcp |
More marketing and seo servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
