Keyword Research MCP
Retrieves and normalizes Google Ads keyword-planning data, such as keyword ideas and competition metrics, using the Google Ads API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Keyword Research MCPShow me keyword ideas and competition for 'eco-friendly shoes'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Keyword Research MCP
Keyword Research MCP is a lightweight local MCP server that connects an agent to real Google Ads keyword-planning data — search volume, monthly volumes, paid competition, and bid ranges — normalized into stable, typed shapes. It fetches and normalizes; it does not score, cluster, or label keywords.
Tools
generate_keyword_ideas— discover keywords. Seed withseed_keywords(up to 20), aseed_url(one page), or aseed_site(a whole domain);seed_sitecannot be combined with the others. Give a plain-textlocation(defaultUnited States) andlanguage_code(defaulten), or explicitgeo_target_resource_names. Ideas come back most-searched first; ideas belowmin_avg_monthly_searches(default10) are dropped before the page is built, sototal_sizestays Google's pre-filter estimate. Paginate withcursor.resolve_geo_targets— list every plausible Google Ads location for a human-readable query when you need to pin down an exact target.get_keyword_historical_metrics— enrich an existing keyword list with average monthly searches, monthly volumes, paid competition, and bid ranges.
Search volume is real Google demand data. Paid Competition in Google Ads describes advertiser activity; this project does not present it as organic ranking difficulty and calculates no composite keyword score. Phrase grouping and intent classification are left to the calling agent.
Related MCP server: Google Ads MCP Server
Requirements
Python 3.10 through 3.14
Google Ads credentials are not needed for tests. They are required when the production adapter connects to Google Ads.
Google Ads configuration
The production adapter uses google-ads==31.2.0 and explicitly selects Google
Ads API v25. Configure exactly one target customer and one authentication
method. Customer IDs may contain hyphens; they are normalized in memory.
For user OAuth, set:
export GOOGLE_ADS_DEVELOPER_TOKEN="developer-token-placeholder"
export GOOGLE_ADS_CUSTOMER_ID="123-456-7890"
export GOOGLE_ADS_LOGIN_CUSTOMER_ID="987-654-3210" # optional manager account
export GOOGLE_ADS_CLIENT_ID="client-id-placeholder"
export GOOGLE_ADS_CLIENT_SECRET="client-secret-placeholder"
export GOOGLE_ADS_REFRESH_TOKEN="refresh-token-placeholder"For a service account, omit the three user-OAuth settings and set:
export GOOGLE_ADS_DEVELOPER_TOKEN="developer-token-placeholder"
export GOOGLE_ADS_CUSTOMER_ID="123-456-7890"
export GOOGLE_ADS_JSON_KEY_FILE_PATH="/path/to/service-account.json"
export GOOGLE_ADS_IMPERSONATED_EMAIL="ads-user@example.test" # optionalAlternatively, point GOOGLE_ADS_CONFIGURATION_FILE_PATH at a local
google-ads.yaml:
developer_token: developer-token-placeholder
customer_id: "123-456-7890"
login_customer_id: "987-654-3210"
client_id: client-id-placeholder
client_secret: client-secret-placeholder
refresh_token: refresh-token-placeholderOptional process settings are KEYWORD_RESEARCH_CACHE_CAPACITY (default 128)
and KEYWORD_RESEARCH_LOG_LEVEL (default INFO). Credential files,
google-ads.yaml, and .env files are ignored by Git.
Set up and run
uv sync
uv run keyword-research-mcpThe command runs over stdio, so it waits silently for an MCP client and writes
protocol messages only to standard output.
Agent skill
skills/keyword-research/SKILL.md is a
ready-to-use skill that drives these tools: it takes a niche to a shortlist of
keywords worth planning content around, with sensible defaults meant to be
refined per use case. Copy the skills/keyword-research/ directory into your
agent's skills directory (for Claude Code, .claude/skills/).
Development
Run the same quality gate used in CI:
uv run ruff format --check .
uv run ruff check .
uv run pytest
uv buildpyright is configured but not part of the gate: the mcp 2.x server SDK
registers tools through decorators that pyright's strict mode reports as unused,
so it produces false positives here.
License
MIT
Maintenance
Related MCP Connectors
Google Ads analysis and operations — read performance, manage keywords, bids, and campaigns.
Google Ads MCP server — manage campaigns, keywords, and metrics.
Query Google Ads Transparency data: advertiser suggestions, creatives, and ad history.
Keyword data, web extraction and public social search for marketing research workflows.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables comprehensive Google Ads campaign management and analytics through the Google Ads API. Supports querying campaigns, ad groups, keywords, performance metrics, and executing custom GAQL queries with token-efficient implementation.-
- AlicenseNot gradedqualityAmaintenanceEnables Large Language Models to interact with Google Ads API for querying campaigns, ad groups, and performing mutations like creating budgets and ads.230Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables LLMs to query Google Ads accounts, search for information, and list accessible customers.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to interact with Google Ads accounts by searching, retrieving resource metadata, and listing accessible customers via the Google Ads API.Apache 2.0