Il limite da conoscere subito
Se sei arrivato qui pensando «collego Search Console e gli faccio indicizzare tutto», la risposta va data prima del setup, non dopo: non si può. E non è un limite dell'MCP, è un limite di Google.
L'Indexing API — l'unica API che accetta una richiesta di scansione — è ristretta a due tipi di contenuto. La documentazione ufficiale è di una riga sola e non lascia margini:
«The Indexing API can only be used to crawl pages with either
JobPostingorBroadcastEventembedded in aVideoObject.»
Annunci di lavoro e dirette video. Tutto il resto viene scartato, anche se la chiamata risponde 200. Diffida di qualsiasi server MCP che pubblicizza un «batch submit, 200 URL al giorno» per pagine normali: sta chiamando un endpoint che ignora quelle pagine.
Nemmeno la URL Inspection API indicizza: è in sola lettura. Ti dice cosa Google ha deciso su una URL, non le fa cambiare idea.
Il valore vero sta altrove, ed è più grande: l'MCP ti fa leggere il verdetto di Google, URL per URL. Sapere che 900 pagine sono ferme su «Crawled – currently not indexed» vale più di mille pulsanti «richiedi indicizzazione», perché quel verdetto nomina la causa — e la causa si corregge nel codice.
Cosa ti serve prima di partire
Tre cose, e vale la pena verificarle adesso: ognuna delle tre, se manca, si scopre a metà del setup OAuth, cioè nel punto peggiore.
- property Una property verificata in Search Console, e soprattutto l'account Google che la possiede. Il token OAuth eredita i permessi di quell'account: autorizzare con l'indirizzo sbagliato produce una lista di property vuota e nessun messaggio d'errore utile.
- uv Il server è in Python e si esegue con
uvx, che scarica e aggiorna il pacchetto da solo: niente clone, niente virtualenv. - progetto Un progetto Google Cloud qualsiasi, anche quello di default. Non serve la fatturazione: la Search Console API sta nella quota gratuita.
Il server MCP è AminForou/mcp-gsc, open source. Non è di Google: nell'elenco ufficiale dei server MCP di Google ci sono oltre sessanta servizi Cloud, più Drive, Gmail e Calendar — Search Console non c'è. Un server ufficiale non esiste, e questo è il modo di verificarlo invece di supporlo.
Il client OAuth su Google Cloud
Cinque passi nella console di Google Cloud. Falli in quest'ordine: il terzo, se lo rimandi, ti costa un secondo giro fra sette giorni.
- 1
Abilita la Search Console API
Nella API Library del progetto, cerca «Search Console API» e premi Abilita. È gratis: non serve attivare la fatturazione, e il banner della prova da 300 $ va ignorato.
- 2
Compila la schermata di consenso
Tipo utente Esterno, nome dell'app, email di supporto e di contatto. È la schermata che vedrai tu stesso fra due minuti, non un modulo per Google.
- 3
Pubblica l’app in produzione
Il passo che quasi tutti saltano. Un'app lasciata in stato «Test» produce refresh token che muoiono dopo sette giorni: rifaresti il login ogni settimana. In produzione il token resta valido.
- 4
Dichiara lo scope
Uno solo: webmasters, lettura e scrittura. La scrittura serve a una cosa sola e legittima — inviare o reinviare la sitemap.
- 5
Crea il client, tipo App desktop
Non «Applicazione web». Il flusso usato dall'MCP è quello loopback su localhost, e solo il client desktop lo dichiara. Scarica il JSON: è la credenziale.
Alla fine Google mostrerà un avviso giallo: «la tua app richiede la verifica». Ignoralo. La verifica serve solo a togliere la schermata di allerta e ad alzare il tetto dei 100 utenti. Tu sei un utente, e l'app è tua: al login farai Avanzate → Vai a … (non sicuro), ed è corretto così.
Le due trappole
La chiave del service account è bloccata
Il percorso «ovvio» — service account + chiave JSON — sbatte contro l'organization policy iam.disableServiceAccountKeyCreation, che Google applica di default ai progetti nuovi. Per disattivarla serve il ruolo Organization Policy Administrator a livello di organizzazione; se il progetto sta in «No organization», quell'organizzazione non esiste e non c'è nulla da modificare. Vicolo cieco: usa OAuth.
Il client sbagliato non dà errore
Un client «Applicazione web» scarica un JSON che si apre con la chiave web e senza redirect_uris; quello desktop si apre con installed e contiene http://localhost. L'MCP accetta solo il secondo — e il primo non fallisce al momento del download, fallisce dopo, quando il browser non si apre. Controlla il file prima di andare avanti.
Metti il JSON scaricato dove resterà, fuori dal repo: è una credenziale viva sulla tua Search Console.
mkdir -p ~/.config/gsc
mv ~/Downloads/client_secret_*.json ~/.config/gsc/client_secrets.json
chmod 600 ~/.config/gsc/client_secrets.json Poi verifica di avere il client giusto — trenta secondi che ne fanno risparmiare venti:
python3 -c "import json,os; d=json.load(open(os.path.expanduser('~/.config/gsc/client_secrets.json'))); print(list(d.keys()))"
# -> ['installed'] corretto
# -> ['web'] client sbagliato, rifallo Collegare l’MCP a Claude Code
Un comando solo. --scope local lo registra solo per questo progetto e solo per te: non finisce in un file versionato, che è quello che vuoi per una credenziale personale.
claude mcp add gsc --scope local \
--env GSC_OAUTH_CLIENT_SECRETS_FILE=$HOME/.config/gsc/client_secrets.json \
-- "$(which uvx)" mcp-search-console Poi riavvia Claude Code: i server MCP si caricano all'avvio della sessione, quindi quella in corso non vedrà ancora gli strumenti. Alla prima chiamata si apre il browser, scegli l'account, superi l'avviso di app non verificata e concedi l'accesso. Una volta sola: da lì in poi il token è in cache.
Se il browser non si apre, quasi sempre è il client sbagliato (trappola numero due). Ricontrolla che il JSON si apra con installed e non con web.
Cosa chiedergli il primo giorno
Una ventina di strumenti, ma sei fanno il lavoro. Uno solo scrive: tutti gli altri leggono.
-
list_propertiesElenca le property visibili. Se torna vuoto hai autorizzato con l’account Google sbagliato: è il primo controllo, sempre. -
list_sitemaps_enhancedQuante URL ha letto Google dalla tua sitemap, con errori e avvisi. Il confronto con quante ne emetti è la prima diagnosi. -
manage_sitemapsInvia o rimuove una sitemap. È l’unica azione di scrittura di tutto il set. -
get_search_analyticsQuery, click, impression, CTR, posizione. Filtrabile per pagina, paese, dispositivo. -
compare_search_periodsDue intervalli a confronto: serve a distinguere un calo reale dalla stagionalità. -
batch_url_inspectionIspeziona fino a 10 URL per volta e restituisce il verdetto di Google su ognuna. È lo strumento che conta di più.
L'ordine che funziona è dal generale al singolo. Prima list_properties, per essere certo di parlare del sito giusto. Poi la sitemap: quante URL ne emetti e quante ne ha lette Google — se i due numeri divergono, il problema è lì e non serve guardare altro.
Solo dopo scendi sulle singole pagine. E qui c'è la mossa che cambia il risultato: ispeziona a campioni separati, non a caso. Dieci URL di una sezione, dieci di un'altra, dieci delle lingue secondarie. Un campione casuale ti restituisce una media; tre campioni per gruppo ti dicono quale gruppo è rotto.
Il verdetto che torna va letto alla lettera, perché ogni formula è una causa diversa con una correzione diversa: «Crawled – currently not indexed» punta a contenuto giudicato debole o duplicato; «Discovered – currently not indexed» a un problema di crawl budget; «Duplicate without user-selected canonical» a una canonical che non stai dichiarando come credi. Tre diagnosi, tre interventi. È questa la parte che l'MCP ti fa fare, e che il pulsante «richiedi indicizzazione» non ti farebbe fare mai.
Le fonti (e perché contano)
Questa guida tocca due argomenti dove il ricordo sbaglia spesso: i limiti di un'API e i nomi esatti di pacchetti e variabili. Sono cose da verificare alla fonte ogni volta, quindi la fonte è qui — con il motivo per cui è stata consultata.
- AminForou/mcp-gsc
Il server MCP usato in questa guida. Il README dichiara i nomi esatti del pacchetto e della variabile d'ambiente — che è la parte che non si indovina.
- Indexing API — Quickstart (Google)
La riga che chiude il discorso sull’indicizzazione forzata. Citata testualmente qui sopra perché è il punto su cui gira tutta la guida.
- Search Console API — Authorizing requests (Google)
Il modello di autorizzazione: quali credenziali l’API accetta e con quali permessi della property.
- Google Cloud — MCP supported products
L’elenco ufficiale dei server MCP di Google. Search Console non c’è: è così che si stabilisce che il server ufficiale non esiste, invece di dedurlo.
Una nota di metodo che vale oltre questa guida: l'assenza di una cosa si dimostra con un elenco, non con una ricerca a vuoto. «Non ho trovato un MCP ufficiale di Google» e «Search Console non compare nell'elenco ufficiale dei prodotti con MCP» sembrano la stessa frase. Solo la seconda è una verifica.