Serwer GSC Wizard MCP to zdalny zasób Model Context Protocol chroniony przez OAuth, który udostępnia Claude dane z Google Search Console, Bing Webmaster, GA4 i Merchant Center. Ta strona to dokumentacja techniczna: transport, łańcuch uwierzytelniania, zakres narzędzi, kontrakt odpowiedzi, sposób kierowania odczytów i obowiązujące limity.
Jeśli wolisz konfigurację krok po kroku, skorzystaj z poradnika łączenia z Claude. Przegląd produktu dla wszystkich klientów znajdziesz w Google Search Console MCP.
https://mcp.gscwizard.com/mcp
Streamable HTTP
OAuth 2.1 (DCR + PKCE) or Bearer key
128 · 96 read / 32 write
Serwer obsługuje MCP przez Streamable HTTP. Nie ma osobnego endpointu zapasowego tylko dla SSE; klienty, które nadal zakładają przestarzałą parę HTTP+SSE, należy skierować na pojedynczą ścieżkę /mcp, która negocjuje streaming przy każdym żądaniu.
| Ścieżka | Uwierzytelnianie | Przeznaczenie |
|---|---|---|
POST /mcp | Wymagane | JSON-RPC przez Streamable HTTP |
/v1/* | Wymagane | Interfejs REST dla klientów spoza MCP |
GET /health | Publiczne | Zwraca { ok, sessions } |
GET /, /docs | Publiczne | Wygenerowany katalog narzędzi |
/.well-known/oauth-protected-resource | Publiczne | Metadane zasobu zgodne z RFC 9728 |
Ciągłość sesji opiera się na nagłówku odpowiedzi Mcp-Session-Id, który klient odsyła w kolejnych żądaniach. Każda sesja jest po stronie serwera przypisana do user_id, które ją otworzyło. Ponowne użycie identyfikatora sesji z innymi poświadczeniami jest odrzucane, a nie po cichu przepinane, więc sam wyciek identyfikatora sesji nie wystarcza do odczytu konta.
MCP stdio, MCP Streamable HTTP i REST API pod /v1 działają przez ten sam potok runTool(). Autoryzacja, walidacja argumentów, egzekwowanie uprawnień do poszczególnych usług, bramka subskrypcji, limit zapytań i ślad audytowy są stosowane w jednym miejscu, więc nie mogą się rozjechać między transportami. Narzędzie dodane do rejestru jest dostępne i podlega tym samym regułom we wszystkich trzech.
Dwa mechanizmy, wybierane zależnie od możliwości klienta. Interfejs konektorów w Claude używa OAuth 2.1; klienty konfigurowane plikiem i bez interfejsu graficznego przekazują statyczny klucz API.
Serwer MCP jest serwerem zasobów, a aplikacja pod adresem tool.gscwizard.com serwerem autoryzacji. Claude przechodzi cały łańcuch samodzielnie:
Nieuwierzytelnione żądanie GET do zasobu wskazuje serwer autoryzacji i zakresy.
Claude pobiera /.well-known/oauth-authorization-server od wystawcy, aby znaleźć endpointy.
Claude rejestruje się samodzielnie i otrzymuje własny identyfikator klienta. Dlatego pola identyfikatora klienta i sekretu zostawia się puste przy dodawaniu konektora: ich wypełnienie wyprzedza rejestrację i psuje cały przebieg.
Przepływ authorization_code z wyzwaniem S256, z możliwością odświeżania. Logowanie przez Google i zgoda odbywają się na serwerze autoryzacji, nigdy w Claude.
Metadane zasobu
GET https://mcp.gscwizard.com/.well-known/oauth-protected-resource
{
"resource": "https://mcp.gscwizard.com/mcp",
"authorization_servers": ["https://tool.gscwizard.com"],
"scopes_supported": ["mcp:read", "mcp:write"],
"bearer_methods_supported": ["header"]
}Metadane serwera autoryzacji
GET https://tool.gscwizard.com/.well-known/oauth-authorization-server
{
"issuer": "https://tool.gscwizard.com",
"authorization_endpoint": "https://tool.gscwizard.com/oauth/authorize",
"token_endpoint": "https://tool.gscwizard.com/api/oauth/token",
"registration_endpoint": "https://tool.gscwizard.com/api/oauth/register",
"revocation_endpoint": "https://tool.gscwizard.com/api/oauth/revoke",
"scopes_supported": ["mcp:read", "mcp:write"],
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": [
"none", "client_secret_post", "client_secret_basic"
]
}Dwie bramki przed wydaniem tokenu. Endpoint autoryzacji wymaga aktywnej subskrypcji i co najmniej jednej podłączonej usługi Search Console. Konto, które nie spełnia któregoś z tych warunków, jest najpierw odsyłane do ich uzupełnienia, zamiast dostać token, który każde kolejne wywołanie narzędzia by odrzuciło.
Klucze mają prefiks gscw_live_, tworzy się je w Konto → Klucze API i przekazuje jako Authorization: Bearer. Przechowywany jest wyłącznie skrót SHA-256, więc pełna treść klucza jest pokazywana raz przy tworzeniu i nie da się jej później odzyskać; rotacja oznacza wystawienie nowego klucza i unieważnienie starego.
Każdy klucz ma zakres ustalony przy tworzeniu. Klucz z zakresem odczytu nie może wywołać narzędzia modyfikującego: sprawdzenie działa w potoku przed obsługą żądania, więc tryb tylko do odczytu jest strukturalną cechą poświadczenia, a nie instrukcją, od której dałoby się model odwieść rozmową.
Cztery środowiska Claude, trzy różne sposoby podłączenia.
Ustawienia → Konektory → Dodaj własny konektor. Wpisz adres URL i zostaw oba pola OAuth puste.
URL: https://mcp.gscwizard.com/mcp
OAuth Client ID: (leave blank)
OAuth Secret: (leave blank)Jedno polecenie rejestruje zdalny serwer z nagłówkiem klucza. Sprawdź to poleceniem /mcp wewnątrz sesji.
claude mcp add --transport http gsc-wizard \
https://mcp.gscwizard.com/mcp \
--header "Authorization: Bearer gscw_live_..."Plik konfiguracyjny aplikacji desktopowej uruchamia wyłącznie lokalne serwery stdio, więc wpis "type": "http" nie przechodzi walidacji. Jeśli potrzebujesz statycznego klucza zamiast OAuth, połącz się ze zdalnym serwerem przez mcp-remote (wymaga Node.js).
{
"mcpServers": {
"gsc-wizard": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://mcp.gscwizard.com/mcp",
"--header", "Authorization: Bearer gscw_live_..."
]
}
}
}Zadeklaruj go jako serwer MCP przez HTTP w opcjach agenta; SDK obsługuje uzgadnianie JSON-RPC.
mcpServers: {
"gsc-wizard": {
type: "http",
url: "https://mcp.gscwizard.com/mcp",
headers: { Authorization: `Bearer ${process.env.GSCW_API_KEY}` }
}
}Do wszystkiego, co działa bez nadzoru, używaj klucza z zakresem odczytu. Jeśli agent potrzebuje tylko kilku narzędzi, ogranicz też listę dozwolonych narzędzi po stronie klienta: mniejszy zestaw jest tańszy w każdej turze i zawęża to, do czego mógłby dotrzeć prompt injection ukryty w pobranej treści strony.
128 zarejestrowanych narzędzi: 96 odczytów i 32 mutacje, wszystkie dostępne dla każdego konta. Każde narzędzie udostępnia adnotacje MCP (readOnlyHint, destructiveHint, openWorldHint, title), dzięki czemu klient może je prezentować lub blokować bez wpisywania nazw na sztywno.
| Grupa | Przykładowe narzędzia | Zakres |
|---|---|---|
| Analityka wyszukiwania | query_search_analytics, query_top_queries, query_top_pages, query_countries, query_devices | odczyt |
| Analiza | find_decaying_content, analyze_cannibalization, get_ranking_changes, score_opportunities, analyze_ctr_curve | odczyt |
| Wykrywanie | detect_anomalies, detect_change_points, forecast_traffic, get_decay_overview | odczyt |
| Indeksowanie | inspect_url, bulk_inspect_urls, get_indexing_tracker, list_sitemaps | odczyt |
| Inne źródła | Bing Webmaster, GA4, Yandex, Merchant Center, Core Web Vitals | odczyt |
| Mutacje | submit_sitemap, submit_indexnow_urls, create_topic_cluster, create_annotation, add_site | zapis |
Analiza działa po stronie serwera. Spadki treści, kanibalizacja, modelowanie krzywej CTR, wykrywanie punktów zmiany i ocena okazji są liczone na serwerze i zwracane jako wyniki. Model dostaje wnioski i wiersze, na których się opierają, a nie surowy zrzut danych do statystycznego rozumowania, co jest tańsze w każdej turze i nie podlega błędom w rachunkach.
Pełny katalog narzędzi ze schematami argumentów i przykładowymi ładunkami jest wyświetlany pod adresem mcp.gscwizard.com i testowany pod kątem zgodności z rejestrem, więc nie może po cichu odstawać od faktycznie zarejestrowanych narzędzi.
Problemem nie są limity wierszy, tylko limity, o których nikt nie mówi. Model, który dostał dokładnie limit wierszy, nie odróżni pełnej odpowiedzi od uciętej i z przekonaniem zgłosi, że „Twoja witryna ma 100 zapytań”. Dlatego narzędzia z limitem wierszy pobierają o jeden wiersz próbny więcej, zwracają najwyżej limit i dołączają blok z informacją o oknie danych, o tym, czy są kolejne wiersze, i o dokładnym następnym wywołaniu.
"pagination": {
"limit": 100,
"offset": 0,
"returned": 100,
"hasMore": true,
"note": "Showing rows 1-100. Call again with offset: 100 for the next page."
}query_search_analytics domyślnie zwraca 100 wierszy zamiast pierwotnych 1000: przy 1000 pojedyncze wywołanie zwracało około 58k tokenów, czyli więcej kontekstu niż cała lista narzędzi. Narzędzia analizy rankingowej ograniczają wyniki we wspólnym rdzeniu analitycznym i nie mają bloku stronicowania.
Żadne narzędzie nie wymaga od wywołującego znajomości dzisiejszej daty. Pominięte okno czasowe oznacza ostatnie 28 ustabilizowanych dni, z uwzględnieniem około trzydniowego opóźnienia raportowania w Search Console, a okres porównawczy domyślnie to poprzedni okres tej samej długości. Parser dat zamienia też wartości null, "null" i "", które klienty LLM często wysyłają, na „użyj wartości domyślnej”, zamiast zgłaszać błąd walidacji, co eliminuje całą klasę pętli ponawiania.
| Pole | Znaczenie |
|---|---|
dataSource | clickhouse lub api: którą ścieżką obsłużono ten odczyt |
settledThrough | Ostatnia data z kompletnymi danymi |
dataMaturity | Pierwsza niekompletna data, strefa czasowa, użyta sonda |
note | Zastrzeżenie o aktualności danych w formie opisu do przekazania przez model |
Te pola istnieją po to, by odpowiedź dało się przypisać do konkretnego źródła. Gdy Claude mówi, że ruch spadł w zeszłym tygodniu, to settledThrough odróżnia prawdziwy spadek od opóźnienia raportowania, które jest najczęstszym fałszywym alarmem w zautomatyzowanej analizie Search Console.
Większość odczytów nie trafia do Search Console API. Historyczne dane o skuteczności są ładowane do hurtowni ClickHouse i kwalifikujące się odczyty są obsługiwane stamtąd: historia jest dłuższa niż 16-miesięczne okno API i nie ma próbkowania po stronie API w usługach o dużej liczbie unikalnych wartości.
Osiem narzędzi analityki wyszukiwania (query_search_analytics, query_top_queries, query_top_pages, query_countries, query_devices, get_site_summary, get_query_performance, get_page_performance) i jedenaście narzędzi analitycznych.
Żądania wymagające searchAppearance, typu googleNews, trzech lub więcej różnych wymiarów albo stronicowania. Dotyczy to też każdej usługi, której uzupełnianie historii jeszcze się nie zakończyło.
Kierowanie jest automatyczne i odbywa się przy każdym żądaniu; wywołujący nie wybiera. Odczyty z hurtowni korzystają z roli tylko do odczytu i polityki wierszy powiązanej z kontem, więc granicę między najemcami wymusza baza danych, a nie tylko konstruktor zapytań. Serwer nigdy nie zapisuje do hurtowni na ścieżce odczytu.
Praktyczna konsekwencja dla Claude: hurtownia jest opóźniona o około dwa dni względem czasu rzeczywistego, a aktywne API o około trzy, i odpowiedzi z hurtowni informują o tym w polu note. Gdy zapytasz o „zeszły tydzień”, dostaniesz kompletne tygodnie, a nie niepełny koniec okresu przedstawiony jako spadek.
| Interfejs | Na minutę | Na godzinę |
|---|---|---|
| MCP | 60 | 1000 |
REST /v1 | 180 | 2000 |
Liczone osobno dla każdego użytkownika i każdego interfejsu. Wywołanie ograniczone limitem zwraca informację, które okno zostało przekroczone i ile sekund czekać, więc agent może się wycofać dokładnie, zamiast zgadywać. Sprawdzanie adresów URL ma osobny dzienny limit od Google, który można odczytać przez get_inspection_quota.
| Warunek | Zachowanie |
|---|---|
| Klucz do odczytu wywołuje narzędzie zapisu | Odrzucone, zanim uruchomi się obsługa żądania |
| Usługa niepodłączona lub bez przyznanego dostępu | Egzekwowanie uprawnień odrzuca żądanie z podaniem powodu |
| Integracja nieskonfigurowana | Zwraca notConfigured: true wraz z powodem, zamiast zgłaszać błąd |
| Identyfikator sesji użyty ponownie z innymi poświadczeniami | Odrzucone, bez przepinania |
| Świeże OAuth z Google, usługa jeszcze niezsynchronizowana | Google przez krótki czas zwraca 403; spróbuj ponownie niedługo po połączeniu |
Konwencja notConfigured ma znaczenie dla agentów: nieskonfigurowane połączenie z GA4 lub Merchant Center to stan, o którym trzeba poinformować, a nie wyjątek do ponawiania, a rozróżnienie tych dwóch przypadków chroni pętlę przed zużyciem limitu na warunek, którego żadne ponowienie nie naprawi.
Poświadczenia Google nigdy nie trafiają do Claude. Tokeny Search Console są przechowywane po stronie serwera, szyfrowane w spoczynku i odświeżane przez serwer. Claude ma token lub klucz ograniczony do GSC Wizard, a nie do Google.
Zakres jest wymuszony strukturalnie. Poświadczenie z zakresem odczytu nie dotrze do obsługi mutacji. Jest to egzekwowane we wspólnym potoku, więc działa tak samo w MCP i REST.
Klucze są haszowane. Tylko SHA-256; pełna treść jest pokazywana raz. Unieważnienie działa natychmiast.
Każde wywołanie trafia do dziennika audytowego, zarówno udane, jak i nieudane: odczyty bez argumentów, zapisy razem z nimi. Działania agenta można odtworzyć po fakcie.
Dostęp do usług wynika z przyznanych uprawnień. Claude widzi tylko usługi podłączone do konta, a usługi udostępnione mają własne uprawnienia nadawane indywidualnie, w tym dla osób z dostępem tylko do odczytu, które nie mogą zużywać budżetu crawlowania właściciela.
Dla agenta działającego bez nadzoru zalecana konfiguracja to klucz z zakresem odczytu oraz lista dozwolonych narzędzi po stronie klienta, obejmująca tylko te, których potrzebuje zadanie. Takie połączenie ogranicza skutki prompt injection przychodzącego z dowolnej treści, którą agent pobiera.
Najczęściej wypełniono identyfikator klienta lub sekret. Serwer używa dynamicznej rejestracji klienta, więc oba pola muszą być puste. Usuń konektor, dodaj go ponownie, podając tylko adres URL, i pozwól Claude zarejestrować się samodzielnie.
Sprawdź dwie bramki, które egzekwuje endpoint autoryzacji: aktywną subskrypcję i co najmniej jedną usługę Search Console podłączoną do konta. Token wydany kontu bez podłączonej usługi nie ma niczego, co wolno mu odczytać.
Plik konfiguracyjny uruchamia wyłącznie lokalne procesy stdio, więc "type": "http" nie jest prawidłowym wpisem. Skorzystaj z interfejsu konektorów albo połącz się przez npx -y mcp-remote, jak pokazano wyżej.
Google potrzebuje chwili, by rozpropagować świeżo przyznaną autoryzację Search Console. Błąd 403 w pierwszych minutach po połączeniu to zwykle kwestia propagacji, a nie błąd uprawnień; ponów próbę, zanim ponownie przejdziesz przez przepływ OAuth.
Sprawdź pola dataSource i settledThrough w odpowiedzi. Odczyt z hurtowni i widok w interfejsie dla tego samego nominalnego zakresu mogą kończyć się na różnych datach, a sam interfejs próbkuje raporty zapytań o dużej liczbie unikalnych wartości, czego hurtownia nie robi.
Zwykle to pętla ponawiania odpowiedzi notConfigured, której żadne ponowienie nie rozwiąże, albo iterowanie po stronach tam, gdzie jedno narzędzie analityczne odpowiedziałoby w jednym wywołaniu. Wybieraj narzędzia analityczne po stronie serwera zamiast pobierania wierszy i rozumowania na ich podstawie.
Streamable HTTP pod adresem https://mcp.gscwizard.com/mcp. Ciągłość sesji zapewnia nagłówek odpowiedzi Mcp-Session-Id, a każda sesja jest po stronie serwera przypisana do użytkownika, który ją otworzył, więc identyfikator sesji użyty ponownie z innymi poświadczeniami jest odrzucany. Dla lokalnych kompilacji istnieje punkt wejścia stdio, a interfejs REST pod /v1 obsługuje zwykły HTTP+JSON przez ten sam potok.
Serwer MCP jest serwerem zasobów OAuth 2.1 i publikuje metadane chronionego zasobu zgodne z RFC 9728, wskazujące tool.gscwizard.com jako serwer autoryzacji. Następnie Claude odczytuje metadane RFC 8414 od tego wystawcy, rejestruje się przez dynamiczną rejestrację klienta z RFC 7591 i przechodzi przepływ authorization_code z PKCE S256. Dlatego pola identyfikatora klienta i sekretu zostają puste.
mcp:read i mcp:write. Tokeny Bearer są akceptowane wyłącznie w nagłówku Authorization. Klucze API niosą ten sam podział jako zakres ustalony przy tworzeniu: klucz do odczytu nie może wywołać narzędzia modyfikującego, więc ta bramka jest strukturalna, a nie jest instrukcją w prompcie.
128 zarejestrowanych narzędzi: 96 odczytów i 32 mutacje, wszystkie dostępne dla każdego konta. Wszystkie trzy interfejsy działają przez jeden potok runTool(), więc autoryzacja, walidacja, egzekwowanie uprawnień i ślad audytowy nie mogą się między nimi rozjechać.
Plik konfiguracyjny Claude Desktop uruchamia wyłącznie lokalne serwery stdio, więc wpis zdalnego serwera HTTP nie przechodzi walidacji. Możesz skorzystać z interfejsu konektorów, który natywnie obsługuje Streamable HTTP przez OAuth, albo połączyć się ze zdalnym serwerem przez npx mcp-remote, co wymaga Node.js i pozwala przekazać statyczny klucz API gscw_live_.
Interfejs MCP dopuszcza 60 wywołań na minutę i 1000 na godzinę na użytkownika. Interfejs REST pod /v1 dopuszcza 180 na minutę i 2000 na godzinę. Limity są liczone osobno dla każdego użytkownika i interfejsu, a wywołanie ograniczone limitem zwraca liczbę sekund do odczekania przed ponowieniem.
Nie w przypadku większości odczytów. Osiem narzędzi analityki wyszukiwania i jedenaście narzędzi analitycznych jest automatycznie kierowanych do hurtowni ClickHouse z historycznymi danymi konta z Search Console, co daje dłuższą historię i omija próbkowanie API. Każda odpowiedź zawiera pole dataSource o wartości clickhouse lub api, a przy odczycie z hurtowni także settledThrough i notatkę o aktualności danych. Żądania wymagające searchAppearance, typu googleNews, trzech lub więcej różnych wymiarów albo stronicowania zawsze wracają do aktywnego API.
Narzędzia z limitem wierszy pobierają o jeden wiersz próbny więcej i zwracają blok stronicowania z informacją o oknie danych, o tym, czy są kolejne wiersze, i o dokładnym następnym wywołaniu. Ciche obcinanie to tryb awarii, który z założenia wyeliminowano: model, który dostał dokładnie limit wierszy, nie odróżni pełnej odpowiedzi od uciętej. query_search_analytics domyślnie zwraca 100 wierszy, bo przy 1000 pojedyncze wywołanie zwracało około 58k tokenów, czyli więcej kontekstu niż cała lista narzędzi.
Konfiguracja krok po kroku dla Claude w przeglądarce, aplikacji desktopowej i Claude Code.
Przegląd produktu: co robi serwer w każdym kliencie MCP.
Interfejs GA4 tego samego serwera: sesje, kluczowe zdarzenia, e-commerce i ruch z LLM.
Interfejs Yandex tego samego serwera: indeks jakości witryny, zapytania i historia indeksowania.
Interfejs zakupowy tego samego serwera: bezpłatne informacje o produktach, problemy z produktami, ceny i audyt pliku produktowego.
Cursor, VS Code, Windsurf, Gemini, Grok i ChatGPT obok Claude.
Te same dane w aplikacji Gemini, Antigravity CLI, Gemini Enterprise lub Gemini API.
Gotowy do użycia agent działający bez nadzoru, zbudowany na tym serwerze i MCP crawlera.
Jak serwery z danymi z pierwszej ręki wypadają na tle platform zewnętrznych.
Jeden endpoint, OAuth lub klucz z ograniczonym zakresem i 128 narzędzi działających na usługach, które już posiadasz.
Praktyczne sposoby pracy z GSC i GA4, nowości w produkcie i eksperymenty SEO. Bez spamu, wypisać się możesz w każdej chwili.