Seo Stack Mcp

io.github.Raffaele86Published by GitHub account Raffaele86v0.2.0Updated Oct 24, 2026

The complete open-source SEO data stack for AI agents: 7 sources, 86 tools, one MCP server

VerifiedSTDIODesktop onlyWeb Search & ScrapingData & Analytics

Overview

AI-generated overview

A self-hosted SEO data MCP server that gives an assistant unified access to Search Console, GA4, Bing, Clarity, AdSense, Keyword Planner and PageRank, plus preb

What you can do
Query Google Search Console performance, inspect URLs, manage sitemaps and request indexing, including cannibalization, content gap and weekly report analyses. Read Google Analytics 4 overviews, landing pages, traffic sources, events, demographics and realtime data. Pull Bing Webmaster traffic, crawl, keyword and backlink data, and submit URLs or sitemaps. Review Microsoft Clarity UX signals such as rage clicks, dead clicks, scroll depth and script errors. Check AdSense earnings, payments, ad units and alerts, and get Keyword Planner ideas and metrics. Look up domain authority scores via Open PageRank.
When to use it
Useful when you work across several free SEO and analytics sources and want one assistant setup instead of separate servers, or when you want server-side analyses like declining queries, low-hanging fruit and period comparisons rather than raw data dumps.
Requirements
Runs locally as a Python package via uvx or pip; needs Python tooling. Each source is optional and enabled by its own credentials: a Google service-account JSON path or OAuth client JSON for Search Console and GA4, plus GA4 property and site URLs; Bing and Clarity API keys; AdSense account ID with Google credentials; Google Ads developer token and OAuth values with the google-ads extra; an Open PageRank key. Network access to the provider APIs.
Before you install
Stores several secrets, including Google Ads client secret, developer token and refresh token, Bing and Clarity keys, and Open PageRank key; a service-account key file grants access to your Google properties. Some tools write to external services: submitting or deleting sitemaps and requesting indexing change live Search Console and Bing state and need write scope. AdSense tools expose revenue and payment data. OAuth tokens are cached locally.

Installation

In SourceWeft

  1. Open Seo Stack Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

seo-stack-mcp

The complete open-source SEO data stack for AI agents. Google Search Console, Google Analytics 4, Bing Webmaster Tools, Microsoft Clarity, Google AdSense, Google Keyword Planner and Open PageRank in a single MCP server — with built-in analyst tools (cannibalization check, low-hanging fruit, content gap, weekly report), not just raw API wrappers.

Self-hosted, free, MIT. Works with Claude Desktop, Claude Code, Cursor, and any MCP client.

Why this instead of N separate servers?

  • One install, one config — instead of wiring up 7 different MCP servers with 7 auth setups.
  • Analyst tools included — ask "which queries are declining this month?" or "find my low-hanging-fruit keywords" and get an answer computed server-side, not a raw data dump your agent has to crunch.
  • Sources are optional — configure only what you use; tools appear only for configured sources.
  • Self-hosted — your tokens stay on your machine. No third-party hosted gateway reading your Search Console.

Quickstart (60 seconds)

Add to your MCP client config (Claude Desktop claude_desktop_config.json, Cursor mcp.json, or claude mcp add):

json
{  "mcpServers": {    "seo-stack": {      "command": "uvx",      "args": ["seo-stack-mcp"],      "env": {        "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json",        "GA4_PROPERTY_ID": "123456789",        "BING_WEBMASTER_API_KEY": "your-key",        "CLARITY_API_TOKEN": "your-token"      }    }  }}

Every env var is optional — set only the sources you want. That's it: restart your client and ask "what are my top queries this week?".

To run the latest development version straight from GitHub, use "args": ["--from", "git+https://github.com/Raffaele86/seo-stack-mcp", "seo-stack-mcp"] instead.

Credentials

SourceWhat you needWhere to get it
GSC + GA4Service account JSON (recommended) → GOOGLE_APPLICATION_CREDENTIALSGoogle Cloud Console → create service account → enable Search Console API + Analytics Data API → add the SA email as a user in GSC / GA4
GSC + GA4 (alt)OAuth desktop client JSON → SEO_STACK_OAUTH_CLIENTFirst run opens a browser for consent; refresh token cached in ~/.config/seo-stack-mcp/
BingBING_WEBMASTER_API_KEYBing Webmaster Tools → Settings → API access
ClarityCLARITY_API_TOKENMicrosoft Clarity → project → Settings → Data Export API
AdSenseGoogle credentials above + ADSENSE_ACCOUNT_ID (accounts/pub-XXXX...)AdSense → Account → Settings → Account information. Enable the AdSense Management API in Google Cloud. If you use OAuth and enable AdSense later, delete the cached token in ~/.config/seo-stack-mcp/ to re-consent with the new scope
Keyword PlannerGOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET, GOOGLE_ADS_REFRESH_TOKEN, GOOGLE_ADS_CUSTOMER_ID (+ GOOGLE_ADS_LOGIN_CUSTOMER_ID under an MCC)Google Ads API Center → developer token (Basic access is enough; API calls are free). Also needs the google-ads extra: uvx --with google-ads seo-stack-mcp or pip install seo-stack-mcp[ads]
Open PageRankOPENPAGERANK_API_KEYOpen PageRank — free API key, 10,000 calls/hour

Optional defaults: GSC_SITE_URL, BING_SITE_URL (so you don't repeat the site on every question), ADSENSE_CURRENCY (default USD), GOOGLE_ADS_LOCATION_ID / GOOGLE_ADS_LANGUAGE_ID (Keyword Planner geo/language defaults, default US / English).

Tools

Google Search Console (29 tools)

ToolDescription
gsc_bulk_inspect_urlsInspect multiple URLs in batch via the URL Inspection API. Max 50 URLs per call.
gsc_bulk_request_indexingRequest indexing for multiple URLs via the Google Indexing API. Max 50 URLs.
gsc_cannibalization_checkFind queries where multiple pages compete (keyword cannibalization). Shows queries with 2+ ranking pages.
gsc_compare_periodsCompare two periods: shows deltas of clicks, impressions, CTR and position per item.
gsc_content_gap_analysisContent gap analysis: queries where the competitor ranks but you don't (or you are far behind).
gsc_country_performancePerformance by country: clicks, impressions, CTR and average position. Default: last 28 days.
gsc_daily_statsAggregated daily site statistics: clicks, impressions, CTR and average position per day.
gsc_declining_queriesQueries losing clicks/positions: compares last N days vs the equivalent previous period.
gsc_delete_sitemapRemove a sitemap from Google Search Console. Requires write scope on the credentials.
gsc_device_performanceCompare performance across MOBILE vs DESKTOP vs TABLET. Default: last 28 days.
gsc_indexing_status_summaryIndexing status summary for multiple URLs: how many indexed, not indexed, and errored.
gsc_inspect_urlInspect a URL via the Google Search Console URL Inspection API.
gsc_keyword_opportunitiesQueries with high impressions but low CTR in position 5-20: optimization opportunities.
gsc_list_sitemapsList all sitemaps of a site in Google Search Console.
gsc_list_sitesList all Google Search Console properties available to the configured credentials.
gsc_low_hanging_fruitQueries in position 3-10 with high impression volume: small optimizations can push them into the top 3.
gsc_page_trendDaily trend for a specific page over the last N days (default 90).
gsc_pages_for_queryWhich pages rank for a specific query? Shows all pages with performance data.
gsc_queries_for_pageWhich queries drive traffic to a specific page? Shows all keywords with performance data.
gsc_query_trendDaily trend for a specific query over the last N days (default 90).
gsc_request_indexingRequest indexing of a URL via the Google Indexing API.
gsc_rising_queriesRising queries: compares last N days vs the equivalent previous period.
gsc_search_analyticsQuery Search Analytics: clicks, impressions, CTR and position for the requested dimensions.
gsc_search_analytics_filteredSearch Analytics with advanced filters. Filters: query_contains, query_regex, page_contains, page_regex, country (e.g. 'ita'), device (MOBILE/DESKTOP/TABLET).
gsc_search_appearancePerformance by SERP result type (rich snippet, video, FAQ, etc.). Default: last 28 days.
gsc_submit_sitemapSubmit a sitemap to Google Search Console. Requires write scope on the credentials.
gsc_top_pagesTop pages by clicks or impressions. order_by: clicks, impressions, ctr, position. Default: last 28 days.
gsc_top_queriesTop queries by clicks or impressions. order_by: clicks, impressions, ctr, position. Default: last 28 days.
gsc_weekly_reportAutomatic weekly report: last 7 days vs previous 7 days metrics with deltas and top queries/pages.

Google Analytics 4 (10 tools)

ToolDescription
ga4_compare_periodsCompare two periods with percentage delta on key metrics.
ga4_conversion_pathsUser paths: acquisition source → landing page with sessions and users.
ga4_eventsTop GA4 events with count and number of users.
ga4_landing_pagesEntry pages (landing pages) with sessions, users and bounce rate.
ga4_overviewSite overview: users, sessions, pageviews, bounce rate, average session duration.
ga4_page_performanceDetailed performance of a single page with device and source breakdown.
ga4_realtimeRealtime report: pages currently being viewed and active users.
ga4_top_pagesTop pages by traffic with full metrics (pageviews, users, duration, bounce rate).
ga4_traffic_sourcesTraffic breakdown by source/medium (e.g. google/organic, direct/none).
ga4_user_demographicsUser demographics breakdown: country, device, browser, language.

Bing Webmaster Tools (22 tools)

ToolDescription
bing_crawl_issuesURLs with crawl problems (4xx/5xx errors, redirects, etc.).
bing_crawl_statsBing crawl statistics: crawled pages, errors, redirects, etc.
bing_keywordBing impression volume for an exact query (impressions + broad).
bing_keyword_statsHistorical statistics for a keyword on Bing: impressions and trend.
bing_link_countsPages with the highest number of backlinks according to Bing.
bing_pages_for_queryPages that rank for a specific query on Bing.
bing_queries_for_pageSearch queries that drive traffic to a specific page.
bing_query_page_detailDetailed statistics for a specific query + page combination.
bing_query_trafficDaily traffic trend for a specific query on Bing.
bing_related_keywordsKeywords related to a search term on Bing, with impression data.
bing_sitemapsList all sitemaps/feeds submitted to Bing.
bing_sitesList all sites verified in the Bing Webmaster Tools account.
bing_submission_quotaCheck the URL submission quota for Bing.
bing_submit_sitemapSubmit a new sitemap/feed to Bing.
bing_submit_urlSubmit a URL to Bing for indexing.
bing_submit_urls_batchSubmit a batch of URLs to Bing for indexing (max 500).
bing_top_pagesTop pages on Bing with clicks, impressions and average position.
bing_top_queriesTop Bing search queries with clicks, impressions and average position.
bing_traffic_statsDaily Bing traffic statistics: clicks and impressions over time.
bing_url_infoIndexing status of a specific URL on Bing.
bing_url_linksInbound backlinks to a specific URL according to Bing.
bing_url_trafficTraffic data for a specific URL on Bing.

Microsoft Clarity (10 tools)

ToolDescription
clarity_breakdownFree-form raw breakdown (1-3 dimensions). Power-user — costs 1 quota unit if not already cached.
clarity_dead_clicksTop URLs with dead clicks (clicks on non-interactive elements — a UX problem signal).
clarity_engagementEngagement Time + Scroll Depth per URL (or another dimension).
clarity_excessive_scrollTop URLs with excessive scrolling (users hunting for info they can't easily find).
clarity_popular_pagesTop URLs by visits over the last days (Popular Pages metric, dimension=URL).
clarity_quickback_clicksTop URLs with quickback clicks (user goes back immediately — page not relevant).
clarity_quota_statusDaily quota status (local counter, does not call the API).
clarity_rage_clicksTop URLs with rage clicks (fast repeated clicks — user frustration).
clarity_script_errorsTop URLs with JS errors + error clicks (technical problems on the page).
clarity_trafficTraffic breakdown from Microsoft Clarity (sessions, bot %, pages per session).

Google AdSense (10 tools)

ToolDescription
adsense_alertsActive alerts on the AdSense account (severity, type, message).
adsense_by_ad_unitPerformance per ad unit: earnings, impressions, clicks, CTR, eCPM.
adsense_by_countryRevenue breakdown by country, sorted by earnings.
adsense_by_platformRevenue breakdown by device platform (Desktop, Mobile, Tablet).
adsense_compare_periodsCompare two periods with percentage deltas on key metrics.
adsense_earnings_by_dateDaily earnings with total, average and trend.
adsense_earnings_overviewEarnings overview: estimated earnings, page views, impressions, clicks, RPM, CTR.
adsense_paymentsRecent payments on the AdSense account.
adsense_sitesSites linked to the AdSense account (domain, state, auto-ads).
adsense_top_pagesTop URL channels by revenue (requires URL channels configured in AdSense).

Google Keyword Planner (4 tools)

ToolDescription
kp_historical_metricsReal historical Keyword Planner metrics for a list of known keywords.
kp_keyword_ideasKeyword ideas with real metrics: volume, competition, top-of-page bids, 12-month volumes.
kp_statusSource status: library, credential completeness (masked) and live connection test.
kp_suggest_geo_targetResolve a location name to its geo target constant ID.

Open PageRank (1 tool)

ToolDescription
pagerank_scoreDomain authority score (0-10) for up to 100 domains per call, with a local 30-day cache.

Why not the official GA4 server or mcp-gsc?

Both are good and this project doesn't pretend otherwise. Google's official analytics-mcp covers GA4 only; mcp-gsc covers GSC only. If you live in one data source, use them. This project is for people who work across the whole free SEO stack and want the cross-source workflow (GSC + GA4 + Bing + Clarity) plus opinionated analysis tools in one place.

See also

local-leads-mcp — the prospecting counterpart: find local businesses with no website via OpenStreetMap and verify them, no API keys needed.

License

MIT.


Built and maintained by Raffaele Nocera — freelance web & SEO. Available for consulting.

Source: README.md at commit 3e18f79

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts