A side-by-side look at the Google Search Console and Seo Stack MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Google Search Console for marketing work as a local process; choose Seo Stack MCP for marketing as a local process. You can also run both side by side in one mcpServers block.
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, TOKEN_ENCRYPTION_KEY.server.capabilities, sites.list, sites.get.GOOGLE_APPLICATION_CREDENTIALS, SEO_STACK_OAUTH_CLIENT, GA4_PROPERTY_ID, GSC_SITE_URL, BING_WEBMASTER_API_KEY, BING_SITE_URL, CLARITY_API_TOKEN, ADSENSE_ACCOUNT_ID.gsc_bulk_inspect_urls, gsc_bulk_request_indexing, gsc_cannibalization_check.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 59/100 · Good | 48/100 · Fair |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETTOKEN_ENCRYPTION_KEY | GOOGLE_APPLICATION_CREDENTIALSSEO_STACK_OAUTH_CLIENTGA4_PROPERTY_IDGSC_SITE_URLBING_WEBMASTER_API_KEYBING_SITE_URLCLARITY_API_TOKENADSENSE_ACCOUNT_ID |
| Verified owner | Community listing | Community listing |
| GitHub stars | 5 | 1 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 10 | 80 |
| Full listing | View Google Search Console | View Seo Stack MCP |
server.capabilitiesList every tool this server exposes and report local Google credential state. `connected` means a stored refresh credential is present; the response also exposes `auth_status_basis` and `provider_auth_live_verified: false` because this discovery call does not probe Google. A later Google tool call…sites.listList the Search Console properties the connected Google account can access (`siteUrl`, `permissionLevel`).sites.getRetrieve one exact Search Console property and the connected account's permission level for it.analytics.queryImpressions, clicks, CTR, and average position over a date range, with dimensions, filters, safe pagination, and selectable search type. Pass `dimensions: []` for true site totals; Google's aggregate row may omit `keys`. Search Analytics does not guarantee every data row and can return only top row…urls.inspectGoogle's URL Inspection report for the version of one page currently known in Google's index. It is not a live URL test; mobile-usability output is deprecated.urls.inspect_manyInspect Google's indexed versions of up to 10 URLs with bounded concurrency of 3 in one call while preserving input-order results. Each URL still consumes one Google URL Inspection request and one unit of the server's shared inspection safety budget; this does not run live URL tests.reports.weekly_digestGenerate a plain-language seven-day performance report with movers, top pages, and one recommended action. Query movers compare only rows returned in both weekly Search Analytics result sets; a query missing from one bounded response is not treated as zero because Google does not guarantee every da…indexing.statusRead Google's latest successful Indexing API `URL_UPDATED` / `URL_DELETED` notification receipts for a previously submitted URL. This is notification metadata only, not index coverage, crawl status, indexing completion, or removal completion. It requires `GSC_ACCESS_MODE=readwrite` because Google's…indexing.requestRequests indexing through Google's Indexing API. Google currently restricts this API to pages containing `JobPosting` structured data or livestream pages containing `BroadcastEvent` inside `VideoObject`. It is not available for general webpage submission. Google's default 200 publish requests/day/p…indexing.removeRequest a `URL_DELETED` notification for a previously eligible Indexing API page. Before removal, the URL must already return HTTP 404/410 or expose a robots `noindex` meta directive. Google's receipt does not prove removal completed; use URL Inspection for indexed-state evidence.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.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": [
"-y",
"@digestseo/mcp-gsc"
],
"env": {
"GOOGLE_CLIENT_ID": "YOUR_GOOGLE_CLIENT_ID_HERE",
"GOOGLE_CLIENT_SECRET": "YOUR_GOOGLE_CLIENT_SECRET_HERE",
"TOKEN_ENCRYPTION_KEY": "YOUR_TOKEN_ENCRYPTION_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"seo-stack-mcp": {
"command": "uvx",
"args": [
"--with",
"google-ads",
"seo-stack-mcp"
],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "YOUR_GOOGLE_APPLICATION_CREDENTIALS_HERE",
"SEO_STACK_OAUTH_CLIENT": "YOUR_SEO_STACK_OAUTH_CLIENT_HERE",
"GA4_PROPERTY_ID": "YOUR_GA4_PROPERTY_ID_HERE",
"GSC_SITE_URL": "YOUR_GSC_SITE_URL_HERE",
"BING_WEBMASTER_API_KEY": "YOUR_BING_WEBMASTER_API_KEY_HERE",
"BING_SITE_URL": "YOUR_BING_SITE_URL_HERE",
"CLARITY_API_TOKEN": "YOUR_CLARITY_API_TOKEN_HERE",
"ADSENSE_ACCOUNT_ID": "YOUR_ADSENSE_ACCOUNT_ID_HERE"
}
}
}
}