Skip to main content
Glama
Google Ads MCP Server

Google Ads MCP Server

by Jordan1o97

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FASTMCP_HOSTNoSet to 0.0.0.0 to allow FastMCP to accept connections from all IP addresses, for example on Cloud Run.
GOOGLE_PROJECT_IDNoGoogle Cloud project ID.
GOOGLE_CLOUD_PROJECTNoGoogle Cloud project ID mentioned as a recommended alternative to GOOGLE_PROJECT_ID.
GOOGLE_ADS_MCP_BASE_URLNoBase URL where the server is accessible.http://localhost:8080
GOOGLE_ADS_MCP_STORAGE_PATHNoDirectory path for filetree persistent storage.
GOOGLE_ADS_MCP_STORAGE_TYPENoStorage backend for OAuth state. Supported values are filetree, redis, firestore, or memory.
GOOGLE_ADS_MCP_TOOLS_CONFIGNoExplicit path to a tools_config.yaml file. If missing or invalid, the server fails to start.
GOOGLE_ADS_LOGIN_CUSTOMER_IDNoDefault manager account customer ID for Google Ads API calls. A per-call login_customer_id parameter takes precedence.
GOOGLE_ADS_MCP_JWT_SIGNING_KEYNoSecret key used to sign FastMCP JWT tokens across multiple server instances or deployments.
GOOGLE_ADS_MCP_OAUTH_CLIENT_IDNoGoogle Cloud OAuth 2.0 Client ID used to enable the FastMCP OAuth proxy.
GOOGLE_APPLICATION_CREDENTIALSNoPath to the Google Cloud Application Default Credentials JSON file. Credentials must include the https://www.googleapis.com/auth/adwords scope.
GOOGLE_ADS_MCP_STORAGE_REDIS_URLNoRedis URL for redis persistent storage.
GOOGLE_ADS_MCP_OAUTH_CLIENT_SECRETNoGoogle Cloud OAuth 2.0 Client Secret used to enable the FastMCP OAuth proxy.
GOOGLE_ADS_MCP_STORAGE_ENCRYPTION_KEYNoEncryption key for stored OAuth tokens.
GOOGLE_ADS_MCP_STORAGE_FIRESTORE_PROJECTNoGoogle Cloud project for firestore persistent storage. Defaults to the project inferred from Application Default Credentials. Setting it selects the firestore backend even if GOOGLE_ADS_MCP_STORAGE_TYPE is unset.
GOOGLE_ADS_MCP_STORAGE_DISABLE_ENCRYPTIONNoSet to true to disable token encryption.
GOOGLE_ADS_MCP_STORAGE_FIRESTORE_DATABASENoFirestore database name for firestore persistent storage.(default)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
customers_list_accessible_customersA

Returns ids of customers directly accessible by the user authenticating the call.

Use this tool first to discover available customer IDs if the user hasn't provided one. Most other tools require a valid customer ID as input.

assets_create_assetA

Creates a new Google Ads asset under the specified customer account.

Required & Optional parameters per asset_type:

  • TEXT: Requires text_asset_text.

  • IMAGE: Requires either image_asset_path (absolute local path, local stdio mode only) OR image_asset_data (base64 encoded string). If image_asset_data is provided, image_asset_mime_type is also required (e.g. 'IMAGE_PNG', 'IMAGE_JPEG', 'IMAGE_GIF').

  • YOUTUBE_VIDEO: Requires youtube_video_id.

  • SITELINK: Requires sitelink_link_text and root-level final_urls. Accepts optional sitelink_description1 and sitelink_description2.

  • CALLOUT: Requires callout_text.

  • STRUCTURED_SNIPPET: Requires structured_snippet_header and structured_snippet_values.

Root-level URL and tracking configurations (optional except where noted):

  • name: Optional display name for the asset.

  • final_urls: Required for SITELINK. A list of URLs.

  • final_mobile_urls: List of mobile-specific destination URLs.

  • tracking_url_template: Template for constructing a tracking URL.

  • final_url_suffix: Suffix appended to the final URL.

  • url_custom_parameters: Custom parameters represented as a list of dicts (with 'key' and 'value').

For any other asset type, provide extra_params as a dict representing the sub-asset message fields.

Propose & Confirm Workflow (validate_only and checksum):

  1. Call create_asset with validate_only=True (the default). After validation passes, the tool returns structured change_items and a checksum without committing changes.

  2. Present the change_items to the user and wait for explicit user approval.

  3. Only after user confirmation, call create_asset with validate_only=False along with the exact same parameters and the checksum returned by the previous validate_only=True call.

assets_upload_video_assetA

Uploads a video to YouTube natively via the Google Ads API.

Once a video has been uploaded, it can be used to create a video asset. This operation executes via a FastMCP background task to gracefully handle large file uploads (supported in local stdio mode only). Once the upload finishes successfully, using the search tool and querying the you_tube_video_upload resource matching the returned ID allows you to retrieve the YouTube Video ID and processing status.

Propose & Confirm Workflow (validate_only and checksum):

  1. Call upload_video_asset with validate_only=True (the default). After validation passes, the tool returns structured change_items and a checksum without uploading the video.

  2. Present the change_items to the user and wait for explicit user approval.

  3. Only after user confirmation, call upload_video_asset with validate_only=False along with the exact same parameters and the checksum returned by the previous validate_only=True call.

metadata_get_resource_metadataA

Retrieves the selectable, filterable, and sortable fields for a specific Google Ads resource, including compatible metrics and segments.

Use this tool to find out which fields you can select, filter by, or sort by when querying a specific resource (e.g., 'campaign', 'ad_group'). This tool also returns metrics and segments that can be selected with the resource. Their names start with 'metrics.' and 'segments.' respectively.

Do not guess fields, you MUST use this tool to discover them before constructing a query for the search tool.

The responses of this tool should be cached, as they don't change frequently.

labels_manage_labelsA

Manages Label resources. Supports CREATE, UPDATE, and REMOVE operations.

Propose & Confirm Workflow (validate_only and checksum):

  1. Call manage_labels with validate_only=True (the default). After validation passes, the tool returns structured change_items and a checksum without committing changes.

  2. Present the change_items to the user and wait for explicit user approval.

  3. Only after user confirmation, call manage_labels with validate_only=False along with the exact same parameters and the checksum returned by the previous validate_only=True call.

labels_manage_label_associationsA

Manages associations between labels and Campaign, Customer, Ad Group, or Ad Group Criterion.

Supports CREATE and REMOVE operations.

Propose & Confirm Workflow (validate_only and checksum):

  1. Call manage_label_associations with validate_only=True (the default). After validation passes, the tool returns structured change_items and a checksum without committing changes.

  2. Present the change_items to the user and wait for explicit user approval.

  3. Only after user confirmation, call manage_label_associations with validate_only=False along with the exact same parameters and the checksum returned by the previous validate_only=True call.

search_searchC

Fetches data from the Google Ads API using the search method

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_discovery_documentRetrieve the Google Ads API discovery document. Provides the discovery document for the Google Ads API, which describes the API surface, including resources, methods, and schemas. Use this resource to get a high-level overview of the API surface or to find available resources. However, for finding specific fields, you MUST use the `get_resource_metadata` tool instead, as it provides more targeted and up-to-date information for queries. Returns: str: The discovery document in JSON format.
get_metricsRetrieve the Google Ads API metrics documentation. Provides the official documentation for metrics in the Google Ads API, listing all available metrics that can be queried to analyze performance data. Use this resource to identify which metrics are available and how they are calculated. Returns: str: The metrics documentation in HTML format.
get_release_notesRetrieve the Google Ads API release notes. Provides the official release notes for the Google Ads API, detailing new features, changes, deprecations, and bug fixes across all API versions. Use this resource to check for breaking changes, determine if a specific feature is supported in a given API version, or troubleshoot issues by consulting recent API updates. Returns: str: The release notes in HTML format.
get_segmentsRetrieve the Google Ads API segments documentation. Provides the official documentation for segments in the Google Ads API, detailing the available segments that can be used in GAQL queries to partition metrics. Use this resource to understand which segments can be used with specific resources and metrics. Returns: str: The segments documentation in HTML format.

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation4/5

Each tool targets a distinct area: customer discovery, asset creation, video upload, metadata introspection, labels, label associations, and generic search. The only mild overlap is between assets_create_asset (which can create YOUTUBE_VIDEO assets) and assets_upload_video_asset, but the descriptions make the upload-then-create pipeline clear.

Naming Consistency4/5

Names follow a predictable namespace_verb_object pattern (customers_list_..., assets_create_..., labels_manage_..., metadata_get_...). The namespace prefix (resource domain) rather than a pure verb_noun pattern is consistent across all tools; 'search_search' is slightly awkward but still readable and predictable.

Tool Count4/5

Seven tools is a lean, well-scoped set where each has a clear distinct role, with generic search and metadata tools providing breadth without tool sprawl. It is on the thin side for the enormous Google Ads API surface, but no tool feels redundant.

Completeness3/5

Read access is broad via search_search plus metadata introspection, and writes cover assets, video uploads, and labels. However, core mutations like campaign/ad group creation, budget or bidding updates, and keyword management are absent, leaving common Google Ads workflows as dead ends.

Maintenance

ActivityActive
ResponsivenessNo recent community issues