Limita de știut de la început
Dacă ai ajuns aici gândind „conectez Search Console și pun totul la indexat”, răspunsul trebuie dat înainte de configurare, nu după: nu se poate. Și nu e o limită a MCP-ului, e o limită a Google.
Indexing API — singurul API care acceptă o cerere de crawl — e restricționat la două tipuri de conținut. Documentația oficială e un singur rând și nu lasă loc de interpretare:
„The Indexing API can only be used to crawl pages with either
JobPostingorBroadcastEventembedded in aVideoObject.”
Anunțuri de job și transmisiuni live. Restul e aruncat, chiar dacă apelul răspunde 200. Fii sceptic față de orice server MCP care promite „batch submit, 200 URL-uri pe zi” pentru pagini obișnuite: apelează un endpoint care ignoră acele pagini.
Nici URL Inspection API nu indexează: e doar pentru citire. Îți spune ce a decis Google despre un URL, nu îl face să se răzgândească.
Valoarea reală e în altă parte și e mai mare: MCP-ul îți dă verdictul Google, URL cu URL. Să știi că 900 de pagini stau blocate pe „Crawled – currently not indexed” valorează mai mult decât o mie de butoane „cere indexare”, fiindcă acel verdict numește cauza — iar cauza se corectează în cod.
Ce îți trebuie înainte
Trei lucruri, și merită verificate acum: fiecare, dacă lipsește, iese la iveală la jumătatea configurării OAuth, adică în cel mai prost moment.
- property O property verificată în Search Console și, mai ales, contul Google care o deține. Tokenul OAuth moștenește permisiunile acelui cont: autorizarea cu adresa greșită întoarce o listă goală și nicio eroare utilă.
- uv Serverul e în Python și rulează cu
uvx, care descarcă și actualizează pachetul singur: fără clonare, fără virtualenv. - proiect Orice proiect Google Cloud, inclusiv cel implicit. Fără facturare: Search Console API intră în cota gratuită.
Serverul MCP e AminForou/mcp-gsc, open source. Nu e al Google: în lista oficială a serverelor MCP Google sunt peste șaizeci de servicii Cloud, plus Drive, Gmail și Calendar — Search Console nu apare. Un server oficial nu există, iar așa se verifică, nu se presupune.
Clientul OAuth în Google Cloud
Cinci pași în consola Google Cloud. Fă-i în această ordine: dacă amâni pasul al treilea, te costă un al doilea drum peste șapte zile.
- 1
Activează Search Console API
În API Library a proiectului, caută „Search Console API” și apasă Enable. E gratuit: nu ai nevoie de facturare, iar bannerul cu proba de 300 $ poate fi ignorat.
- 2
Completează ecranul de consimțământ
Tip utilizator Extern, numele aplicației, emailul de suport și cel de contact. E ecranul pe care îl vei vedea tu peste două minute, nu un formular pentru Google.
- 3
Publică aplicația în producție
Pasul pe care aproape toți îl sar. O aplicație lăsată în „Testing” emite refresh tokenuri care mor după șapte zile: ai reface autentificarea săptămânal. În producție tokenul rămâne valid.
- 4
Declară scope-ul
Unul singur: webmasters, citire și scriere. Partea de scriere servește exact unui singur scop legitim — trimiterea sau retrimiterea sitemap-ului.
- 5
Creează clientul, tip Desktop app
Nu „Web application”. MCP-ul folosește fluxul loopback pe localhost, iar doar clientul desktop îl declară. Descarcă JSON-ul: acela e credențialul.
La final Google afișează un banner galben: „aplicația ta necesită verificare”. Ignoră-l. Verificarea doar elimină ecranul de avertizare și ridică plafonul de 100 de utilizatori. Tu ești un utilizator, iar aplicația e a ta: la autentificare vei apăsa Avansat → Accesează … (nesigur), și e corect așa.
Cele două capcane
Cheia de service account e blocată
Calea „evidentă” — service account plus cheie JSON — se lovește de politica de organizație iam.disableServiceAccountKeyCreation, pe care Google o aplică implicit proiectelor noi. Dezactivarea cere rolul Organization Policy Administrator la nivel de organizație; dacă proiectul stă în „No organization”, acea organizație nu există și nu ai ce modifica. Fundătură: folosește OAuth.
Clientul greșit nu dă eroare
Un client „Web application” descarcă un JSON cu cheia web și fără redirect_uris; cel desktop are cheia installed și conține http://localhost. MCP-ul îl acceptă doar pe al doilea — iar primul nu eșuează la descărcare, ci mai târziu, când browserul nu se deschide. Verifică fișierul înainte să mergi mai departe.
Pune JSON-ul descărcat acolo unde va rămâne, în afara repo-ului: e un credențial viu pentru Search Console-ul tău.
mkdir -p ~/.config/gsc
mv ~/Downloads/client_secret_*.json ~/.config/gsc/client_secrets.json
chmod 600 ~/.config/gsc/client_secrets.json Apoi verifică dacă ai clientul corect — treizeci de secunde care salvează douăzeci de minute:
python3 -c "import json,os; d=json.load(open(os.path.expanduser('~/.config/gsc/client_secrets.json'))); print(list(d.keys()))"
# -> ['installed'] corect
# -> ['web'] client greșit, refă-l Conectarea MCP-ului la Claude Code
O singură comandă. --scope local îl înregistrează doar pentru acest proiect și doar pentru tine: nu ajunge într-un fișier versionat, exact ce vrei pentru un credențial personal.
claude mcp add gsc --scope local \
--env GSC_OAUTH_CLIENT_SECRETS_FILE=$HOME/.config/gsc/client_secrets.json \
-- "$(which uvx)" mcp-search-console Apoi repornește Claude Code: serverele MCP se încarcă la pornirea sesiunii, deci cea în curs nu va vedea încă instrumentele. La primul apel se deschide browserul, alegi contul, treci de avertismentul de aplicație neverificată și acorzi accesul. O singură dată: de acolo tokenul rămâne în cache.
Dacă browserul nu se deschide, aproape mereu e clientul greșit (capcana a doua). Verifică din nou ca JSON-ul să aibă cheia installed, nu web.
Ce să îi ceri în prima zi
Vreo douăzeci de instrumente, dar șase fac treaba. Exact unul scrie; toate celelalte citesc.
-
list_propertiesListează property-urile vizibile. Un rezultat gol înseamnă că ai autorizat cu contul Google greșit: e prima verificare, mereu. -
list_sitemaps_enhancedCâte URL-uri a citit Google din sitemap, cu erori și avertismente. Comparația cu câte emiți e primul diagnostic. -
manage_sitemapsTrimite sau șterge un sitemap. Singura acțiune de scriere din tot setul. -
get_search_analyticsInterogări, clickuri, afișări, CTR, poziție. Filtrabile după pagină, țară, dispozitiv. -
compare_search_periodsDouă intervale comparate: ce separă o scădere reală de sezonalitate. -
batch_url_inspectionInspectează până la 10 URL-uri odată și întoarce verdictul Google pentru fiecare. Cel care contează cel mai mult.
Ordinea care funcționează merge de la general la URL-ul singular. Întâi list_properties, ca să fii sigur că vorbești despre site-ul corect. Apoi sitemap-ul: câte URL-uri emiți față de câte a citit Google — dacă cele două numere diferă, acolo e problema și nu mai trebuie căutat altundeva.
Abia apoi cobori la pagini individuale. Și aici e mișcarea care schimbă rezultatul: inspectează pe eșantioane separate, nu la întâmplare. Zece URL-uri dintr-o secțiune, zece din alta, zece din limbile secundare. Un eșantion aleatoriu îți dă o medie; trei eșantioane pe grup îți spun care grup e stricat.
Verdictul se citește literal, fiindcă fiecare formulare e o cauză diferită cu o corecție diferită: „Crawled – currently not indexed” arată spre conținut considerat subțire sau duplicat; „Discovered – currently not indexed” spre o problemă de crawl budget; „Duplicate without user-selected canonical” spre o canonical pe care nu o declari cum crezi. Trei diagnostice, trei intervenții. Asta e partea pe care ți-o deschide MCP-ul — și pe care un buton „cere indexare” nu ți-ar da-o niciodată.
Sursele (și de ce contează)
Ghidul atinge două zone unde memoria greșește constant: limitele unui API și numele exacte ale pachetelor și variabilelor. Ambele se verifică la sursă de fiecare dată — așa că sursele sunt aici, fiecare cu motivul consultării.
- AminForou/mcp-gsc
Serverul MCP folosit în acest ghid. README-ul conține numele exacte ale pachetului și ale variabilei de mediu — partea pe care nu o poți ghici.
- Indexing API — Quickstart (Google)
Rândul care închide discuția despre indexarea forțată. Citat mai sus cuvânt cu cuvânt, fiindcă tot ghidul se sprijină pe el.
- Search Console API — Authorizing requests (Google)
Modelul de autorizare: ce credențiale acceptă API-ul și cu ce permisiuni pe property.
- Google Cloud — MCP supported products
Lista oficială a serverelor MCP Google. Search Console lipsește: așa stabilești că serverul oficial nu există, în loc să deduci.
O notă de metodă care trece dincolo de acest ghid: absența se demonstrează cu o listă, nu cu o căutare rămasă fără rezultat. „Nu am găsit un MCP oficial Google” și „Search Console nu apare în lista oficială a produselor cu MCP” sună la fel. Doar a doua e o verificare.