SEO Stack MCP server
io.github.Raffaele86/seo-stack-mcp·v0.2.0·1 starsThe complete open-source SEO data stack for AI agents: 7 sources, 86 tools, one MCP server
1 stars46 downloads/wk
Reviews
Write oneNobody has reviewed SEO Stack yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
SEO Stack tools (86, 5 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
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. Period 1 = current, period 2 = baseline. Dates in YYYY-MM-DD.
adsense_earnings_by_dateDaily AdSense earnings with total, average and trend. Pass start_date/end_date (YYYY-MM-DD) or days (default 28).
adsense_earnings_overviewAdSense earnings overview: estimated earnings, page views, impressions, clicks, RPM and CTR, aggregated over the last N days (default 28).
adsense_paymentsRecent payments on the AdSense account (date, amount, id).
adsense_sitesSites linked to the AdSense account (domain, state, auto-ads).
adsense_top_pagesTop URL channels by revenue (dimension: URL_CHANNEL_NAME). Requires URL channels configured in AdSense.
bing_crawl_issuesURLs with crawl problems (4xx/5xx errors, redirects, etc.). site_url: site URL. limit: max results.
bing_crawl_statsBing crawl statistics: crawled pages, errors, redirects, etc. site_url: site URL (default: BING_SITE_URL env var).
bing_keywordBing impression volume for an exact query (impressions + broad). query: exact term. days: lookback period in days. Note: country must be lowercase (e.g. "us", not "US"); language is a locale code (e.g. "en-US").
bing_keyword_statsHistorical statistics for a keyword on Bing: impressions and trend. keyword: term to analyze. country: lowercase country code (e.g. "us"). language: locale code (e.g. "en-US").
bing_link_countsPages with the highest number of backlinks according to Bing. site_url: site URL (default: BING_SITE_URL env var).
bing_pages_for_queryPages that rank for a specific query on Bing. query: search term to analyze.
bing_queries_for_pageSearch queries that drive traffic to a specific page. page: full page URL (e.g. https://example.com/some-page).
bing_query_page_detailDetailed statistics for a specific query + page combination. query: search term. page: full page URL.
bing_query_trafficDaily traffic trend for a specific query on Bing. query: search term to analyze.
bing_related_keywordsKeywords related to a search term on Bing, with impression data. keyword: seed term. days: lookback period in days.
bing_sitemapsList all sitemaps/feeds submitted to Bing. site_url: site URL (default: BING_SITE_URL env var).
bing_sitesList all sites verified in the Bing Webmaster Tools account.
bing_submission_quotaCheck the URL submission quota for Bing. Shows the daily and monthly quotas (limits).
bing_submit_sitemapwrite actionSubmit a new sitemap/feed to Bing. feed_url: sitemap URL (e.g. https://example.com/sitemap.xml).
bing_submit_urlwrite actionSubmit a URL to Bing for indexing. url: full URL to submit.
bing_submit_urls_batchwrite actionSubmit a batch of URLs to Bing for indexing (max 500). urls: list of full URLs to submit.
bing_top_pagesTop pages on Bing with clicks, impressions and average position. site_url: site URL (default: BING_SITE_URL env var). limit: max results.
bing_top_queriesTop Bing search queries with clicks, impressions and average position. site_url: site URL (default: BING_SITE_URL env var). limit: max results.
bing_traffic_statsDaily Bing traffic statistics: clicks and impressions over time. site_url: site URL. days: last N days to show.
bing_url_infoIndexing status of a specific URL on Bing. url: full URL to check.
bing_url_linksInbound backlinks to a specific URL according to Bing. url: full URL to find backlinks for.
bing_url_trafficTraffic data for a specific URL on Bing. url: full URL to analyze.
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).
ga4_compare_periodsCompare two periods with percentage delta on key metrics. Period 1 is the current period, Period 2 is the comparison (previous) one. Dates in YYYY-MM-DD format. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_conversion_pathsUser paths: acquisition source → landing page with sessions and users. Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_eventsTop GA4 events with count and number of users. Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_landing_pagesEntry pages (landing pages) with sessions, users and bounce rate. Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_overviewSite overview: users, sessions, pageviews, bounce rate, average session duration. Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_page_performanceDetailed performance of a single page with device and source breakdown. page_path: page path (e.g. '/pricing'). Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_realtimeRealtime report: pages currently being viewed and active users. No date parameters required. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_top_pagesTop pages by traffic with full metrics (pageviews, users, duration, bounce rate). Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_traffic_sourcesTraffic breakdown by source/medium (e.g. google/organic, direct/none). Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
ga4_user_demographicsUser demographics breakdown: country, device, browser, language. Dates in YYYY-MM-DD format or 'NdaysAgo', 'yesterday', 'today'. property_id: GA4 property ID (e.g. '123456789'); defaults to GA4_PROPERTY_ID env var.
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. WARNING: Google enforces a daily limit of ~200 requests. Requires the indexing scope.
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. Useful for month-over-month or week-over-week comparisons.
gsc_content_gap_analysisContent gap analysis: queries where the competitor ranks but you don't (or you are far behind). Requires the competitor property to be verified in your GSC account (e.g. another of your properties).
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_sitemapwrite actionRemove 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. These keywords have visibility but don't get clicked — improve title/meta description.
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. Sorted by potential extra clicks.
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. Requires the indexing scope on the credentials.
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. Available dimensions: query, page, country, device, searchAppearance, date.
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_sitemapwrite actionSubmit 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.
kp_historical_metricsREAL historical Keyword Planner metrics for a list of known keywords.
kp_keyword_ideasKeyword ideas with REAL Google Keyword Planner metrics.
kp_statusKeyword Planner source status: google-ads library, credential completeness (masked) and a live connection test. Never fakes data: it states explicitly what is configured and what is not.
kp_suggest_geo_targetResolve a location name to its geo target constant ID (use the ID as location_id in the other kp_* tools).
pagerank_scoreDomain authority score (0-10) via Open PageRank.
Public scan report
scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it
- Code scan27 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 68 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How SEO Stack compares
Against every graded SEO MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 78/100
- higher than 57% of 769 SEO servers
- Tools
- 86
- the typical SEO server has 6
- Tools that change things
- 6%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 405 SEO servers
- Downloads a week
- 46
- more than 38% of 170 SEO servers with a package
What its tools let an agent do: 81 read · 5 change
Install SEO Stack in Claude Code, Cursor or VS Code
claude mcp add seo-stack-mcp -- uvx seo-stack-mcp
What the publisher says
From the SEO Stack repository's README, as published. We do not edit it. Read it on GitHub
seo-stack-mcp
<!-- mcp-name: io.github.Raffaele86/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 claudedesktopconfig.json, Cursor mcp.json, or claude mcp add):
{
"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
Optional defaults: GSCSITEURL, BINGSITEURL (so you don't repeat the site on every question), ADSENSECURRENCY (default USD), GOOGLEADSLOCATIONID / GOOGLEADSLANGUAGE_ID (Keyword Planner geo/language defaults, default US / English).
Tools
Google Search Console (29 tools)
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
SEO Stack: common questions
- Is SEO Stack MCP server safe?
- Mostly: it is graded B (78/100). Read the SEO Stack safety report
- How do I install SEO Stack?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does SEO Stack need an API key?
- Yes. The registry entry asks for
BING_WEBMASTER_API_KEY,CLARITY_API_TOKEN,GOOGLE_ADS_DEVELOPER_TOKEN,GOOGLE_ADS_CLIENT_SECRETand 2 more. - Is SEO Stack maintained?
- The last commit was 108 days ago (2026-07-19). The latest release is v0.2.0.
- What can I use instead of SEO Stack?
- Servers from other publishers that do the same job: SEO Skill MCP server, Google Ads + Meta Ads + SEO/GEO MCP server and SEO Monster MCP server.
- How does SEO Stack compare with other SEO MCP servers?
- safety score 78/100 (higher than 57% of 769 SEO servers); tools 86 (the typical SEO server has 6); tools that change things 6% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to SEO Stack
Same job from other publishers: the closest match first, then the best rated.
SEO SkillFree Google Search Console MCP: your real GSC, Google Analytics and keyword data for AI agents.not reviewedEstablishedA
Google Ads + Meta Ads + SEO/GEO MCPGoogle Ads, Meta Ads, Google Analytics (GA4) & Search Console MCP server by Ryze AInot reviewedEstablishedA
SEO MonsterLocal-first SEO MCP: track AI citations, Search Console, GA4, PageSpeed, Cloudflare, IndexNow, CrUX.not reviewedEstablishedA- Search Console MCPGoogle Search Console + Bing + GA4 + AdSense — unified SEO intelligence for AI agents.not reviewedEstablishedC
- SEO Audit ConsoleTechnical SEO in Claude: GSC + crawl + DataForSEO - audit, portfolio, market sizing, content recon.not reviewedEstablishedA