Dokumentacja serwera

Claude Search Console MCP

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.

Endpoint
https://mcp.gscwizard.com/mcp
Transport
Streamable HTTP
Uwierzytelnianie
OAuth 2.1 (DCR + PKCE) or Bearer key
Narzędzia
128 · 96 read / 32 write
01

Endpoint i transport

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 /mcpWymaganeJSON-RPC przez Streamable HTTP
/v1/*WymaganeInterfejs REST dla klientów spoza MCP
GET /healthPubliczneZwraca { ok, sessions }
GET /, /docsPubliczneWygenerowany katalog narzędzi
/.well-known/oauth-protected-resourcePubliczneMetadane zasobu zgodne z RFC 9728

Sesje

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.

Trzy interfejsy, jeden potok

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.

02

Uwierzytelnianie

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.

Łańcuch wykrywania OAuth 2.1

Serwer MCP jest serwerem zasobów, a aplikacja pod adresem tool.gscwizard.com serwerem autoryzacji. Claude przechodzi cały łańcuch samodzielnie:

  1. 1

    Metadane chronionego zasobu (RFC 9728)

    Nieuwierzytelnione żądanie GET do zasobu wskazuje serwer autoryzacji i zakresy.

  2. 2

    Metadane serwera autoryzacji (RFC 8414)

    Claude pobiera /.well-known/oauth-authorization-server od wystawcy, aby znaleźć endpointy.

  3. 3

    Dynamiczna rejestracja klienta (RFC 7591)

    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.

  4. 4

    Kod autoryzacji + PKCE

    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 API

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ą.

03

Konfiguracja klienta

Cztery środowiska Claude, trzy różne sposoby podłączenia.

Claude w przeglądarce i aplikacja desktopowa (konektory)

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)

Claude Code

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 Claude Desktop

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_..."
      ]
    }
  }
}

Programistycznie (Claude Agent SDK)

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.

04

Zakres narzędzi

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 wyszukiwaniaquery_search_analytics, query_top_queries, query_top_pages, query_countries, query_devicesodczyt
Analizafind_decaying_content, analyze_cannibalization, get_ranking_changes, score_opportunities, analyze_ctr_curveodczyt
Wykrywaniedetect_anomalies, detect_change_points, forecast_traffic, get_decay_overviewodczyt
Indeksowanieinspect_url, bulk_inspect_urls, get_indexing_tracker, list_sitemapsodczyt
Inne źródłaBing Webmaster, GA4, Yandex, Merchant Center, Core Web Vitalsodczyt
Mutacjesubmit_sitemap, submit_indexnow_urls, create_topic_cluster, create_annotation, add_sitezapis

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.

05

Kontrakt odpowiedzi

Stronicowanie zamiast cichego obcinania

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.

Daty są wszędzie opcjonalne

Ż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.

Pola pochodzenia danych

PoleZnaczenie
dataSourceclickhouse lub api: którą ścieżką obsłużono ten odczyt
settledThroughOstatnia data z kompletnymi danymi
dataMaturityPierwsza niekompletna data, strefa czasowa, użyta sonda
noteZastrzeż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.

06

Kierowanie odczytów

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.

Obsługiwane z hurtowni

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.

Zawsze aktywne API

Żą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.

07

Limity i błędy

InterfejsNa minutęNa godzinę
MCP601000
REST /v11802000

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.

Warte obsłużenia postaci błędów

WarunekZachowanie
Klucz do odczytu wywołuje narzędzie zapisuOdrzucone, zanim uruchomi się obsługa żądania
Usługa niepodłączona lub bez przyznanego dostępuEgzekwowanie uprawnień odrzuca żądanie z podaniem powodu
Integracja nieskonfigurowanaZwraca notConfigured: true wraz z powodem, zamiast zgłaszać błąd
Identyfikator sesji użyty ponownie z innymi poświadczeniamiOdrzucone, bez przepinania
Świeże OAuth z Google, usługa jeszcze niezsynchronizowanaGoogle 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.

08

Model bezpieczeństwa

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.

09

Rozwiązywanie problemów

Konektor przestaje działać zaraz po dodaniu

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.

Autoryzacja się kończy, ale każde narzędzie zwraca unauthorized

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ć.

Claude Desktop odrzuca wpis w konfiguracji jako nieprawidłowy

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.

Błędy 403 tuż po połączeniu z Google

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.

Liczby różnią się od tych w interfejsie Search Console

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.

Agent zużywa swój limit zapytań

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.

10

Najczęściej zadawane pytania

Jakiego transportu używa Claude Search Console MCP?

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.

Jak działa wykrywanie OAuth dla konektora Claude?

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.

Jakie zakresy OAuth obsługuje serwer?

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.

Ile narzędzi serwer udostępnia Claude?

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ć.

Dlaczego Claude Desktop odrzuca wpis "type": "http" w pliku konfiguracyjnym?

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_.

Jakie obowiązują limity zapytań?

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.

Czy Claude czyta Search Console API bezpośrednio?

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.

Jak model jest chroniony przed zalaniem własnego kontekstu?

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.

Powiązane

Skieruj Claude na własne dane z Search Console

Jeden endpoint, OAuth lub klucz z ograniczonym zakresem i 128 narzędzi działających na usługach, które już posiadasz.

Porady o Search Console prosto do Twojej skrzynki

Praktyczne sposoby pracy z GSC i GA4, nowości w produkcie i eksperymenty SEO. Bez spamu, wypisać się możesz w każdej chwili.