1,152
stars
363
forks
24
watchers
105
prs
41
issues
4
releases
0
discussions
README
Google Ads MCP Server This repo contains the source code for running an MCP server that interacts with the Google Ads API. Tools The server uses the Google Ads API to provide several Tools and Resources for use with LLMs and AI agents. Tools available - search: Retrieves information about the Google Ads account using GAQL. - get_resource_metadata: Retrieves metadata about a Google Ads API resource type, for example "campaign". This is useful to understand the structure of the data and what fields are available for querying. - list_accessible_customers: Returns IDs of customers directly accessible by the user authenticating the call. - create_asset: Creates Google Ads assets (TEXT, IMAGE, YOUTUBE_VIDEO, SITELINK, CALLOUT, STRUCTURED_SNIPPET, and other asset types via extra_params). Note: image_asset_path is supported in local stdio mode only; use base64 image_asset_data for remote HTTP deployments. - upload_video_asset: Uploads a local video file to YouTube via the Google Ads API using a background task so it can be referenced by video assets (supported in local stdio mode only). - manage_labels: Creates, updates, and removes account labels. - manage_label_associations: Creates and removes label associations on CAMPAIGN, CUSTOMER, AD_GROUP, and AD_GROUP_CRITERION resources. Propose & Confirm Safety Workflow (Mutate Tools) All write/mutate tools (create_asset, upload_video_asset, manage_labels, and manage_label_associations) enforce a two-step Propose & Confirm safety workflow: 1. Propose (validate_only=True, default): Validates the operation (including a Google Ads API validate_only dry run where supported) without committing changes, returning human-readable change_items and a cryptographic checksum bound to the customer ID and parameters. 2. Confirm (validate_only=False): Requires passing the exact same parameters and customer_id together with the checksum returned in step 1 after explicit user approval. Any missing or mismatched checksum is rejected before mutating the account. Configuring and Namespacing Tools The Google Ads MCP server uses tools_config.yaml to let you selectively enable or disable individual tools or tool categories (namespaces) and customize their namespace prefixes. A default tools_config.yaml with all tools enabled is bundled with the package, so the server works out of the box with no extra setup. For strictly read-only deployments, set labels: false and assets: false in your tools_config.yaml. To customize your installation, the server resolves the configuration in the following order: 1. An explicit path set via the GOOGLE_ADS_MCP_TOOLS_CONFIG environment variable. 2. A tools_config.yaml file in the current working directory. 3. The default tools_config.yaml bundled with the package. If an explicitly requested configuration file (via the environment variable) is missing, or any resolved file is invalid, the server raises an error and fails to start. Configuration Example: yaml namespaces: Option
Top issues
#100stdio: no non-interactive credential option survives Workspace session-control reauth (503 "Reauthentication is needed")1 comments · 2026-08-06#136Firestore storage: OAuth flow fails with HTTP 500 when a random key starts with `H_` or `S_`0 comments · 2026-10-24#118is it possible to publish docker images to docker hub or ghcr?0 comments · 2026-09-08#99Cloud Run deployment: invalid_token (401) on /mcp after successful OAuth0 comments · 2026-08-06
Latest release
v0.0.6 v0.0.6 2026-11-02What's Changed Implement asset and label management with propose-and-confirm flow by @Raibaz in https://github.com/googleads/google-ads-mcp/pull/139 Bump version number to 0.0.6 by @Raibaz in https://github.com/googleads/google-ads-mcp/pull/142 Full Changelog: https://github.com/googleads/google-ads-mcp/compare/v0.0.5...v0.0.6