Skip to content

Releases: FlorianBruniaux/google-search-console-mcp

v0.6.2 : doc completion

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 25 Jun 08:35

What's New

Documentation-only release.

  • README: What's New section summarizing v0.6.0 (7 new tools) and v0.6.1 (refactor) for users discovering the project
  • README: Troubleshooting section covering the 6 most common setup issues: uvx launch, absolute path auth, GA4 property_id, CrUX API key, Indexing API 403 (Owner permission required), and submit_batch quota warning at 180/200

No code changes. The 43 tools, 282 tests, and all behavior from v0.6.1 are unchanged.

v0.6.1 — Refactor interne + fix entrypoint uvx

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 24 Jun 19:17

Fixes

  • Entrypoint uvx : uvx gsc-mcp-tools échouait avec "executable not provided". Les deux noms (gsc-mcp et gsc-mcp-tools) pointent maintenant sur le même serveur.
  • README : badge tests corrigé (282), 4 tools manquants ajoutés au tableau détaillé (sitemap_audit, crux_page_vitals, crux_history, schema_validate), descriptions Cross traduites.

Refactor (pas de nouveaux tools)

  • auth.py : helper _ga4_creds() pour supprimer la duplication entre les deux clients GA4
  • seo.py : helper _two_periods(days) pour déduplication du calcul de fenêtres dans traffic_drops et seo_lost_queries
  • indexing.py : _submit_batch_impl fusionné dans submit_batch, couche de délégation supprimée
  • sitemaps.py : DefusedXmlException intégré dans l'except interne, bloc externe supprimé
  • cross.py : dicts parallèles remplacés par de l'arithmétique directe dans page_health_score
  • Tests : test_seo_v2.py et test_sitemaps_v2.py fusionnés dans leurs fichiers principaux, test_scaffold.py supprimé

Tests : 268 → 282 | Tools : 43 (inchangé)

v0.5.0

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 23 Jun 16:10

What's new

4 new tools, hostname/country filters on all GA4 tools, 222 tests (55 added). 36 tools total.

New tools

CrUX — real-user Core Web Vitals from the Chrome UX Report API (requires CRUX_API_KEY):

  • crux_page_vitals — LCP, INP, CLS, FCP, TTFB with good/needs_improvement/poor ratings and p75
  • crux_history — 25 weeks of weekly p75 series per metric, for tracking regressions

Sitemaps:

  • sitemap_audit — fetches a sitemap (or sitemap index), parses URLs with defusedxml (prevents XXE/billion-laughs), and cross-references against 90 days of GSC data. Verdicts: empty, fetch_error, partial (>20% URLs not in GSC), healthy

Technical:

  • schema_validate — fetches any public URL, extracts JSON-LD blocks, validates required fields per schema type (Article, LocalBusiness, FAQPage, Product, WebSite...), and suggests missing schemas from URL patterns. No auth required

GA4 filters

All 6 GA4 tools and the 2 cross tools now accept hostname and country parameters. Pass either or both to filter results to a specific subdomain or country without changing anything else.

Security / reliability fixes

  • sitemap_audit: child sitemaps in a sitemap index are validated against the parent's origin (follow_redirects=False) to prevent SSRF via poisoned sitemap index files
  • auth.py: token directory created with 0o700, token file chmod 0o600 after write
  • retry.py: extends exponential backoff to GA4 gRPC errors (ServiceUnavailable, ResourceExhausted, InternalServerError, BadGateway, RetryError) in addition to the existing GSC HTTP errors

New dependencies

  • httpx>=0.27.0 — used by crux_page_vitals, crux_history, sitemap_audit, schema_validate
  • defusedxml>=0.7.1 — used by sitemap_audit for safe XML parsing

Breaking changes

None. All existing tools behave identically when the new parameters are omitted.

v0.4.2 : Multi-property GA4 support

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 22 Jun 21:47

Nouveauté

Tous les tools GA4 et cross acceptent maintenant un paramètre optionnel `property_id`. Quand fourni, il override `GA4_PROPERTY_ID` sans toucher à la config du serveur.

Utile si vous gérez plusieurs sites avec des properties GA4 distinctes depuis une seule instance MCP.

```python

property par défaut (env var)

ga4_traffic_sources(site="sc-domain:example.com")

override par appel

ga4_traffic_sources(site="sc-domain:example.com", property_id="443684366")
traffic_health_check(site="sc-domain:example.com", property_id="443684366")
```

Changements

  • `get_ga4_property_id(override=None)` dans `auth.py`
  • Paramètre `property_id: str = None` sur les 6 tools GA4 et les 2 tools cross
  • 4 nouveaux tests (167 au total)

v0.4.1

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 22 Jun 15:57

Fixes and internal consolidation — no new tools.

Fixed

  • get_capabilities was reporting 18 tools instead of 32 (14 missing since v0.2)
  • inspect_url, batch_url_inspection, check_indexing_issues were raising AttributeError at runtime: they called webmasters/v3 which does not expose urlInspection. Fixed by switching to searchconsole/v1
  • traffic_health_check and page_analysis now include a note field warning about the 3-day GSC reporting lag vs GA4
  • ga4_organic_landing_pages now adds a truncation warning when results hit the limit

Changed

  • All GSC tools consolidated on searchconsole/v1 (drops webmasters/v3). The v1 API exposes the same sites, searchanalytics, sitemaps resources plus urlInspection

Tests

  • Improved quick_wins coverage: zero-CTR detection, impression threshold exclusion, CTR-at-benchmark exclusion

v0.4.0

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 22 Jun 15:57

2 new cross-platform tools (32 total): traffic_health_check (GSC clicks vs GA4 organic sessions ratio, detects tracking gaps) and page_analysis (page-level GSC+GA4 join with opportunity score). URL normalization strips scheme/host/query/trailing slash for reliable cross-source joins.

v0.3.0

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 22 Jun 15:57

6 new GA4 tools (30 total): ga4_organic_landing_pages, ga4_traffic_sources, ga4_page_performance, ga4_realtime, ga4_user_behavior, ga4_conversion_funnel. New dependency: google-analytics-data>=0.18.0. New env var: GA4_PROPERTY_ID (validated lazily, GSC-only users unaffected).

v0.2.0

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 22 Jun 15:57

6 new tools (24 total): analytics_anomalies (Z-score on daily clicks), seo_striking_distance (positions 8-15), seo_cannibalization (HHI conflict score), seo_lost_queries (click drop >= 80%), sitemaps_get, sitemaps_delete (with safety check). No new dependencies.

v0.1.0

Choose a tag to compare

@FlorianBruniaux FlorianBruniaux released this 22 Jun 15:57

First working release: 18 tools covering GSC search analytics, URL inspection, Indexing API (true HTTP batch), sitemaps, and properties. OAuth + Service Account auth. JSON output with _meta block on every response. Retry logic on 429/5xx with exponential backoff. Quota tracking for Indexing API (warns at 180/200 req/day).