SEO Radar MCP
9 endpoints live 0 keys MIT

The search market, plotted live.

An MCP server that reads what people type, what they click and what the page behind the result looks like. Trends, autocomplete, result pages and page audits, all read at request time. Each answer carries the name of its source, so an agent cannot quote an estimate as a measurement.

endpoints 9 public
tools 6 live, 3 aliases
key none
install bunx @qexle/seo-mcp@0.3.0
signal trace, schematic 21 oct 2026 · 04:44 utc
google suggest bing duckduckgo trends wikipedia now
each source carries a deadline; the server skips a stalled endpoint and reports it silent the first request includes dns and tls, so warm answers land in seconds

What the agent gets

Six tools, each answering a question a writer or a growth team asks in a normal week. None needs an account or a key.

tool evidence question it answers
get_trending trends What people are searching for right now, filtered to a niche
get_keyword_research autocomplete Which keyword candidates are real, and the slot each one holds
get_serp_snapshot serp Who ranks today, the news pack beside them, how contested the term is
get_technical_audit http What is wrong with the page in front of a crawler
get_backlinks estimate Which pages link to the domain, confirmed by reading them
get_traffic estimate Referring domains, confirmed backlinks, the pages the engine shows

Receipts

I captured these from a cold process on 21 October 2026, then trimmed the keyword and result page receipts for length.

get_keyword_research 12.7 s · seed: technical seo audit
{
  "candidates": [
    { "keyword": "technical seo audit", "autocomplete_rank": 1,
      "engines": ["google", "bing", "duckduckgo"], "intent": "informational" },
    { "keyword": "technical seo audit checklist", "autocomplete_rank": 2,
      "engines": ["google", "bing", "duckduckgo"], "intent": "informational" },
    { "keyword": "technical seo audit software", "autocomplete_rank": 2,
      "engines": ["bing", "duckduckgo"], "intent": "commercial" }
  ],
  "engines_answered": ["google", "bing", "duckduckgo"],
  "engines_silent": [],
  "source": "autocomplete"
}
get_serp_snapshot 15.0 s · keyword: running shoes
{
  "results": [
    { "position": 1, "title": "Running - Wikipedia", "domain": "en.wikipedia.org" },
    { "position": 2, "title": "Runner's World", "domain": "runnersworld.com" }
  ],
  "difficulty_estimate": {
    "score": 13, "method": "serp_composition", "confidence": "low",
    "components": { "authority_share": 0.25, "distinct_domains": 4, "results": 4 }
  },
  "source": "serp"
}
get_technical_audit 7.5 s · https://example.com
{
  "status": 200, "https": true, "response_ms": 7531,
  "title": "Example Domain", "word_count": 25,
  "checks": [
    { "name": "title",           "status": "pass", "detail": "title is 14 characters" },
    { "name": "meta_description", "status": "fail", "detail": "meta description is 0 characters" },
    { "name": "canonical",        "status": "warn", "detail": "no canonical link found" },
    { "name": "h1",                "status": "fail", "detail": "0 h1 headings" }
  ],
  "score": 42,
  "source": "http"
}

What the keyless path cannot give you

The server prints these limits so an agent does not quote a number it cannot back up.

Monthly search volume stays out. It needs clickstream and advertising data that no public endpoint exposes. The autocomplete position takes its place: a real measure of how strongly people type a term.

The backlink index is a sample. The keyless path finds pages that mention the domain and confirms each link by fetching the page. It finds fewer links, takes longer, and each link it reports is one it read.

Traffic comes back as reach. Without a CapSolver key, get_traffic returns confirmed backlinks, referring domains and indexed pages. The visit count is missing, and the response says so.

Install

One command, and the package ships ready to run. It needs Bun 1.3 or newer.

$ bunx @qexle/seo-mcp@0.3.0

claude code

claude mcp add seo-radar \
  -- bunx @qexle/seo-mcp@0.3.0

opencode

opencode mcp add seo-radar \
  -- bunx @qexle/seo-mcp@0.3.0

claude desktop

{
  "mcpServers": {
    "seo-radar": {
      "command": "bunx",
      "args": ["@qexle/seo-mcp@0.3.0"]
    }
  }
}

Where the data comes from

Nine public endpoints. A CapSolver key is optional and only adds the Ahrefs path.

google suggest keyword candidates no key
bing autosuggest keyword candidates no key
duckduckgo autocomplete keyword candidates no key
google trends daily feed trending searches no key
wikipedia top pageviews trending topics no key
duckduckgo lite result pages, link discovery no key
bing web and news feeds result page fallback, news no key
google news feed news pack no key
page read audits, link confirmation no key
pagespeed insights core web vitals quota limited
ahrefs free tool backlinks, ideas, difficulty, traffic capsolver key