Skip to main content
Glama
Marketing Miner MCP

Marketing Miner MCP

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

marketing_miner_get_search_volume

GET /keywords/search-volume-data

Search volume + CPC + YoY + seasonality for a single keyword

marketing_miner_batch_search_volume

POST /keywords/search-volume-data

Batch processing of 1–1000 keywords

marketing_miner_get_keyword_suggestions

GET /keywords/suggestions

Keyword suggestions (questions / new / trending) with difficulty and SERP features. Supports limit + offset with has_more / next_offset in the response.

marketing_miner_get_website_stats

GET /websites/stats

Estimated traffic, keyword count, breakdown by result_type

marketing_miner_get_website_stats_range

GET/POST /websites/stats-range

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.

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 variable

  • Replace YOUR_TOKEN with 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 build

Then 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-mcp

Connect from a remote client via Streamable HTTP URL (see Connecting from an MCP client below).

Configuration

Variable

Default

Description

MARKETING_MINER_API_TOKEN

—

Required. API token from marketingminer.com/en/features/api

MCP_TRANSPORT

stdio

stdio (local MCP clients) or http (Streamable HTTP for hosted deployments)

HOST

0.0.0.0

HTTP bind host

PORT

8000

HTTP port

MCP_HTTP_PATH

/mcp

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 marketing in 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 + outputSchema on every tool

  • Response truncation for both markdown (25k chars) and oversized structuredContent arrays

  • Optional DNS-rebinding protection (Origin header validation when bound to loopback)

License

MIT

Available Tools

5 tools
marketing_miner_batch_search_volumeBatch Keyword Search VolumeA
Read-onlyIdempotent
Inspect

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 SuggestionsA
Read-onlyIdempotent
Inspect

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 VolumeA
Read-onlyIdempotent
Inspect

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 StatsA
Read-onlyIdempotent
Inspect

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 RangeA
Read-onlyIdempotent
Inspect

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

    A4.7/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool targets a distinct operation: single vs. batch search volume, keyword suggestions, website stats snapshot vs. historical range. No functional overlap exists.

    Naming Consistency5/5

    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.

    Tool Count5/5

    5 tools is well-scoped for a focused SEO data retrieval server, covering keyword research and website analysis without unnecessary bloat.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Connects AI assistants to SEO APIs for backlinks analysis, keyword research, and traffic analysis.
      66 npm
      28
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Connects 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.
      30
      334 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to access self-hosted SEO data and workflows, including keyword research, rank tracking, competitor insights, backlinks, site audits, and AI visibility.
      MIT