Google Ads MCP Reader
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accessible_customersA | Start here — Discover Google Ads customer IDs accessible by the authenticated user. Always call this first before search(). Returns resource names like 'customers/1234567890' — extract the numeric ID from the last segment to use in other tools. |
| get_resource_metadataA | Discover which fields are SELECTable, FILTERable, and SORTable for a Google Ads resource. Always call this before search() — using incorrect field names causes API errors. Compatible metrics.* and segments.* fields are included for reporting queries. Args: resource_name: The resource to explore (e.g. 'campaign', 'ad_group', 'keyword_view', 'search_term_view', 'customer_client'). Returns: A dict with resource name and three sorted arrays of fully-qualified field names. Example for resource='campaign': selectable: ['campaign.id', 'campaign.name', 'campaign.status', 'metrics.clicks', 'metrics.impressions', ...] filterable: ['campaign.id', 'campaign.status', ...] sortable: ['campaign.id', 'metrics.clicks', ...] |
| searchA | Execute a read-only GAQL query and return flattened results. Workflow: list_accessible_customers() → get_resource_metadata(resource) → search() If customer_id is a manager (MCC) account, this auto-routes to child accounts and annotates results with _source_customer_id and _source_customer_name — no manual child enumeration needed. Field rules:
Common conditions: campaign.status = 'ENABLED' campaign.advertising_channel_type = 'SEARCH' segments.date DURING LAST_30_DAYS metrics.impressions > 1000 Example — active campaigns with performance: customer_id='1234567890', resource='campaign', fields=['campaign.id', 'campaign.name', 'campaign.status', 'metrics.clicks', 'metrics.impressions', 'metrics.cost_micros'], conditions=["campaign.status = 'ENABLED'", 'segments.date DURING LAST_7_DAYS'], orderings=['metrics.clicks DESC'], limit=10 Args: customer_id: Numeric Google Ads customer ID (e.g. '1234567890'). Manager (MCC) accounts are auto-detected and routed. resource: GAQL resource name (e.g. 'campaign', 'ad_group', 'keyword_view'). fields: Fully-qualified field names to SELECT. conditions: WHERE clauses joined with AND (optional). orderings: ORDER BY clauses (optional). limit: Max results (default: 100, max varies by resource). |
| gsc_get_capabilities | Get a categorized list of all available GSC tools and authentication status. Call this first if you're unsure which GSC tool to use, whether the server is authenticated, or what tools are available. Faster than searching individually. |
| gsc_list_properties | Start here — Discover all GSC properties the user has access to. Returns the exact site_url strings needed by every other GSC tool. Always call this first before using any other GSC tool. |
| gsc_get_site_details | Get verification status and ownership details for a specific GSC property. Use this to check permission level, verification method, and ownership info. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' (URL-prefix) or 'sc-domain:example.com' (domain property). |
| gsc_get_search_analytics | Get top-performing queries and pages with clicks, impressions, CTR, position. Use this for: identifying high-value keywords, tracking rank changes, finding low-CTR opportunities. For filtered or paginated queries, use gsc_get_advanced_search_analytics instead. For an executive summary, use gsc_get_performance_overview. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' or 'sc-domain:example.com'. days: How many days to look back (default: 28). dimensions: Group results by — 'query', 'page', 'device', 'country', 'date', or any comma-separated combination (e.g. 'query,device'). row_limit: Max rows to return (default: 20, max: 500). Use 5-10 for quick overviews, 50-200 for deeper analysis. |
| gsc_get_performance_overviewA | Get an executive summary with daily trend — totals for clicks, impressions, CTR, and avg position plus a day-by-day breakdown. Use this for: quick snapshots, dashboards, spotting traffic spikes or drops. For detailed query-level data, use gsc_get_search_analytics. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' or 'sc-domain:example.com'. days: How many days to look back (default: 28). |
| gsc_compare_search_periodsA | Compare search performance between two date ranges and surface what changed. Use this for: month-over-month analysis, campaign impact assessment, seasonal trend detection. Returns which queries improved or declined with click/impression changes. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' or 'sc-domain:example.com'. period1_start: Start of baseline period, format YYYY-MM-DD (e.g. '2026-01-01'). period1_end: End of baseline period, format YYYY-MM-DD (e.g. '2026-01-31'). period2_start: Start of comparison period, format YYYY-MM-DD (e.g. '2026-02-01'). period2_end: End of comparison period, format YYYY-MM-DD (e.g. '2026-02-28'). dimensions: Group by — 'query', 'page', 'device', etc. (default: 'query'). limit: Max items to return, sorted by biggest change (default: 10). |
| gsc_get_advanced_search_analytics | Full-featured search analytics with filtering, sorting, pagination (up to 25K rows). Use this for: deep analysis with country/device/page filters, large bulk exports, custom sort orders. For a quick top-N view without filters, use gsc_get_search_analytics instead — it returns faster with less overhead. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' or 'sc-domain:example.com'. start_date: Start date YYYY-MM-DD (default: 28 days ago). end_date: End date YYYY-MM-DD (default: today). dimensions: Group by — comma-separated: query, page, device, country, date. search_type: Which search vertical to query (default: WEB). row_limit: Max rows to return (max 25000, default: 100). Use with start_row for pagination: first call 100, then 100, then 200... via start_row. start_row: Row offset for pagination (default: 0). sort_by: Metric to sort results by (default: clicks). sort_direction: ascending or descending (default: descending). filters: JSON array of filter objects for AND logic across dimensions. Each object: {"dimension": "...", "operator": "...", "expression": "..."} Valid dimensions: query, page, country, device. Valid operators: contains, equals, notContains, notEquals. Example: '[{"dimension":"country","operator":"equals","expression":"usa"}, {"dimension":"device","operator":"equals","expression":"MOBILE"}]' |
| gsc_inspect_url | Debug a single URL's indexing status — checks coverage state, crawl date, canonical URL, robots.txt allow/block, page fetch success, and rich results. Use this for: diagnosing why a page isn't ranking, checking if Google can crawl a new page, verifying canonical URLs, or troubleshooting indexing issues. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' or 'sc-domain:example.com'. page_url: The full URL to inspect, e.g. 'https://example.com/blog/post'. |
| gsc_get_sitemapsA | List all sitemaps for a GSC property with submission status, error/warning counts, and indexed URL totals. Use this for: monitoring crawl health, finding sitemap errors, checking if new content was picked up, verifying sitemap submission. Args: site_url: Exact GSC property URL from gsc_list_properties. Format: 'https://example.com/' or 'sc-domain:example.com'. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ceotind/open-google-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server