GSC, GA4, Bing Webmaster and Microsoft Clarity in one MCP server, with built-in SEO analyst tools
If you already use Seo, the seo mcp server is the piece that lets your assistant work with it directly. GSC, GA4, Bing Webmaster and Microsoft Clarity in one MCP server, with built-in SEO analyst tools.
Self-hosted, free, MIT. Works with Claude Desktop, Claude Code, Cursor, and any MCP client.
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
gsc_bulk_inspect_urls — Inspect multiple URLs in batch via the URL Inspection API. Max 50 URLs per callgsc_bulk_request_indexing — Request indexing for multiple URLs via the Google Indexing API. Max 50 URLsgsc_cannibalization_check — Find queries where multiple pages compete (keyword cannibalization). Shows queries with 2+ ranking pagesgsc_compare_periods — Compare two periods: shows deltas of clicks, impressions, CTR and position per itemgsc_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 daysgsc_daily_stats — Aggregated daily site statistics: clicks, impressions, CTR and average position per daygsc_declining_queries — Queries losing clicks/positions: compares last N days vs the equivalent previous periodgsc_delete_sitemap — Remove a sitemap from Google Search Console. Requires write scope on the credentialsgsc_device_performance — Compare performance across MOBILE vs DESKTOP vs TABLET. Default: last 28 daysgsc_indexing_status_summary — Indexing status summary for multiple URLs: how many indexed, not indexed, and erroredgsc_inspect_url — Inspect a URL via the Google Search Console URL Inspection APIConfiguration is passed through the environment: GOOGLE_APPLICATION_CREDENTIALS, GA4_PROPERTY_ID, BING_WEBMASTER_API_KEY, CLARITY_API_TOKEN, ADSENSE_ACCOUNT_ID, GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_CLIENT_ID, GOOGLE_ADS_CLIENT_SECRET. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
Because this one is hosted, setup is mostly authentication — you point your client at the endpoint and approve access. Nothing runs on your machine, so there is no runtime to keep patched.
This sits in the developer tooling group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Seo's toolset — gsc_bulk_inspect_urls, gsc_bulk_request_indexing, gsc_cannibalization_check and 11 more — is a fair guide to whether it matches your workflow. It is maintained by Raffaele86; worth a glance at recent repository activity before you build anything load-bearing on it.
This entry was verified against Seo's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.
| Tool | What it does |
|---|---|
| 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. |
{
"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"
}
}
}
}Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| GOOGLE_APPLICATION_CREDENTIALS | Configuration value read at startup. | Optional |
| GA4_PROPERTY_ID | Configuration value read at startup. | Optional |
| BING_WEBMASTER_API_KEY | Credential the server authenticates with. | Yes |
| CLARITY_API_TOKEN | Credential the server authenticates with. | Yes |
| ADSENSE_ACCOUNT_ID | Configuration value read at startup. | Optional |
| GOOGLE_ADS_DEVELOPER_TOKEN | Credential the server authenticates with. | Yes |
| GOOGLE_ADS_CLIENT_ID | Configuration value read at startup. | Optional |
| GOOGLE_ADS_CLIENT_SECRET | Credential the server authenticates with. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.