Skip to main content
Glama
afeezadebayo

Google Keyword Planner MCP Server

by afeezadebayo

Google Keyword Planner MCP server

An MCP server that gives Claude and other MCP clients direct access to Google Ads Keyword Planner data: keyword ideas, average monthly searches, competition, top-of-page bid ranges, monthly trends and click and cost forecasts.

Built by Afeez Adebayo. MIT licensed.

What you can ask

  • "Find 100 keyword ideas for online accounting software in Nigeria, sorted by search volume."

  • "Get search volume for these 50 keywords in the UK and US, with their trends."

  • "Pull keyword ideas from https://example.com/pricing."

  • "Forecast clicks and cost for these exact-match keywords at a ₦300 max CPC for 30 days."

Related MCP server: Google Ads MCP Server

Tools

Tool

What it does

generate_keyword_ideas

Ideas from seed keywords, a URL, keywords plus a URL, or a whole site. Returns average monthly searches, competition, low and high top-of-page bids, 3-month change, change across the period (first to last month shown), and optional monthly volumes. Filter by minimum volume and sort by searches, competition, bid or relevance.

get_search_volume

Historical metrics for up to 10,000 exact keywords, with close variants and a list of keywords Google returned no data for. Optional month range.

forecast_keywords

Impressions, clicks, cost, CTR and average CPC for keywords at a given max CPC over 1 to 365 days.

find_locations

Look up Google location IDs by place name.

list_languages

List targetable languages with codes and IDs.

list_accessible_customers

List the Google Ads accounts your login can access.

check_connection

Confirm credentials and show the account, currency and defaults.

Locations and languages accept plain names ("Nigeria", "Lagos", "English") as well as Google IDs. Bids and costs are shown in your Google Ads account currency.

What you need

Keyword Planner data comes from the Google Ads API, so you need:

  1. A Google Ads account. It must be enabled, but it doesn't need running campaigns.

  2. A developer token with Basic access. In a Google Ads manager account, go to Tools > Setup > API Center and apply. A new token starts with test access, which only works with test accounts and returns no real keyword data; apply for Basic access to use real accounts.

  3. A Google Cloud OAuth client. In the Google Cloud console: create a project, enable the Google Ads API, configure the OAuth consent screen, and create an OAuth client ID of type Desktop app. Set the consent screen's publishing status to In production, because refresh tokens from apps in Testing status expire after 7 days.

  4. A refresh token. Clone this folder and run:

    npm install
    GOOGLE_ADS_CLIENT_ID=your-client-id GOOGLE_ADS_CLIENT_SECRET=your-secret npm run auth

    Open the printed link, sign in with the Google account that can access your Ads account, and copy the refresh token it prints.

Install

Claude Desktop (one click)

Download google-keyword-planner.mcpb from the latest release and open it. Claude Desktop asks for your credentials and stores the secrets securely.

Any MCP client (from source)

git clone https://github.com/afeezadebayo/google-keyword-planner-mcp.git
cd google-keyword-planner-mcp
npm install && npm run build

Then add it to your client config:

{
  "mcpServers": {
    "google-keyword-planner": {
      "command": "node",
      "args": ["/path/to/google-keyword-planner-mcp/server/index.js"],
      "env": {
        "GOOGLE_ADS_DEVELOPER_TOKEN": "...",
        "GOOGLE_ADS_CLIENT_ID": "...",
        "GOOGLE_ADS_CLIENT_SECRET": "...",
        "GOOGLE_ADS_REFRESH_TOKEN": "...",
        "GOOGLE_ADS_CUSTOMER_ID": "123-456-7890",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "",
        "KEYWORD_PLANNER_DEFAULT_LANGUAGE": "English",
        "KEYWORD_PLANNER_DEFAULT_LOCATIONS": "Nigeria"
      }
    }
  }
}

For Claude Code:

claude mcp add google-keyword-planner \
  -e GOOGLE_ADS_DEVELOPER_TOKEN=... -e GOOGLE_ADS_CLIENT_ID=... -e GOOGLE_ADS_CLIENT_SECRET=... \
  -e GOOGLE_ADS_REFRESH_TOKEN=... -e GOOGLE_ADS_CUSTOMER_ID=123-456-7890 \
  -- node /path/to/google-keyword-planner-mcp/server/index.js

Configuration

Variable

Required

Notes

GOOGLE_ADS_DEVELOPER_TOKEN

Yes

Basic access or higher for real data.

GOOGLE_ADS_CLIENT_ID

Yes

OAuth client (Desktop app).

GOOGLE_ADS_CLIENT_SECRET

Yes

GOOGLE_ADS_REFRESH_TOKEN

Yes

From npm run auth.

GOOGLE_ADS_CUSTOMER_ID

Yes

The account to query. Dashes are fine.

GOOGLE_ADS_LOGIN_CUSTOMER_ID

No

Your manager account ID, if you access the account through one.

GOOGLE_ADS_API_VERSION

No

Defaults to v25. Change it when Google retires a version.

KEYWORD_PLANNER_DEFAULT_LANGUAGE

No

Used when a request doesn't name a language.

KEYWORD_PLANNER_DEFAULT_LOCATIONS

No

Comma-separated names or IDs used when a request doesn't name locations.

Good to know

  • Volumes are estimates. Keyword Planner rounds search volumes into ranges and groups close variants. Accounts with little or no ad spend may see broader ranges.

  • Rate limits. Keyword Planner allows a limited number of requests per minute. The server retries rate-limit and server errors automatically with back-off.

  • Errors explain the fix. Common problems (a test-only developer token, a missing manager account ID, an expired refresh token) come back with a plain-English explanation of how to fix them.

  • Privacy. The server runs on your machine and talks only to Google. Credentials stay in your MCP client's config.

Development

npm install
npm run typecheck
npm run build
npm test   # runs every tool against a local mock of the Google Ads API

Releases are automated: bumping version in package.json and pushing to main builds the bundle, creates a GitHub release and publishes the listing to the official MCP Registry.

Available Tools

7 tools
check_connectionCheck connectionA
Read-onlyIdempotent

Check that credentials work and show the configured account, API version, currency and defaults.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds value by enumerating the concrete result contents (configured account, API version, currency, defaults), which matters because there is no output schema — though it says nothing about what happens on failed credentials.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler: the validation purpose comes first, the returned configuration fields second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no params and no output schema, the description must carry the return-value burden and it does so by listing the fields exposed. The only gap is error behavior — what the agent should expect when credentials are invalid — which would round out a diagnostic tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case. There is nothing for the description to disambiguate, and it correctly spends no words on inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('check') and a specific object ('credentials'), and names what is surfaced: account, API version, currency and defaults. That clearly separates it from the sibling data tools (keyword ideas, volume, forecasts), none of which validate auth, though the description never explicitly contrasts with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — the wording suggests a pre-flight/health-check call, but there is no explicit 'use this before X' or 'do not use to fetch account data, use list_accessible_customers instead' guidance. An agent can infer the diagnostic role, but nothing in the text confirms when to prefer it over the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_locationsFind location IDsA
Read-onlyIdempotent

Search Google's geo targets by name to get location IDs for countries, regions, cities and more.

NameRequiredDescriptionDefault
namesYesPlace names, e.g. ["Lagos", "Abuja"].
localeNoen
country_codeNoLimit to a country, e.g. "NG".

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds that results come from Google's external geo target dataset, which is useful context. It does not say how ambiguous names are resolved (single best match vs. multiple results), nor mention any rate or batch limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the action and ending with the payoff. No filler, no redundancy with the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does state what is returned (location IDs). For a simple lookup tool with read-only annotations, this is nearly sufficient — only the shape of results for ambiguous or partially matching names is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the description adds no meaning beyond the schema for any parameter — notably it never explains what `locale` does or how `country_code` disambiguates same-named places. The `names` and `country_code` params are self-documented in the schema, so the gap is not severe, but the description misses an easy opportunity to clarify the third parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Search Google's geo targets by name") plus the concrete outcome ("get location IDs") and enumerates the target types covered. This is unmistakably distinct from the keyword-oriented sibling tools (generate_keyword_ideas, get_search_volume, forecast_keywords).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "to get location IDs" implies the use case: call this when you need a geo target ID for targeting. However, there is no explicit guidance on when not to use it, no mention that this is a prerequisite step before other geo-targeted calls, and no pointer to any alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forecast_keywordsForecast clicks and costA
Read-onlyIdempotent

Forecast impressions, clicks, cost, CTR and average CPC for a set of keywords over a future period, using Keyword Planner's forecasting. Useful for budgeting a paid search campaign.

NameRequiredDescriptionDefault
daysNoForecast length in days, starting tomorrow.
max_cpcYesMaximum cost per click bid, in the account currency (e.g. 0.8).
networkNoGOOGLE_SEARCH (default) or GOOGLE_SEARCH_AND_PARTNERS.GOOGLE_SEARCH
keywordsYes
languageNoLanguage name, code or ID, for example "English", "en" or "1000". Omit for the default (all languages if none set).
locationsNoUp to 10 locations as names ("Nigeria", "Lagos", "United Kingdom") or Google geo target IDs ("2566"). Omit for the default or worldwide.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the useful detail that results come from Keyword Planner's forecasting; it says nothing about quota consumption, latency of forecast generation, or why the call is open-world.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence plus a short second sentence, with the metrics and the temporal scope front-loaded. Nothing is redundant and both sentences carry new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only forecasting tool with a rich, well-annotated 6-parameter schema and no output schema, the description covers what is forecast and over what horizon. It could say more about forecast output shape (ranges vs point estimates) but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 83%, with days, max_cpc, network, language and locations all documented in-schema (including defaults, bounds and geo target ID formats). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — forecast impressions, clicks, cost, CTR and average CPC for a keyword set over a future period — and names the engine (Keyword Planner). The 'future period' framing implicitly separates it from historical siblings like get_search_volume, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for budgeting a paid search campaign' gives a loose usage context, but there is no explicit when-to-use/when-not or routing instruction against generate_keyword_ideas or get_search_volume. Guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_keyword_ideasGenerate keyword ideasA
Read-onlyIdempotent

Get keyword ideas from Keyword Planner using seed keywords, a page URL, a whole site, or keywords plus a URL. Returns each idea's average monthly searches, competition, top-of-page bid range, 3-month change, change across the period (first to last month), and monthly volumes.

NameRequiredDescriptionDefault
urlNoA page URL to pull ideas from. Can be combined with keywords.
siteNoA whole domain to pull ideas from, e.g. "example.com". Can't be combined with keywords or url.
limitNoMaximum ideas to return (default 200).
networkNoGOOGLE_SEARCH (default) or GOOGLE_SEARCH_AND_PARTNERS.GOOGLE_SEARCH
sort_byNosearches
keywordsNoSeed keywords (up to 20).
languageNoLanguage name, code or ID, for example "English", "en" or "1000". Omit for the default (all languages if none set).
locationsNoUp to 10 locations as names ("Nigeria", "Lagos", "United Kingdom") or Google geo target IDs ("2566"). Omit for the default or worldwide.
min_searchesNoDrop ideas below this average monthly search volume.
include_monthlyNoInclude the 12-month volume series for each idea (larger output).
include_adult_keywordsNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's real contribution is the return-shape disclosure: monthly searches, competition, top-of-page bid range, 3-month change, first-to-last change, and monthly volumes. That is genuine added context, particularly valuable since no output schema exists. It omits cost/quota or rate-limit considerations typical of Keyword Planner calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: purpose first, then the returned metric list. No filler. Slightly dense packing of four input modes into one clause, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with no required params and no output schema, the description covers both halves well: how you seed it and what each idea carries. Missing only inclusion of the limit/sort/include_monthly toggles, which the high-coverage schema already handles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 82%, so the baseline of 3 applies; the schema already documents url, site, limit, network, keywords, language, locations, min_searches, and include_monthly. The description echoes the input modes and names the returned metrics but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb ('Get keyword ideas') plus the named source system (Keyword Planner) and the four supported input modes. An agent can tell what it does immediately, though it never references the sibling get_search_volume/forecast_keywords, which overlaps in domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by enumerating valid input combinations (seed keywords, page URL, whole site, keywords + URL), but it gives no explicit when-to-use/when-not guidance and no routing to siblings. The 'site can't be combined with keywords or url' exclusion lives only in the schema, not in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_search_volumeGet search volume and metricsA
Read-onlyIdempotent

Get historical Keyword Planner metrics for specific keywords: average monthly searches, monthly volumes, competition, top-of-page bid range and trends. Use this to check exact keywords rather than discover new ones. Close variants that Google groups together are listed.

NameRequiredDescriptionDefault
networkNoGOOGLE_SEARCH (default) or GOOGLE_SEARCH_AND_PARTNERS.GOOGLE_SEARCH
keywordsYesKeywords to look up (up to 10,000).
languageNoLanguage name, code or ID, for example "English", "en" or "1000". Omit for the default (all languages if none set).
end_monthNoLast month, YYYY-MM.
locationsNoUp to 10 locations as names ("Nigeria", "Lagos", "United Kingdom") or Google geo target IDs ("2566"). Omit for the default or worldwide.
start_monthNoFirst month, YYYY-MM. Default: the last 12 months.
include_average_cpcNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral detail beyond that: results are historical, and close variants grouped by Google are returned alongside the queried keywords, which affects how the agent should interpret output volume.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose plus returned metrics first, then usage guidance, then an output caveat. No filler and no repetition of schema details the agent will read anyway.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what comes back (average monthly searches, competition, top-of-page bids, trends) and warns about grouped close variants, which is the key interpretive detail. Minor gaps remain around what happens for keywords with no data and any quota/cost implications of a 10,000-keyword lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86%, so nearly every parameter is already documented in the schema (network, keywords limits, language formats, month patterns, locations). The description only implicitly touches parameters via 'historical' (date range) and 'close variants' (keyword handling), adding little beyond the schema — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get historical Keyword Planner metrics for specific keywords') and enumerates the exact metrics returned (monthly searches, competition, bid range, trends). This is clearly distinguishable from the discovery-oriented sibling generate_keyword_ideas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use this to check exact keywords rather than discover new ones' gives an explicit when-to-use and a when-not, which implicitly routes the agent toward generate_keyword_ideas for discovery. It stops short of naming the sibling or covering other alternatives like forecast_keywords, so it is clear context without full exclusion coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_accessible_customersList Google Ads accountsA
Read-onlyIdempotent

List the Google Ads customer IDs the signed-in user can access. Use it to find the right GOOGLE_ADS_CUSTOMER_ID.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds something beyond them: the result is scoped to what the 'signed-in user can access,' which discloses an auth-dependent, non-exhaustive result set an agent must account for. Return shape is only implied by 'customer IDs'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the purpose front-loaded and the usage note following immediately. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, side-effect-free list operation with rich annotations, the description supplies purpose, auth scoping, and the downstream use of the result. No output schema is needed because the return value ('customer IDs') is named explicitly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the schema to document and nothing the description needs to compensate for; the baseline is 4. The description correctly implies no filtering inputs are needed to get the full accessible list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the Google Ads customer IDs') plus an access qualifier ('the signed-in user can access'), so the scope is unambiguous. No sibling tool (check_connection, keyword/location/language tools) operates on this resource, so the agent can route here without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives an explicit use case: 'Use it to find the right GOOGLE_ADS_CUSTOMER_ID,' which tells the agent this is a discovery/prerequisite step. There are no stated exclusions or error-path guidance (e.g., what to do if the list is empty), which keeps it just below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_languagesList languagesA
Read-onlyIdempotent

List the languages Keyword Planner can target, with their codes and IDs.

NameRequiredDescriptionDefault
filterNoOptional text to filter by name or code.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results are reference data with codes and IDs, but says nothing about result size, pagination, or whether the list is exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the action and resource, and it also conveys the returned fields. No wasted text, though it could have used the space for a when-to-use clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only reference lookup with one optional parameter, this is close to complete — it states the tool's domain and the shape of returned entries despite there being no output schema. Only minor gaps (exhaustiveness, usage context) remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional `filter` parameter is fully documented in the schema. The description adds no extra meaning about filtering behavior, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: lists languages that Keyword Planner can target, plus what each entry contains (codes and IDs). It is clearly distinct from siblings like find_locations or get_search_volume, though the description does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — an agent would call this to obtain language codes/IDs for targeting in other calls — but the description never states when to use this versus alternatives or any prerequisites. No exclusions or routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.0
    • First observedcheck_connection
    • First observedfind_locations
    • First observedforecast_keywords
    • First observedgenerate_keyword_ideas
    • First observedget_search_volume
    • First observedlist_accessible_customers
    • First observedlist_languages

TDQS

A4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct capability: connectivity check, keyword discovery, exact-metric lookup, forecasting, geo lookup, language listing, and account listing. The only potential overlap is generate_keyword_ideas vs get_search_volume, but the descriptions explicitly frame one as discovery and the other as exact-keyword verification, so an agent can reliably choose.

Naming Consistency5/5

All seven names use consistent snake_case verb_noun structure (check_connection, generate_keyword_ideas, get_search_volume, forecast_keywords, find_locations, list_languages, list_accessible_customers). The verbs are descriptive and predictable throughout.

Tool Count5/5

Seven tools is well-scoped for a Keyword Planner integration, covering auth/config, discovery, metrics, forecasting, and the lookup helpers needed to use the main tools. No tool feels redundant or padded.

Completeness4/5

The surface covers the core Keyword Planner lifecycle: keyword discovery, exact metrics, forecasting, geo targeting, language targeting, and customer-ID discovery plus a connectivity check. Minor gaps exist, such as no tool for browsing keyword categories or filtering ideas by category/network settings, but core workflows are not blocked.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides SEO automation with tools for keyword research, SERP analysis, and competitor analysis through Google Ads API integration, enabling AI assistants to access these capabilities via MCP.
    50
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Google Ads through secure OAuth authentication to discover keyword ideas, analyze historical search metrics, and generate forecasts for advertising campaigns. Built as a Next.js application with encrypted credential storage and rate limiting.
    14 npm
    1
    Apache 2.0
  • A
    license
    B
    quality
    C
    maintenance
    Enables comprehensive Google Ads campaign management and analysis through natural language, including performance metrics, keyword optimization, budget management, and custom GAQL queries.
    100
    17
    MIT