Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.
What it says
The record the registry holds
How you get it
There is no address to call. This one is a package you install and run yourself, wherever your assistant runs.
google-ads-mcp-unofficial · npm · 0.1.3
the recordCopied from the official MCP registry, exactly as it holds it.
{
"server": {
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.davidmosiah/google-ads-mcp",
"description": "Unofficial Google Ads MCP for campaigns, keywords, budgets, and gated mutations.",
"repository": {
"url": "https://github.com/davidmosiah/google-ads-mcp-unofficial",
"source": "github"
},
"version": "0.1.3",
"websiteUrl": "https://github.com/davidmosiah/google-ads-mcp-unofficial",
"packages": [
{
"registryType": "npm",
"identifier": "google-ads-mcp-unofficial",
"version": "0.1.3",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Google Ads API developer token from your Google Ads Manager account. Required.",
"format": "string",
"isSecret": true,
"name": "GOOGLE_ADS_DEVELOPER_TOKEN"
},
{
"description": "Google OAuth2 client ID. Required.",
"format": "string",
"name": "GOOGLE_ADS_CLIENT_ID"
},
{
"description": "Google OAuth2 client secret. Prefer storing in ~/.google-ads-mcp/config.json via setup.",
"format": "string",
"isSecret": true,
"name": "GOOGLE_ADS_CLIENT_SECRET"
},
{
"description": "Manager (MCC) customer ID used as login-customer-id header, no dashes (e.g., 1234567890). Optional but required for multi-account access.",
"format": "string",
"name": "GOOGLE_ADS_LOGIN_CUSTOMER_ID"
},
{
"description": "OAuth redirect URI. Defaults to http://127.0.0.1:3000/callback.",
"format": "string",
"name": "GOOGLE_ADS_REDIRECT_URI"
},
{
"description": "Optional local path for OAuth tokens. Defaults to ~/.google-ads-mcp/tokens.json (0600).",
"format": "string",
"name": "GOOGLE_ADS_TOKEN_PATH"
},
{
"description": "Optional payload mode: summary, structured, or raw. Defaults to structured. raw returns full Google Ads API payloads.",
"format": "string",
"name": "GOOGLE_ADS_PRIVACY_MODE"
},
{
"description": "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.",
"format": "string",
"name": "GOOGLE_ADS_ALLOW_MUTATIONS"
},
{
"description": "Optional SQLite cache toggle. Set to true or sqlite to enable.",
"format": "string",
"name": "GOOGLE_ADS_CACHE"
},
{
"description": "Optional local SQLite cache path. Defaults to ~/.google-ads-mcp/cache.sqlite.",
"format": "string",
"name": "GOOGLE_ADS_CACHE_PATH"
},
{
"description": "Optional cache TTL in seconds. Defaults to 60. Set to 0 to keep entries indefinitely (entries are still overwritten on each hit).",
"format": "string",
"name": "GOOGLE_ADS_CACHE_TTL_SECONDS"
},
{
"description": "Set to true to disable the HTTP retry middleware. Default false.",
"format": "string",
"name": "GOOGLE_ADS_NO_RETRY"
}
]
}
]
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"statusChangedAt": "2026-07-03T12:02:45.900412Z",
"publishedAt": "2026-07-03T12:02:45.900412Z",
"updatedAt": "2026-07-03T12:02:45.900412Z",
"isLatest": true
}
}
}
Make it installable
Draft an Agent Plugin from this
An MCP server is raw capability: some tools, wired to something. An Agent Plugin is the packaging that says what job it does, what it leaves behind and where it stops. The prompt below carries this record and asks for the packaging; your own assistant writes it, and nothing here is sent anywhere.
What this is
MCP server
application/mcp-server-record+jsonlocal · you run it yourselfversion 0.1.3last seen 2026-08-23
These are the publisher's own words, filed by them with the official MCP registry and mirrored here. This catalog did not read them from the publisher and has not run, called or installed anything.