GSC, GA4, Bing Webmaster and Microsoft Clarity in one MCP server, with built-in SEO analyst tools
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Seo Stack MCP.
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.
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.
Add to your MCP client config (Claude Desktop claude_desktop_config.json, Cursor mcp.json, or claude mcp add):
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.
| Source | What you need | Where to get it |
|---|---|---|
| GSC + GA4 | Service account JSON (recommended) β GOOGLE_APPLICATION_CREDENTIALS | Google 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_CLIENT | First run opens a browser for consent; refresh token cached in ~/.config/seo-stack-mcp/ |
| Bing | BING_WEBMASTER_API_KEY | Bing Webmaster Tools β Settings β API access |
| Clarity | CLARITY_API_TOKEN | Microsoft Clarity β project β Settings β Data Export API |
| AdSense | Google 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 Planner | GOOGLE_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 PageRank | OPENPAGERANK_API_KEY | Open 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).
| Tool | Description |
|---|---|
gsc_bulk_inspect_urls | Inspect multiple URLs in batch via the URL Inspection API. Max 50 URLs per call. |
gsc_bulk_request_indexing | Request indexing for multiple URLs via the Google Indexing API. Max 50 URLs. |
gsc_cannibalization_check | Find queries where multiple pages compete (keyword cannibalization). Shows queries with 2+ ranking pages. |
gsc_compare_periods | Compare two periods: shows deltas of clicks, impressions, CTR and position per item. |
gsc_content_gap_analysis | Content gap analysis: queries where the competitor ranks but you don't (or you are far behind). |
gsc_country_performance | Performance by country: clicks, impressions, CTR and average position. Default: last 28 days. |
gsc_daily_stats | Aggregated daily site statistics: clicks, impressions, CTR and average position per day. |
gsc_declining_queries | Queries losing clicks/positions: compares last N days vs the equivalent previous period. |
gsc_delete_sitemap | Remove a sitemap from Google Search Console. Requires write scope on the credentials. |
gsc_device_performance | Compare performance across MOBILE vs DESKTOP vs TABLET. Default: last 28 days. |
gsc_indexing_status_summary | Indexing status summary for multiple URLs: how many indexed, not indexed, and errored. |
gsc_inspect_url | Inspect a URL via the Google Search Console URL Inspection API. |
gsc_keyword_opportunities | Queries with high impressions but low CTR in position 5-20: optimization opportunities. |
gsc_list_sitemaps | List all sitemaps of a site in Google Search Console. |
gsc_list_sites | List all Google Search Console properties available to the configured credentials. |
gsc_low_hanging_fruit | Queries in position 3-10 with high impression volume: small optimizations can push them into the top 3. |
gsc_page_trend | Daily trend for a specific page over the last N days (default 90). |
gsc_pages_for_query | Which pages rank for a specific query? Shows all pages with performance data. |
gsc_queries_for_page | Which queries drive traffic to a specific page? Shows all keywords with performance data. |
gsc_query_trend | Daily trend for a specific query over the last N days (default 90). |
gsc_request_indexing | Request indexing of a URL via the Google Indexing API. |
gsc_rising_queries | Rising queries: compares last N days vs the equivalent previous period. |
gsc_search_analytics | Query Search Analytics: clicks, impressions, CTR and position for the requested dimensions. |
gsc_search_analytics_filtered | Search Analytics with advanced filters. Filters: query_contains, query_regex, page_contains, page_regex, country (e.g. 'ita'), device (MOBILE/DESKTOP/TABLET). |
gsc_search_appearance | Performance by SERP result type (rich snippet, video, FAQ, etc.). Default: last 28 days. |
gsc_submit_sitemap | Submit a sitemap to Google Search Console. Requires write scope on the credentials. |
gsc_top_pages | Top pages by clicks or impressions. order_by: clicks, impressions, ctr, position. Default: last 28 days. |
gsc_top_queries | Top queries by clicks or impressions. order_by: clicks, impressions, ctr, position. Default: last 28 days. |
gsc_weekly_report | Automatic weekly report: last 7 days vs previous 7 days metrics with deltas and top queries/pages. |
| Tool | Description |
|---|---|
ga4_compare_periods | Compare two periods with percentage delta on key metrics. |
ga4_conversion_paths | User paths: acquisition source β landing page with sessions and users. |
ga4_events | Top GA4 events with count and number of users. |
ga4_landing_pages | Entry pages (landing pages) with sessions, users and bounce rate. |
ga4_overview | Site overview: users, sessions, pageviews, bounce rate, average session duration. |
ga4_page_performance | Detailed performance of a single page with device and source breakdown. |
ga4_realtime | Realtime report: pages currently being viewed and active users. |
ga4_top_pages | Top pages by traffic with full metrics (pageviews, users, duration, bounce rate). |
ga4_traffic_sources | Traffic breakdown by source/medium (e.g. google/organic, direct/none). |
ga4_user_demographics | User demographics breakdown: country, device, browser, language. |
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/seo-stack-mcp)<a href="https://allmcps.com/mcp/seo-stack-mcp"><img src="https://allmcps.com/api/badge/seo-stack-mcp?style=directory" alt="Seo Stack MCP on AllMCPs" /></a>