{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-google-ads","slug":"google-ads","name":"Google Ads","type":"mcp","url":"https://github.com/gomarble-ai/google-ads-mcp-server","page_url":"https://unfragile.ai/google-ads","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-google-ads__cap_0","uri":"capability://tool.use.integration.oauth.2.0.authenticated.google.ads.api.access.with.automatic.token.refresh","name":"oauth 2.0 authenticated google ads api access with automatic token refresh","description":"Implements a transparent OAuth 2.0 authentication layer that handles the complete Google authentication flow, including token acquisition, automatic refresh, and credential management without requiring manual intervention from users. The system stores OAuth credentials in a JSON configuration file and automatically refreshes tokens before expiration, eliminating the need for users to manually re-authenticate or manage API keys. Built on Google's authentication libraries with integration into the FastMCP framework for seamless MCP protocol compliance.","intents":["I want to connect my Google Ads account to Claude without manually managing API credentials","I need automatic token refresh so my integrations don't break due to expired credentials","I want to securely store and rotate Google Ads OAuth credentials in my local environment"],"best_for":["AI agent builders integrating Google Ads into Claude Desktop workflows","Teams building multi-account Google Ads management systems with automatic credential handling","Developers needing transparent OAuth without building custom authentication logic"],"limitations":["Requires initial manual OAuth flow setup through Google Cloud Console — cannot be fully automated on first run","Token refresh happens in-process only — no distributed token cache for multi-instance deployments","OAuth credentials stored as local JSON file — requires secure file system permissions and backup strategy"],"requires":["Python 3.10+","Google Cloud Platform account with OAuth 2.0 credentials downloaded as JSON","Google Ads API enabled in GCP project","Claude Desktop with MCP support","GOOGLE_ADS_DEVELOPER_TOKEN environment variable set","GOOGLE_ADS_OAUTH_CONFIG_PATH environment variable pointing to OAuth JSON file"],"input_types":["OAuth configuration JSON from Google Cloud Console","Environment variables (GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_OAUTH_CONFIG_PATH)"],"output_types":["Authenticated API client ready for Google Ads operations","Automatic token refresh without user intervention"],"categories":["tool-use-integration","authentication"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_1","uri":"capability://data.processing.analysis.multi.account.google.ads.enumeration.with.account.hierarchy.discovery","name":"multi-account google ads enumeration with account hierarchy discovery","description":"Provides a tool that lists all accessible Google Ads accounts associated with the authenticated user, enabling discovery of account hierarchies and manager accounts. The list_accounts tool queries the Google Ads API to return account metadata including customer IDs, account names, and account types, allowing users to identify which accounts they have access to before executing operations. This capability integrates directly with the OAuth authentication system to ensure only authorized accounts are returned.","intents":["I need to discover all Google Ads accounts I have access to before running campaigns or queries","I want to identify manager accounts vs client accounts in my account hierarchy","I need to programmatically list available accounts to dynamically select targets for bulk operations"],"best_for":["Agency teams managing multiple client Google Ads accounts","Developers building account selection UI or dynamic account routing","Automation builders needing to discover accounts before bulk operations"],"limitations":["Returns only accounts the authenticated user has explicit access to — no cross-organization visibility","No filtering or search capability — returns full list regardless of account count","Account hierarchy relationships returned as flat list — parent-child relationships require manual correlation"],"requires":["Valid OAuth 2.0 authentication established via oauth/google_auth.py","At least one Google Ads account associated with the authenticated Google account","Google Ads API v19 enabled in GCP project"],"input_types":["None — tool takes no parameters"],"output_types":["JSON array of account objects with customer_id, account_name, account_type fields"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_2","uri":"capability://data.processing.analysis.google.ads.query.language.gaql.execution.with.customer.and.manager.account.routing","name":"google ads query language (gaql) execution with customer and manager account routing","description":"Implements a run_gaql tool that executes arbitrary Google Ads Query Language queries against specified customer accounts, with support for both direct customer accounts and manager account queries. The tool accepts a GAQL query string, customer_id, and optional manager_id parameter, then routes the query to the appropriate Google Ads API endpoint with automatic OAuth authentication. Results are returned as structured JSON, enabling programmatic analysis of campaign performance, keyword metrics, ad group data, and other Google Ads entities.","intents":["I want to execute custom GAQL queries to extract specific campaign or keyword performance data","I need to query multiple customer accounts under a manager account without switching contexts","I want to analyze Google Ads data programmatically to build reports or trigger automation based on metrics"],"best_for":["Data analysts building custom Google Ads reporting dashboards","Automation engineers extracting performance data for optimization workflows","Agency teams querying multiple client accounts with a single API call"],"limitations":["Requires knowledge of GAQL syntax — no query builder or validation before execution","Query results limited by Google Ads API rate limits — no built-in pagination or result streaming","No query optimization or cost estimation — expensive queries may hit API quotas","Manager account queries require explicit manager_id parameter — no automatic hierarchy traversal"],"requires":["Valid OAuth 2.0 authentication","Valid customer_id for the target Google Ads account","GAQL query string with valid syntax (validated by Google Ads API, not locally)","Optional manager_id if querying under a manager account","Google Ads API v19 access"],"input_types":["customer_id (string): numeric customer ID without hyphens","query (string): GAQL query statement","manager_id (string, optional): manager account customer ID for cross-account queries"],"output_types":["JSON array of query results with fields matching GAQL SELECT clause","Error messages if query syntax is invalid or account access denied"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_3","uri":"capability://data.processing.analysis.keyword.research.and.ideation.with.performance.metrics.via.google.keyword.planner.integration","name":"keyword research and ideation with performance metrics via google keyword planner integration","description":"Provides a run_keyword_planner tool that generates keyword ideas and associated metrics (search volume, competition level, bid estimates) using Google's Keyword Planner API. The tool accepts a list of seed keywords, target customer account, optional page URL for context, and optional manager_id, then returns structured keyword data with performance metrics. This enables keyword research workflows within Claude conversations, allowing users to discover new keywords and understand their competitive landscape without leaving the MCP interface.","intents":["I want to generate keyword ideas based on seed keywords and see their search volume and competition metrics","I need to research keywords for a specific landing page to inform campaign structure","I want to discover long-tail keyword opportunities with bid estimates for budget planning"],"best_for":["PPC campaign managers researching keywords before campaign creation","Content strategists identifying high-value keywords for SEO/SEM planning","Automation builders generating keyword lists for bulk campaign operations"],"limitations":["Keyword Planner data is aggregated and anonymized — not account-specific historical performance","Metrics are estimates only — actual performance varies based on account history and quality score","Limited to Google Keyword Planner data sources — no integration with third-party keyword tools","Page URL parameter is optional and used only for context — does not perform actual page analysis"],"requires":["Valid OAuth 2.0 authentication","Valid customer_id for the target Google Ads account","At least one seed keyword (string or array of strings)","Optional page_url for keyword context (must be valid URL format)","Optional manager_id for cross-account queries","Google Ads API v19 with Keyword Planner access enabled"],"input_types":["keywords (string or array): seed keywords for ideation","customer_id (string): target account customer ID","page_url (string, optional): landing page URL for context","manager_id (string, optional): manager account ID"],"output_types":["JSON array of keyword objects with fields: keyword_text, search_volume, competition_level, bid_estimate_low, bid_estimate_high"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_4","uri":"capability://memory.knowledge.gaql.syntax.reference.and.documentation.as.mcp.resource","name":"gaql syntax reference and documentation as mcp resource","description":"Exposes a gaql_reference resource containing complete GAQL syntax documentation, field references, and query examples that Claude can access during conversations. This resource is served as part of the MCP protocol, allowing Claude to retrieve GAQL documentation without external web lookups. The reference includes supported entities (Campaign, AdGroup, Keyword, etc.), available fields, filtering operators, and example queries, enabling users to construct valid GAQL queries with inline documentation.","intents":["I want to look up GAQL syntax and available fields while constructing a query in Claude","I need examples of GAQL queries for common use cases like campaign performance analysis","I want to understand which fields are available for a specific Google Ads entity before writing a query"],"best_for":["Users new to GAQL learning query syntax through Claude conversations","Developers building GAQL queries who need quick reference without context switching","Teams standardizing GAQL query patterns with shared documentation"],"limitations":["Documentation is static — does not reflect real-time API changes or deprecations","No interactive query validation — reference is read-only documentation only","Limited to GAQL syntax — does not include Google Ads API authentication or rate limit documentation"],"requires":["MCP client with resource access capability (Claude Desktop supports this)","No authentication required — reference is public documentation"],"input_types":["None — resource is accessed by name 'gaql_reference'"],"output_types":["Markdown or text documentation containing GAQL syntax, entity definitions, field references, and example queries"],"categories":["memory-knowledge","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_5","uri":"capability://tool.use.integration.fastmcp.framework.integration.with.tool.registration.and.mcp.protocol.compliance","name":"fastmcp framework integration with tool registration and mcp protocol compliance","description":"Implements the core MCP server using FastMCP framework, which provides automatic tool registration via Python decorators, MCP protocol message handling, and transport abstraction (STDIO and HTTP modes). The server.py file uses FastMCP decorators (@mcp.tool, @mcp.resource) to register the list_accounts, run_gaql, and run_keyword_planner tools, and the framework handles serialization, error handling, and protocol compliance automatically. This architecture eliminates manual MCP message construction and enables the server to work with any MCP-compatible client (Claude Desktop, custom agents, etc.).","intents":["I want to expose Google Ads operations as MCP tools that Claude Desktop can discover and call","I need automatic MCP protocol compliance without manually implementing message serialization","I want to support both STDIO and HTTP transport modes for different deployment scenarios"],"best_for":["Developers building MCP servers for Claude Desktop integration","Teams deploying MCP servers in containerized or serverless environments","Builders extending the Google Ads MCP server with additional tools"],"limitations":["FastMCP is a relatively new framework — less mature than manual MCP implementations","Tool registration via decorators requires Python knowledge — not suitable for non-Python integrations","HTTP transport mode requires additional configuration and security considerations (CORS, authentication)","Error handling is framework-level — custom error recovery logic must be implemented in tool functions"],"requires":["Python 3.10+","FastMCP framework (installed via requirements.txt)","MCP-compatible client (Claude Desktop, custom agent, etc.)","For HTTP mode: additional configuration for port binding and security"],"input_types":["Python function definitions with @mcp.tool and @mcp.resource decorators"],"output_types":["MCP protocol messages (JSON-RPC 2.0 format) sent via STDIO or HTTP"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_6","uri":"capability://automation.workflow.environment.based.configuration.with.oauth.credentials.file.path.management","name":"environment-based configuration with oauth credentials file path management","description":"Implements configuration management via environment variables (.env file) and external OAuth credentials JSON file, allowing users to configure the server without modifying source code. The system reads GOOGLE_ADS_DEVELOPER_TOKEN and GOOGLE_ADS_OAUTH_CONFIG_PATH from environment variables, then loads the OAuth credentials from the specified JSON file path. This pattern enables secure credential storage, easy deployment across environments, and credential rotation without code changes.","intents":["I want to configure the Google Ads MCP server without modifying Python code","I need to store OAuth credentials securely in a separate file with path-based configuration","I want to deploy the server to different environments (dev, staging, prod) with different credentials"],"best_for":["DevOps teams deploying MCP servers across multiple environments","Security-conscious teams separating credentials from code","Developers managing multiple Google Ads accounts with different OAuth credentials"],"limitations":["OAuth credentials stored as plain JSON file — requires secure file system permissions and access controls","No built-in credential encryption — file system security is the only protection","Environment variables must be set before server startup — no runtime configuration updates","No credential rotation automation — manual file replacement required for credential updates"],"requires":[".env file with GOOGLE_ADS_DEVELOPER_TOKEN and GOOGLE_ADS_OAUTH_CONFIG_PATH variables","OAuth credentials JSON file downloaded from Google Cloud Console","File system permissions restricting access to .env and OAuth JSON files (600 or equivalent)","Python-dotenv or equivalent .env file loader"],"input_types":[".env file with KEY=VALUE format","OAuth credentials JSON file from Google Cloud Console"],"output_types":["Loaded configuration values accessible to server.py and oauth/google_auth.py"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-google-ads__cap_7","uri":"capability://tool.use.integration.claude.desktop.mcp.server.registration.via.claude.desktop.config.json","name":"claude desktop mcp server registration via claude_desktop_config.json","description":"Provides integration with Claude Desktop through the claude_desktop_config.json configuration file, which specifies the Python executable path and server.py location. This configuration file enables Claude Desktop to discover and launch the MCP server automatically, establishing the connection between Claude's conversational interface and the Google Ads tools. The server runs as a subprocess managed by Claude Desktop, with communication via STDIO protocol.","intents":["I want Claude Desktop to automatically discover and launch the Google Ads MCP server","I need to configure the server path and Python executable for Claude Desktop integration","I want to enable Google Ads operations as native Claude tools without manual server management"],"best_for":["Claude Desktop users wanting native Google Ads integration","Teams deploying MCP servers to Claude Desktop for end-user access","Developers testing MCP servers locally before production deployment"],"limitations":["Claude Desktop configuration is local-only — requires manual setup on each machine","Server runs as subprocess of Claude Desktop — no independent server lifecycle management","STDIO transport only for Claude Desktop — HTTP mode requires separate configuration","Configuration file must be in exact location (~/.config/Claude/claude_desktop_config.json on Linux/Mac, AppData on Windows)"],"requires":["Claude Desktop installed and running","Python 3.10+ executable path known and accessible","server.py file path known and accessible","claude_desktop_config.json file in correct location with proper JSON syntax"],"input_types":["claude_desktop_config.json with 'google-ads' server entry containing 'command' and 'args' fields"],"output_types":["MCP server subprocess launched by Claude Desktop with STDIO communication channel"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":29,"verified":false,"data_access_risk":"high","permissions":["Python 3.10+","Google Cloud Platform account with OAuth 2.0 credentials downloaded as JSON","Google Ads API enabled in GCP project","Claude Desktop with MCP support","GOOGLE_ADS_DEVELOPER_TOKEN environment variable set","GOOGLE_ADS_OAUTH_CONFIG_PATH environment variable pointing to OAuth JSON file","Valid OAuth 2.0 authentication established via oauth/google_auth.py","At least one Google Ads account associated with the authenticated Google account","Google Ads API v19 enabled in GCP project","Valid OAuth 2.0 authentication"],"failure_modes":["Requires initial manual OAuth flow setup through Google Cloud Console — cannot be fully automated on first run","Token refresh happens in-process only — no distributed token cache for multi-instance deployments","OAuth credentials stored as local JSON file — requires secure file system permissions and backup strategy","Returns only accounts the authenticated user has explicit access to — no cross-organization visibility","No filtering or search capability — returns full list regardless of account count","Account hierarchy relationships returned as flat list — parent-child relationships require manual correlation","Requires knowledge of GAQL syntax — no query builder or validation before execution","Query results limited by Google Ads API rate limits — no built-in pagination or result streaming","No query optimization or cost estimation — expensive queries may hit API quotas","Manager account queries require explicit manager_id parameter — no automatic hierarchy traversal","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.41,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:03.040Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=google-ads","compare_url":"https://unfragile.ai/compare?artifact=google-ads"}},"signature":"25A+G2tLFTuMFwpnhYzt+Fo289OHxdQRDlZRPuiVhNRqCj5QotbVMPrLsRs+hP4K2XtccjfzI8RRHJ4UhsajAQ==","signedAt":"2026-06-21T07:20:25.586Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/google-ads","artifact":"https://unfragile.ai/google-ads","verify":"https://unfragile.ai/api/v1/verify?slug=google-ads","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}