{
  "markdown": "# Marketing Miner MCP Server\n\nMCP server for the [Marketing Miner Profilers API](https://profilers-api.marketingminer.com/docs). Connects Claude, Cursor, Windsurf and other MCP clients to Marketing Miner keyword research and website analytics.\n\n## Available tools\n\n| Tool | Endpoint | Description |\n|---|---|---|\n| `marketing_miner_get_search_volume` | `GET /keywords/search-volume-data` | Search volume + CPC + YoY + seasonality for a single keyword |\n| `marketing_miner_batch_search_volume` | `POST /keywords/search-volume-data` | Batch processing of 1–1000 keywords |\n| `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. |\n| `marketing_miner_get_website_stats` | `GET /websites/stats` | Estimated traffic, keyword count, breakdown by result_type |\n| `marketing_miner_get_website_stats_range` | `GET/POST /websites/stats-range` | Historical traffic trend + competitor comparison |\n\nEvery 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.\n\n## Installation\n\nGet an API token from [marketingminer.com/en/features/api](https://www.marketingminer.com/en/features/api), then pick one of the options below.\n\n### Option A — Claude Code CLI one-liner (recommended, cross-platform)\n\nWorks on macOS, Windows and Linux — Claude Code CLI handles the config file location for you.\n\n```bash\nclaude mcp add marketing-miner \\\n  -s user \\\n  -e MARKETING_MINER_API_TOKEN=YOUR_TOKEN \\\n  -- npx -y github:lukaskostka/marketing-miner-mcp\n```\n\n- `-s user` → installs globally (available from any project)\n- `-e` → sets the API token as environment variable\n- Replace `YOUR_TOKEN` with your actual Marketing Miner API token\n\nTo remove later: `claude mcp remove marketing-miner -s user`.\n\n### Option B — `npx` straight from GitHub (no clone needed)\n\nThe repo ships the built `dist/` folder, so `npx` can run it directly.\n\n**Claude Desktop / Cursor / Windsurf config:**\n```json\n{\n  \"mcpServers\": {\n    \"marketing-miner\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"github:lukaskostka/marketing-miner-mcp\"],\n      \"env\": {\n        \"MCP_TRANSPORT\": \"stdio\",\n        \"MARKETING_MINER_API_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\n### Option C — clone the repo (for development / customization)\n\n```bash\ngit clone https://github.com/lukaskostka/marketing-miner-mcp.git\ncd marketing-miner-mcp\nnpm install\nnpm run build\n```\n\nThen point your MCP client at the built binary:\n```json\n{\n  \"mcpServers\": {\n    \"marketing-miner\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/marketing-miner-mcp/dist/index.js\"],\n      \"env\": {\n        \"MCP_TRANSPORT\": \"stdio\",\n        \"MARKETING_MINER_API_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\nRun 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).\n\n### Option D — Docker (self-hosted HTTP)\n\n```bash\ngit clone https://github.com/lukaskostka/marketing-miner-mcp.git\ncd marketing-miner-mcp\ndocker build -t marketing-miner-mcp .\ndocker run -p 8000:8000 -e MARKETING_MINER_API_TOKEN=your_token_here marketing-miner-mcp\n```\n\nConnect from a remote client via Streamable HTTP URL (see *Connecting from an MCP client* below).\n\n## Configuration\n\n| Variable | Default | Description |\n|---|---|---|\n| `MARKETING_MINER_API_TOKEN` | — | **Required.** API token from [marketingminer.com/en/features/api](https://www.marketingminer.com/en/features/api) |\n| `MCP_TRANSPORT` | `stdio` | `stdio` (local MCP clients) or `http` (Streamable HTTP for hosted deployments) |\n| `HOST` | `0.0.0.0` | HTTP bind host |\n| `PORT` | `8000` | HTTP port |\n| `MCP_HTTP_PATH` | `/mcp` | HTTP path |\n\nAlternative token names: `MARKETING_MINER_API_KEY`, `MARKETING_MINER_TOKEN`, `MM_API_TOKEN`, `MM_API_KEY`.\n\n## Remote HTTP client config\n\nIf you are running the server over Streamable HTTP (Option D above or any remote host), MCP clients connect via URL only:\n\n```json\n{\n  \"mcpServers\": {\n    \"marketing-miner\": {\n      \"url\": \"https://your-host.example.com/mcp\"\n    }\n  }\n}\n```\n\n## Usage examples\n\n**1. Search volume for a single keyword:**\n> \"What is the search volume and seasonality of `marketing` in CZ?\" → `marketing_miner_get_search_volume({lang:\"cs\", keyword:\"marketing\"})`\n\n**2. Batch processing:**\n> \"Compare search volume of SEO terms\" → `marketing_miner_batch_search_volume({lang:\"cs\", keywords:[\"seo\",\"ppc\",\"google ads\",\"content marketing\"]})`\n\n**3. Question research for FAQ:**\n> \"Find questions around `hypoteka`\" → `marketing_miner_get_keyword_suggestions({lang:\"cs\", keyword:\"hypoteka\", suggestions_type:\"questions\", limit:50})`\n\n**4. Paginating suggestions:**\n> Fetch next page → `marketing_miner_get_keyword_suggestions({lang:\"cs\", keyword:\"hypoteka\", limit:50, offset:50})`\n\n**5. Competitor analysis:**\n> \"How much traffic does seznam.cz get?\" → `marketing_miner_get_website_stats({lang:\"cs\", type:\"domain\", target:\"seznam.cz\"})`\n\n**6. Competitor trends:**\n> \"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\"]})`\n\n## Supported markets\n\n`cs`, `sk`, `pl`, `hu`, `ro`, `gb`, `us`\n\n## Architecture\n\n- Node 18+, TypeScript (strict), ESM\n- MCP SDK `^1.18` (`McpServer.registerTool`, Zod input + output schemas, tool annotations)\n- Streamable HTTP (stateless per-request transport) + stdio\n- Zod runtime validation with `.strict()` (rejects unknown keys)\n- `structuredContent` + `outputSchema` on every tool\n- Response truncation for both markdown (25k chars) and oversized `structuredContent` arrays\n- Optional DNS-rebinding protection (`Origin` header validation when bound to loopback)\n\n## License\n\nMIT\n",
  "bytes": 6008,
  "sha": "3a04ba5be3a1450c211563bf49455469f382f293d69aaf6f4e6e64f3a567327c",
  "repo_slug": "lukaskostka99/marketing-miner-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_smithery_lukaskostka99_marketing_mine_9442b2e4/readme"
}