Google Search Console MCP: jak podłączyłem GSC do Claude
We wrześniu 2026 roku podłączyłem Google Search Console swojej strony do Claude przez serwer MCP. Powód był przyziemny: w indeksie wisiały śmieciowe adresy, a ręczne dochodzenie, skąd się wzięły, nie brzmiało zachęcająco. Poniżej cała droga — od wyboru sposobu autoryzacji, przez dwa błędy naprawione po drodze, po to, co wyszło na działającej stronie.
To nie jest ranking „najlepszych serwerów MCP”. Jeden serwer, jeden komputer z Windows, strona w czterech językach i szczere wrażenia z pierwszych dni używania.

Serwer MCP — co to jest, w dwóch akapitach
MCP (Model Context Protocol) to otwarty protokół, przez który asystent AI wywołuje zewnętrzne narzędzia. Serwer MCP jest pośrednikiem: z jednej strony rozmawia z asystentem, z drugiej odpytuje API konkretnej usługi. W przypadku Search Console oznacza to, że Claude sam pobiera raport zapytań, sprawdza adres URL albo porównuje okresy, zamiast prosić mnie o eksport do CSV i wklejenie go do czatu.
Serwer działa lokalnie, na tym samym komputerze co Claude Desktop lub Claude Code, i komunikuje się z asystentem przez standardowe wejście i wyjście. Osobny hosting nie jest potrzebny.
Który serwer wybrałem i co sprawdziłem przed instalacją
Postawiłem na Google Search Console MCP — pakiet Pythona gsc-mcp-tools. Przesądziły trzy rzeczy:
- Zakres. 61 narzędzi: raporty Search Analytics, sprawdzanie URL, mapy witryny, Indexing API, a do tego GA4, dane CrUX, PageSpeed oraz audyty danych strukturalnych, hreflang, nagłówków i linkowania wewnętrznego.
- Konto usługi. Można obejść się bez logowania w przeglądarce, co przy lokalnym serwerze działającym tygodniami jest po prostu wygodniejsze.
- Klient konsolowy w zestawie. Każde narzędzie jest dostępne także jako polecenie
gsc-cli. Przydało się, gdy Claude jeszcze nie widział nowego serwera.
Przed instalacją sprawdziłem to samo, co przy każdym serwerze MCP: czy kod jest otwarty, jaka jest licencja, jakie zależności i dokąd program łączy się w sieci. Licencja MIT, ruch wychodzi wyłącznie do API Google, IndexNow i na sprawdzane strony, a tokeny leżą w lokalnych plikach. Dlaczego nie warto pomijać takiej weryfikacji, pisałem w tekście o bezpieczeństwie narzędzi AI.
Krok 1. Autoryzacja: konto usługi zamiast OAuth
Pakiet ma dwa tryby. OAuth to zwykłe logowanie w przeglądarce na własne konto Google. Konto usługi to techniczny użytkownik projektu Google Cloud z kluczem JSON: nie trzeba się logować, a serwer nie zależy od ważności tokenów OAuth. Do lokalnego serwera wybrałem to drugie.
- W projekcie Google Cloud włączyć Google Search Console API. Do wysyłania adresów i danych GA4 — dodatkowo Web Search Indexing API i Google Analytics Data API.
- Utworzyć konto usługi i pobrać klucz JSON.
- Nadać dostęp w samej Search Console: Ustawienia → Użytkownicy i uprawnienia → Dodaj użytkownika i wpisać adres konta usługi.
Najmniej oczywisty jest punkt trzeci. Role w Google Cloud nie mają żadnego wpływu na Search Console: dopóki adres nie trafi na listę użytkowników usługi, każde wywołanie kończy się błędem 403 — nawet z bezbłędnym kluczem. API do tego kroku nie ma, zostaje formularz i właściciel strony.
Nadałem uprawnienia „Pełne”: wystarczają do raportów i sprawdzania URL. Poziom „Właściciel” jest potrzebny tylko do Indexing API i bez powodu lepiej go nie przyznawać.
Trochę czasu zaoszczędziłem, bo konto usługi już miałem — założyłem je wcześniej dla Google Analytics. Jedno konto może działać w kilku usługach Google, a dostęp w każdej nadaje się osobno. Klucz trzymam poza folderami synchronizowanymi z chmurą, bo w praktyce to hasło do danych.
Krok 2. Instalacja — i pierwsza pułapka: zabrakło miejsca
Instaluję przez pipx, żeby pakiet miał własne, odizolowane środowisko:
python -m pipx install gsc-mcp-tools
Instalacja przerwała się błędem No space left on device. Dysk systemowy C: był zapchany niemal do końca — zostało około 200 MB, a pipx domyślnie zakłada środowisko właśnie tam. Rozwiązanie to przeniesienie katalogów pipx na inny dysk przed instalacją:
$env:PIPX_HOME = "D:\pipx" $env:PIPX_BIN_DIR = "D:\pipx\bin" python -m pipx install gsc-mcp-tools
Środowisko zajęło około 270 MB. W katalogu bin pojawiły się trzy programy: gsc-mcp — serwer, gsc-mcp-tools — ten sam serwer pod nazwą pakietu, oraz gsc-cli — klient konsolowy.
Krok 3. Rejestracja w Claude Code
Klucz przekazuje się przez zmienne środowiskowe. W PowerShellu:
$k = "C:\keys\gsc.json" claude mcp add gsc -s user ` -e GSC_SKIP_OAUTH=true ` -e "GSC_SERVICE_ACCOUNT_PATH=$k" ` -- D:\pipx\bin\gsc-mcp.exe
Flaga -s user zapisuje serwer w konfiguracji użytkownika, a nie w pliku projektu. U mnie ma to znaczenie: folder projektu synchronizuje się z chmurą, a ścieżki do klucza nie ma tam po co trzymać. Dla narzędzi GA4 w tym samym poleceniu dopisuje się -e GA4_PROPERTY_ID=….
claude mcp list
Przy gsc pojawił się status „Connected”. I druga nieoczywistość: w już otwartej sesji nowych narzędzi nie ma. Lista ładuje się przy starcie sesji, więc po dodaniu serwera trzeba otworzyć nową. Poza tym „Connected” oznacza tylko, że proces się uruchamia i odpowiada na handshake — a nie, że uprawnienia w Search Console są już nadane.
Krok 4. Test bez Claude — i błąd w kliencie
Żeby nie czekać na nową sesję, postanowiłem sprawdzić dostęp klientem konsolowym z tego samego pakietu:
gsc-cli list
Wyłożył się, zanim w ogóle połączył się z Google: ValueError: badly formed help string. Ślad stosu pokazał, że klient bierze pierwszą linijkę opisu każdego narzędzia i przekazuje ją do argparse jako tekst pomocy. W jednym z opisów jest znak %, a nowy argparse (u mnie Python 3.14) sprawdza takie teksty od razu przy tworzeniu poleceń i traktuje procent jak początek szablonu formatowania.
Wystarczyła jedna poprawka w gsc_mcp/cli.py — zamiana procentu na podwójny przed przekazaniem:
help=help_text.replace("%", "%%")
Sam serwer MCP nie był dotknięty, psuł się tylko klient. Poprawka siedzi jednak w zainstalowanym pakiecie i zniknie przy aktualizacji, więc takie rzeczy lepiej zgłaszać autorowi.
Jeszcze jeden szczegół: parametry-listy podaje się, powtarzając flagę, a nie po przecinku. Ciąg z przecinkami nie wywołuje błędu, tylko po cichu staje się jednym „adresem”:
gsc-cli batch-url-inspection ` --site https://example.com/ ` --urls https://example.com/a ` --urls https://example.com/b
Po poprawce polecenie gsc-cli list-properties zwróciło moją stronę z uprawnieniem siteFullUser — dostęp działa.
Co wyszło na działającej stronie
Śmieciowe adresy. Google wciąż trzymał osiem zbędnych URL: /ru?Itemid=232 i sąsiednie — pozostałości dawno usuniętych pozycji menu — oraz dwa stare adresy w formacie /ru/component/content/article/2-…?catid=14 należące do dwóch nieopublikowanych od dawna artykułów z 2019 i 2021 roku. Wszystkie osiem zwraca teraz 410 Gone.
Ze starymi adresami była pouczająca historia. Reguła przekierowania ustawiona na oryginalny adres w ogóle nie działała. Okazało się, że Joomla sama przechwytuje stary format /component/content/article/… i zwraca 301 na pośredni ?view=article&id=… — i dopiero ten drugi adres naprawdę odpowiada 404. Regułę trzeba było założyć właśnie na niego. Przy okazji znalazł się błąd w konektorze MCP dla Joomli: narzędzie do tworzenia przekierowań zapisywało kod odpowiedzi w złym polu.
Sprawdzanie URL. Dla takich adresów z parametrami narzędzie zwróciło NEUTRAL i puste pola. To nie błąd wywołania — Google po prostu nie ma dla nich osobnych danych. Pakiet oznacza je jednak kategorią fetch_error, co wprowadza w błąd, więc lepiej patrzeć na same pola. Dla zwykłej strony to samo narzędzie zwróciło „PASS”, datę ostatniego skanowania i adres kanoniczny.
Szybkie wygrane. Narzędzie quick_wins pokazało, że strona główna jest średnio na 8. pozycji, ale w cztery tygodnie przy 295 wyświetleniach dostała jedno kliknięcie. Oczekiwany CTR dla takiej pozycji to około 3 %, rzeczywisty — 0,3 %. Najbliższe zadanie jest więc jasne: tytuł i opis w wynikach wyszukiwania.
Co się sprawdziło, a co nie
- Działa od razu: porównanie okresów, wyszukiwanie fraz, które straciły ruch, szybkie wygrane, zbiorcze sprawdzanie URL, audyt mapy witryny i techniczny audyt strony. Odpowiedź przychodzi w kilka sekund, a Claude sam dobiera narzędzie do pytania.
- Wymaga przygotowania: narzędzia GA4 potrzebują dostępu konta usługi w Google Analytics, a dane CrUX — osobnego klucza API i odpowiedniego ruchu.
- Z zastrzeżeniami: Indexing API jest oficjalnie przeznaczone tylko dla stron z ofertami pracy i transmisjami, a limit to 200 zapytań dziennie. Dla zwykłych podstron nie warto na nim polegać.
- Zawsze pamiętać: dane Search Console mają 2–3 dni opóźnienia, a mała strona ma ich po prostu niewiele.
Krótka lista kontrolna
- Włączyć Google Search Console API w projekcie Google Cloud.
- Utworzyć konto usługi, pobrać klucz JSON i trzymać go poza folderami w chmurze.
- Dodać adres konta w Search Console z uprawnieniami „Pełne”.
- Zainstalować
gsc-mcp-toolsprzez pipx; przy braku miejsca przenieśćPIPX_HOME. - Zarejestrować serwer poleceniem
claude mcp addw zakresie użytkownika. - Sprawdzić dostęp poleceniem
gsc-cli list-propertiesi otworzyć nową sesję Claude.
Jeśli nie masz ochoty przechodzić tej drogi samodzielnie, możemy zintegrować Google Search Console z asystentem AI za Ciebie — na Twoim komputerze albo w Twojej chmurze.
Victor Parhimchik, założyciel studia internetowego IT Deweloper




