Marketing Miner MCP
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., "@Marketing Miner MCP get search volume for 'digital marketing' in the US"
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.
Marketing Miner MCP Server
MCP server for the Marketing Miner Profilers API. Connects Claude, Cursor, Windsurf and other MCP clients to Marketing Miner keyword research and website analytics.
Available tools
Tool | Endpoint | Description |
|
| Search volume + CPC + YoY + seasonality for a single keyword |
|
| Batch processing of 1–1000 keywords |
|
| Keyword suggestions (questions / new / trending) with difficulty and SERP features. Supports |
|
| Estimated traffic, keyword count, breakdown by result_type |
|
| Historical traffic trend + competitor comparison |
Every tool returns markdown (default, human-readable) or json (response_format: "json"), plus structuredContent with all API fields. Each tool declares an outputSchema for client-side validation.
Related MCP server: @applyra/mcp-server
Installation
Get an API token from marketingminer.com/en/features/api, then pick one of the options below.
Option A — Claude Code CLI one-liner (recommended, cross-platform)
Works on macOS, Windows and Linux — Claude Code CLI handles the config file location for you.
claude mcp add marketing-miner \
-s user \
-e MARKETING_MINER_API_TOKEN=YOUR_TOKEN \
-- npx -y github:lukaskostka/marketing-miner-mcp-s user→ installs globally (available from any project)-e→ sets the API token as environment variableReplace
YOUR_TOKENwith your actual Marketing Miner API token
To remove later: claude mcp remove marketing-miner -s user.
Option B — npx straight from GitHub (no clone needed)
The repo ships the built dist/ folder, so npx can run it directly.
Claude Desktop / Cursor / Windsurf config:
{
"mcpServers": {
"marketing-miner": {
"command": "npx",
"args": ["-y", "github:lukaskostka/marketing-miner-mcp"],
"env": {
"MCP_TRANSPORT": "stdio",
"MARKETING_MINER_API_TOKEN": "your_token_here"
}
}
}
}Option C — clone the repo (for development / customization)
git clone https://github.com/lukaskostka/marketing-miner-mcp.git
cd marketing-miner-mcp
npm install
npm run buildThen point your MCP client at the built binary:
{
"mcpServers": {
"marketing-miner": {
"command": "node",
"args": ["/absolute/path/to/marketing-miner-mcp/dist/index.js"],
"env": {
"MCP_TRANSPORT": "stdio",
"MARKETING_MINER_API_TOKEN": "your_token_here"
}
}
}
}Run locally with MARKETING_MINER_API_TOKEN=xxx npm start (stdio, default) or MCP_TRANSPORT=http MARKETING_MINER_API_TOKEN=xxx npm start (Streamable HTTP on port 8000).
Option D — Docker (self-hosted HTTP)
git clone https://github.com/lukaskostka/marketing-miner-mcp.git
cd marketing-miner-mcp
docker build -t marketing-miner-mcp .
docker run -p 8000:8000 -e MARKETING_MINER_API_TOKEN=your_token_here marketing-miner-mcpConnect from a remote client via Streamable HTTP URL (see Connecting from an MCP client below).
Configuration
Variable | Default | Description |
| — | Required. API token from marketingminer.com/en/features/api |
|
|
|
|
| HTTP bind host |
|
| HTTP port |
|
| HTTP path |
Alternative token names: MARKETING_MINER_API_KEY, MARKETING_MINER_TOKEN, MM_API_TOKEN, MM_API_KEY.
Remote HTTP client config
If you are running the server over Streamable HTTP (Option D above or any remote host), MCP clients connect via URL only:
{
"mcpServers": {
"marketing-miner": {
"url": "https://your-host.example.com/mcp"
}
}
}Usage examples
1. Search volume for a single keyword:
"What is the search volume and seasonality of
marketingin CZ?" →marketing_miner_get_search_volume({lang:"cs", keyword:"marketing"})
2. Batch processing:
"Compare search volume of SEO terms" →
marketing_miner_batch_search_volume({lang:"cs", keywords:["seo","ppc","google ads","content marketing"]})
3. Question research for FAQ:
"Find questions around
hypoteka" →marketing_miner_get_keyword_suggestions({lang:"cs", keyword:"hypoteka", suggestions_type:"questions", limit:50})
4. Paginating suggestions:
Fetch next page →
marketing_miner_get_keyword_suggestions({lang:"cs", keyword:"hypoteka", limit:50, offset:50})
5. Competitor analysis:
"How much traffic does seznam.cz get?" →
marketing_miner_get_website_stats({lang:"cs", type:"domain", target:"seznam.cz"})
6. Competitor trends:
"Compare traffic trends of seznam.cz vs. idnes.cz" →
marketing_miner_get_website_stats_range({lang:"cs", type:"domain", target:"seznam.cz", period:"monthly", competitors:["idnes.cz"]})
Supported markets
cs, sk, pl, hu, ro, gb, us
Architecture
Node 18+, TypeScript (strict), ESM
MCP SDK
^1.18(McpServer.registerTool, Zod input + output schemas, tool annotations)Streamable HTTP (stateless per-request transport) + stdio
Zod runtime validation with
.strict()(rejects unknown keys)structuredContent+outputSchemaon every toolResponse truncation for both markdown (25k chars) and oversized
structuredContentarraysOptional DNS-rebinding protection (
Originheader validation when bound to loopback)
License
MIT
Available Tools
5 toolsmarketing_miner_batch_search_volumeBatch Keyword Search VolumeARead-onlyIdempotentInspect
Fetch volume, CPC, YoY change and 12-month seasonality for up to 1000 keywords in one POST request.
Args:
lang: Market code (cs/sk/pl/hu/ro/gb/us).
keywords: 1-1000 keywords (each 2-80 chars).
response_format: 'markdown' (default) or 'json'.
Returns an array of records, one per keyword. Prefer this over calling marketing_miner_get_search_volume in a loop - it is one API credit per keyword and much faster.
Inputs: lang (required), keywords (required), response_format. Returns: lang, count, keywords
marketing_miner_get_keyword_suggestionsGet Keyword SuggestionsARead-onlyIdempotentInspect
Retrieve related keyword suggestions with optional full metrics (difficulty, SERP features, volume, CPC, seasonality).
Args:
lang: Market code (cs/sk/pl/hu/ro/gb/us).
keyword: Seed keyword (2-80 chars).
suggestions_type (optional): 'questions' | 'new' | 'trending'. Omit for a general mix.
with_keyword_data (default true): include search_volume, cpc, difficulty, serp_features, yoy_change, peak_month, monthly_sv.
limit (default 50, max 1000): client-side window size.
offset (default 0): client-side offset into API results for pagination.
response_format: 'markdown' or 'json'.
Returns: keywords[limit], plus total_available, has_more, next_offset for pagination.
Use for topical research, content-cluster ideation, FAQ mining (suggestions_type='questions'), trend discovery (suggestions_type='trending').
Inputs: lang (required), keyword (required), suggestions_type, with_keyword_data, +3 more. Returns: lang, seed_keyword, suggestions_type, total_available, +6 more
marketing_miner_get_search_volumeGet Keyword Search VolumeARead-onlyIdempotentInspect
Fetch monthly search volume, CPC, year-over-year change, peak month and full 12-month seasonality for a single keyword.
Args:
lang: Market code (cs/sk/pl/hu/ro/gb/us).
keyword: Keyword to analyze (2-80 chars).
response_format: 'markdown' (default) or 'json'.
Returns a single record with: keyword, search_volume, cpc{value, currency_code}, yoy_change, peak_month, monthly_sv (12 months).
Use when you need volume/CPC/seasonality for ONE keyword. For multiple keywords, use marketing_miner_batch_search_volume.
Inputs: lang (required), keyword (required), response_format. Returns: keyword, search_volume, cpc, yoy_change, +2 more
marketing_miner_get_website_statsGet Website StatsARead-onlyIdempotentInspect
Aggregate organic/paid traffic, keyword counts and result-type breakdown for a domain, subdomain, prefix, or exact URL.
Args:
lang: Market code (cs/sk/pl/hu/ro/gb/us).
type: 'domain' | 'subdomain' | 'prefix' | 'exact'.
target: Target value (3-253 chars). Examples: 'seznam.cz', 'blog.seznam.cz', 'https://seznam.cz/email/'.
scheme (optional, for type='exact' or 'prefix'): 'https' | 'http'.
response_format: 'markdown' or 'json'.
Returns: stats[] per result_type (organic, paid, ai_overviews, local_pack, images, videos, ...), plus totals (estimated_traffic_sum, number_of_keywords_sum).
Use for competitor sizing, SEO audits, and SERP-feature distribution analysis.
Inputs: lang (required), type (required), target (required), scheme, +1 more. Returns: stats, estimated_traffic_sum, estimated_traffic_change_sum, number_of_keywords_…
marketing_miner_get_website_stats_rangeGet Website Stats Time RangeARead-onlyIdempotentInspect
Historical traffic time series (daily/weekly/monthly) for a target, with optional competitor comparison.
Args:
lang: Market code.
type: 'domain' | 'subdomain' | 'prefix' | 'exact'.
target: 3-253 chars.
scheme (optional): 'https' | 'http'.
period (optional): 'daily' | 'weekly' | 'monthly'.
competitors (optional, max 10): list of competitor domains/URLs.
response_format: 'markdown' or 'json'.
Returns: stats_range[] (date, result_type, estimated_traffic) + optional competitors[] with their own stats_range. Use for trend analysis, year-over-year charts, and competitor benchmarking.
Inputs: lang (required), type (required), target (required), scheme, +3 more. Returns: stats_range, competitors
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a distinct operation: single vs. batch search volume, keyword suggestions, website stats snapshot vs. historical range. No functional overlap exists.
All tools follow a consistent 'marketing_miner_<action>_<resource>' pattern (e.g., marketing_miner_batch_search_volume, marketing_miner_get_keyword_suggestions). No mixed conventions.
5 tools is well-scoped for a focused SEO data retrieval server, covering keyword research and website analysis without unnecessary bloat.
Covers core workflows: keyword volume (single and batch), suggestions with metrics, website stats (snapshot and historical). Minor gap: no standalone keyword difficulty tool, but difficulty is included in suggestions with_keyword_data.
Maintenance
Related MCP Connectors
30+ marketing data tools for AI agents: keywords, SERP, backlinks, AI visibility, app store & commerce intelligence, Reddit/LinkedIn/Facebook/YouTube research, web search, page extraction, site audit, image & video generation, one-shot marketing apps. Bring your own API key from supamarketers.com — per-tool pricing in Credits.
Real keyword volumes, reviews, creators and local leads in ChatGPT or Claude. No subscription.
SEO research, Search Console, GA4 and PPC tools for Claude and ChatGPT.
Real SEO data for AI assistants: page audits, Keyword Planner volumes, Search Console history.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to SEO APIs for backlinks analysis, keyword research, and traffic analysis.66 npm28MIT
- AlicenseAqualityBmaintenanceConnects App Store and Google Play keyword data to AI assistants, enabling ASO tasks like rank tracking, keyword analysis, competitor visibility, and top charts through natural language.30334 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to query Amazon search volume trends and growth signals for product research and consumer purchase intent analysis.3MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to access self-hosted SEO data and workflows, including keyword research, rank tracking, competitor insights, backlinks, site audits, and AI visibility.MIT