Server-Referenz

Claude Search Console MCP

Der GSC Wizard MCP-Server ist eine entfernte, per OAuth geschützte Model-Context-Protocol-Ressource, die Claude Daten aus der Google Search Console, Bing Webmaster, GA4 und dem Merchant Center zur Verfügung stellt. Diese Seite ist die technische Referenz: Transport, die Authentifizierungskette, die Tool-Oberfläche, der Antwortvertrag, das Routing der Lesezugriffe und die Limits.

Wenn Sie stattdessen die Einrichtung Schritt für Schritt möchten, nutzen Sie die Anleitung zur Claude-Verbindung. Den Produktüberblick für alle Clients finden Sie unter Google Search Console MCP.

Endpunkt
https://mcp.gscwizard.com/mcp
Transport
Streamable HTTP
Auth
OAuth 2.1 (DCR + PKCE) or Bearer key
Tools
128 · 96 read / 32 write
01

Endpunkt und Transport

Der Server spricht MCP über Streamable HTTP. Es gibt keinen reinen SSE-Fallback-Endpunkt; Clients, die noch vom veralteten HTTP+SSE-Paar ausgehen, sollten auf den einzelnen Pfad /mcp zeigen, der das Streaming pro Anfrage aushandelt.

Pfad Auth Zweck
POST /mcpErforderlichJSON-RPC über Streamable HTTP
/v1/*ErforderlichREST-Oberfläche für Aufrufer ohne MCP
GET /healthÖffentlichLiefert { ok, sessions }
GET /, /docsÖffentlichGerenderter Tool-Katalog
/.well-known/oauth-protected-resourceÖffentlichRFC-9728-Ressourcen-Metadaten

Sitzungen

Die Sitzungskontinuität läuft über den Antwort-Header Mcp-Session-Id, den der Client bei Folgeanfragen zurückspielt. Jede Sitzung ist serverseitig an die user_id gebunden, die sie geöffnet hat. Wird eine Sitzungs-ID mit anderen Zugangsdaten erneut vorgelegt, wird sie abgelehnt und nicht stillschweigend neu zugeordnet. Eine abgeflossene Sitzungs-ID reicht allein also nicht aus, um ein Konto zu lesen.

Drei Oberflächen, eine Pipeline

MCP stdio, MCP Streamable HTTP und die REST-API unter /v1 laufen alle durch dieselbe runTool()-Pipeline. Autorisierung, Argumentvalidierung, Durchsetzung der Freigaben pro Property, die Abonnementprüfung, der Rate Limiter und das Audit-Protokoll werden an dieser einen Stelle angewendet und können deshalb zwischen den Transporten nicht auseinanderlaufen. Ein neu in die Registry aufgenommenes Tool ist auf allen dreien erreichbar und wird identisch gesteuert.

02

Authentifizierung

Zwei Verfahren, je nach Fähigkeiten des Clients. Die Connectors-Oberfläche von Claude nutzt OAuth 2.1; Clients mit Konfigurationsdatei und Headless-Clients legen einen festen API-Schlüssel vor.

OAuth-2.1-Discovery-Kette

Der MCP-Server ist der Resource Server; die App unter tool.gscwizard.com ist der Authorization Server. Claude durchläuft die Kette selbstständig:

  1. 1

    Metadaten der geschützten Ressource (RFC 9728)

    Ein nicht authentifizierter GET auf die Ressource nennt den Authorization Server und die Scopes.

  2. 2

    Metadaten des Authorization Servers (RFC 8414)

    Claude ruft /.well-known/oauth-authorization-server beim Aussteller ab, um die Endpunkte zu finden.

  3. 3

    Dynamische Client-Registrierung (RFC 7591)

    Claude registriert sich selbst und erhält eine eigene Client-ID. Deshalb bleiben die Felder für Client-ID und Secret leer, wenn Sie den Connector hinzufügen: Wer sie ausfüllt, greift der Registrierung vor und bricht den Ablauf.

  4. 4

    Authorization Code + PKCE

    Ein authorization_code-Grant mit S256-Challenge, erneuerbar. Google-Anmeldung und Einwilligung finden auf dem Authorization Server statt, nie in Claude.

Ressourcen-Metadaten

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

Metadaten des Authorization Servers

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

Zwei Prüfungen, bevor ein Token ausgestellt wird. Der Authorize-Endpunkt verlangt ein aktives Abonnement und mindestens eine verbundene Search-Console-Property. Ein Konto, das keines von beidem hat, wird zuerst dorthin geschickt, statt ein Token zu erhalten, das jeder spätere Tool-Aufruf ablehnen würde.

API-Schlüssel

Schlüssel tragen das Präfix gscw_live_, werden unter Konto → API-Schlüssel erstellt und als Authorization: Bearer übergeben. Gespeichert wird nur ein SHA-256-Hash. Der Klartext wird deshalb nur einmal bei der Erstellung angezeigt und lässt sich danach nicht wiederherstellen; eine Rotation bedeutet, einen neuen Schlüssel auszustellen und den alten zu widerrufen.

Jeder Schlüssel trägt einen bei der Erstellung festgelegten Scope. Ein Schlüssel mit Lese-Scope kann kein Mutations-Tool aufrufen: Die Prüfung läuft in der Pipeline vor dem Handler. Schreibgeschützt ist damit eine strukturelle Eigenschaft der Zugangsdaten und keine Anweisung, von der man das Modell abbringen könnte.

03

Client-Konfiguration

Vier Claude-Oberflächen, drei verschiedene Anbindungsarten.

Claude im Web und als Desktop-App (Connectors)

Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen. Geben Sie die URL ein und lassen Sie beide OAuth-Felder leer.

URL:              https://mcp.gscwizard.com/mcp
OAuth Client ID:  (leave blank)
OAuth Secret:     (leave blank)

Claude Code

Ein einziger Befehl registriert den entfernten Server mit einem Schlüssel-Header. Prüfen Sie das mit /mcp innerhalb einer Sitzung.

claude mcp add --transport http gsc-wizard \
  https://mcp.gscwizard.com/mcp \
  --header "Authorization: Bearer gscw_live_..."

Konfigurationsdatei von Claude Desktop

Die Konfigurationsdatei der Desktop-App startet ausschließlich lokale stdio-Server, daher besteht ein Eintrag mit "type": "http" die Validierung nicht. Binden Sie den entfernten Server über mcp-remote an (erfordert Node.js), wenn Sie statt OAuth einen festen Schlüssel brauchen.

{
  "mcpServers": {
    "gsc-wizard": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://mcp.gscwizard.com/mcp",
        "--header", "Authorization: Bearer gscw_live_..."
      ]
    }
  }
}

Programmatisch (Claude Agent SDK)

Deklarieren Sie ihn in den Agent-Optionen als HTTP-MCP-Server; das SDK übernimmt den JSON-RPC-Handshake.

mcpServers: {
  "gsc-wizard": {
    type: "http",
    url: "https://mcp.gscwizard.com/mcp",
    headers: { Authorization: `Bearer ${process.env.GSCW_API_KEY}` }
  }
}

Verwenden Sie für alles, was unbeaufsichtigt läuft, einen Schlüssel mit Lese-Scope. Braucht der Agent nur eine Handvoll Tools, beschränken Sie zusätzlich die erlaubte Tool-Liste im Client: Eine kleinere Oberfläche ist pro Durchlauf günstiger und begrenzt, was eine Prompt Injection in abgerufenen Seiteninhalten erreichen könnte.

04

Tool-Oberfläche

128 registrierte Tools: 96 lesende und 32 Mutationen, alle für jedes Konto verfügbar. Jedes Tool liefert MCP-Annotationen (readOnlyHint, destructiveHint, openWorldHint, title), sodass ein Client sie darstellen oder sperren kann, ohne Namen fest zu verdrahten.

Gruppe Typische Tools Scope
Suchanalysequery_search_analytics, query_top_queries, query_top_pages, query_countries, query_devicesLesen
Analysefind_decaying_content, analyze_cannibalization, get_ranking_changes, score_opportunities, analyze_ctr_curveLesen
Erkennungdetect_anomalies, detect_change_points, forecast_traffic, get_decay_overviewLesen
Indexierunginspect_url, bulk_inspect_urls, get_indexing_tracker, list_sitemapsLesen
Weitere QuellenBing Webmaster, GA4, Yandex, Merchant Center, Core Web VitalsLesen
Mutationensubmit_sitemap, submit_indexnow_urls, create_topic_cluster, create_annotation, add_siteSchreiben

Die Analyse läuft serverseitig. Content Decay, Kannibalisierung, Modellierung der CTR-Kurve, Change-Point-Erkennung und Bewertung von Chancen werden im Server berechnet und als Ergebnisse zurückgegeben. Das Modell erhält Schlussfolgerungen und die zugrunde liegenden Zeilen, keinen Rohdatenberg, den es statistisch auswerten müsste. Das ist pro Durchlauf günstiger und frei von Rechenabweichungen.

Der vollständige Katalog pro Tool mit Argumentschemata und Beispiel-Payloads wird unter mcp.gscwizard.com dargestellt und per Test gegen die Registry abgeglichen. Er kann deshalb nicht unbemerkt hinter den tatsächlich registrierten Tools zurückfallen.

05

Antwortvertrag

Paginierung statt stillem Abschneiden

Zeilenlimits sind nicht das Risiko, sondern verschwiegene Limits. Ein Modell, das genau limit Zeilen erhält, kann eine vollständige Antwort nicht von einer abgeschnittenen unterscheiden und meldet dann selbstbewusst „Ihre Website hat 100 Suchanfragen“. Die Tools mit Zeilenlimit holen deshalb eine Probezeile zu viel, liefern höchstens limit Zeilen zurück und hängen einen Block an, der das Zeitfenster nennt, ob es mehr gibt und wie der nächste Aufruf genau lautet.

"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 liefert standardmäßig 100 Zeilen statt der ursprünglichen 1.000: Bei 1.000 lieferte ein einzelner Aufruf rund 58k Tokens, mehr Kontext als die gesamte Tool-Liste. Analyse-Tools mit Rangliste begrenzen im gemeinsamen Analytics-Kern und enthalten keinen Paginierungsblock.

Datumsangaben sind überall optional

Kein Tool verlangt vom Aufrufer, das heutige Datum zu kennen. Fehlt ein Zeitfenster, gelten standardmäßig die letzten 28 abgeschlossenen Tage, unter Berücksichtigung der Berichtsverzögerung der Search Console von etwa drei Tagen; die Vergleichsbasis ist standardmäßig der vorherige Zeitraum gleicher Länge. Der Datums-Parser wandelt außerdem die Werte null, "null" und "", die LLM-Clients häufig senden, in „Standard verwenden“ um, statt die Validierung scheitern zu lassen. Das beseitigt eine ganze Klasse von Wiederholungsschleifen.

Herkunftsfelder

FeldBedeutung
dataSourceclickhouse oder api: über welchen Pfad dieser Lesezugriff bedient wurde
settledThroughLetztes Datum mit vollständigen Daten
dataMaturityErstes unvollständiges Datum, Basis-Zeitzone, verwendete Probe
noteHinweis zur Aktualität in Prosa, den das Modell weitergeben soll

Diese Felder gibt es, damit sich eine Antwort zuordnen lässt. Wenn Claude sagt, der Traffic sei in der letzten Woche gefallen, unterscheidet settledThrough einen echten Rückgang von der Berichtsverzögerung, dem mit Abstand häufigsten Fehlalarm in der automatisierten Search-Console-Analyse.

06

Routing der Lesezugriffe

Die meisten Lesezugriffe gehen nicht an die Search-Console-API. Historische Leistungsdaten werden in ein ClickHouse-Warehouse eingespielt, und geeignete Lesezugriffe werden von dort bedient: mit längerem Verlauf als das 16-Monats-Fenster der API und ohne API-seitiges Sampling bei Properties mit hoher Kardinalität.

Aus dem Warehouse bedient

Acht Suchanalyse-Tools (query_search_analytics, query_top_queries, query_top_pages, query_countries, query_devices, get_site_summary, get_query_performance, get_page_performance) und elf Analyse-Tools.

Immer über die Live-API

Anfragen, die searchAppearance, den Typ googleNews, drei oder mehr verschiedene Dimensionen oder Paginierung benötigen. Außerdem jede Property, deren Backfill noch nicht abgeschlossen ist.

Das Routing erfolgt automatisch und pro Anfrage; der Aufrufer wählt nicht. Lesezugriffe auf das Warehouse nutzen eine schreibgeschützte Rolle und eine Row Policy, die am Konto hängt. Die Mandantengrenze wird also von der Datenbank durchgesetzt und nicht nur vom Query Builder. Auf einem Lesepfad schreibt der Server nie in das Warehouse.

Praktische Folge für Claude: Das Warehouse hinkt der Echtzeit etwa zwei Tage hinterher, die Live-API etwa drei, und aus dem Warehouse bediente Antworten sagen das in note. Fragen Sie nach „letzter Woche“, erhalten Sie vollständige Wochen und kein unvollständiges Ende, das als Einbruch dargestellt wird.

07

Limits und Fehler

OberflächePro MinutePro Stunde
MCP601.000
REST /v11802.000

Gezählt wird pro Nutzer und Oberfläche. Ein gedrosselter Aufruf liefert zurück, welches Zeitfenster überschritten wurde und wie viele Sekunden zu warten sind, sodass ein Agent gezielt zurücktreten kann, statt zu raten. URL-Prüfungen unterliegen einem separaten Tageskontingent von Google, das sich mit get_inspection_quota abrufen lässt.

Fehlerformen, die Sie behandeln sollten

BedingungVerhalten
Lese-Schlüssel ruft ein Schreib-Tool aufWird abgelehnt, bevor der Handler läuft
Property nicht verbunden oder nicht freigegebenDie Freigabeprüfung lehnt mit Begründung ab
Integration nicht konfiguriertLiefert notConfigured: true mit einer Begründung, statt einen Fehler zu werfen
Sitzungs-ID mit anderen Zugangsdaten erneut verwendetWird abgelehnt, nicht neu zugeordnet
Frisches Google-OAuth, Property noch nicht propagiertGoogle liefert für kurze Zeit 403; versuchen Sie es kurz nach dem Verbinden erneut

Die notConfigured-Konvention ist für Agenten wichtig: Eine nicht konfigurierte GA4- oder Merchant-Center-Verbindung ist ein Zustand, den man meldet, und keine Ausnahme, die man wiederholt. Wer beides unterscheidet, verhindert, dass eine Schleife ihr Rate Limit an einem Zustand verbrennt, den kein Wiederholen beheben kann.

08

Sicherheitsmodell

Für einen unbeaufsichtigten Agenten empfiehlt sich ein Schlüssel mit Lese-Scope plus eine clientseitige Allowlist der Tools, die der Job wirklich braucht. Diese Kombination begrenzt den Schaden einer Prompt Injection, die über beliebige vom Agenten abgerufene Inhalte eintrifft.

09

Fehlerbehebung

Der Connector schlägt direkt nach dem Hinzufügen fehl

Meistens wurde eine Client-ID oder ein Secret eingetragen. Der Server nutzt dynamische Client-Registrierung, daher müssen beide Felder leer bleiben. Entfernen Sie den Connector, fügen Sie ihn nur mit der URL erneut hinzu und lassen Sie Claude sich selbst registrieren.

Die Autorisierung läuft durch, aber jedes Tool meldet „unauthorized“

Prüfen Sie die beiden Bedingungen, die der Authorize-Endpunkt durchsetzt: ein aktives Abonnement und mindestens eine mit dem Konto verbundene Search-Console-Property. Ein Token für ein Konto ohne verbundene Property darf nichts lesen.

Claude Desktop lehnt den Konfigurationseintrag als ungültig ab

Die Konfigurationsdatei startet nur lokale stdio-Prozesse, daher ist "type": "http" kein gültiger Eintrag. Nutzen Sie die Connectors-Oberfläche oder binden Sie den Server wie oben gezeigt über npx -y mcp-remote an.

403-Fehler direkt nach dem Verbinden von Google

Google braucht kurz, um eine neu erteilte Search-Console-Autorisierung zu propagieren. Ein 403 in den ersten Minuten nach dem Verbinden ist meist die Propagation und kein Berechtigungsfehler; versuchen Sie es erneut, bevor Sie den OAuth-Ablauf noch einmal durchlaufen.

Zahlen weichen von der Search-Console-Oberfläche ab

Prüfen Sie dataSource und settledThrough in der Antwort. Ein aus dem Warehouse bedienter Lesezugriff und eine Ansicht in der Oberfläche können bei demselben nominalen Zeitraum an unterschiedlichen Daten enden, und die Oberfläche selbst sampelt Suchanfragen-Berichte mit hoher Kardinalität, das Warehouse dagegen nicht.

Der Agent verbraucht sein Rate Limit

Meist eine Wiederholungsschleife gegen eine notConfigured-Antwort, die kein Wiederholen lösen kann, oder eine Iteration Seite für Seite, wo ein einziger Analyse-Aufruf genügt. Bevorzugen Sie die serverseitigen Analyse-Tools, statt Zeilen abzurufen und selbst darüber zu schlussfolgern.

10

Häufig gestellte Fragen

Welchen Transport nutzt der Claude Search Console MCP?

Streamable HTTP unter https://mcp.gscwizard.com/mcp. Die Sitzungskontinuität läuft über den Antwort-Header Mcp-Session-Id, und jede Sitzung ist serverseitig an den Nutzer gebunden, der sie geöffnet hat. Eine mit anderen Zugangsdaten erneut verwendete Sitzungs-ID wird daher abgelehnt. Für lokale Builds gibt es einen stdio-Einstiegspunkt, und eine REST-Oberfläche unter /v1 liefert über dieselbe Pipeline schlichtes HTTP+JSON.

Wie funktioniert die OAuth-Discovery beim Claude-Connector?

Der MCP-Server ist der OAuth-2.1-Resource-Server und veröffentlicht Metadaten der geschützten Ressource nach RFC 9728, die tool.gscwizard.com als Authorization Server nennen. Claude liest dann die RFC-8414-Metadaten dieses Ausstellers, registriert sich per dynamischer Client-Registrierung nach RFC 7591 und durchläuft einen authorization_code-Ablauf mit PKCE S256. Deshalb bleiben die Felder für Client-ID und Secret leer.

Welche OAuth-Scopes unterstützt der Server?

mcp:read und mcp:write. Bearer-Tokens werden nur im Authorization-Header akzeptiert. API-Schlüssel tragen dieselbe Unterscheidung als bei der Erstellung festgelegten Scope: Ein Lese-Schlüssel kann kein Mutations-Tool aufrufen, die Sperre ist also strukturell und keine Anweisung im Prompt.

Wie viele Tools stellt der Server Claude bereit?

128 registrierte Tools: 96 lesende und 32 Mutationen, alle für jedes Konto verfügbar. Alle drei Oberflächen laufen durch eine runTool()-Pipeline, sodass Autorisierung, Validierung, Durchsetzung der Freigaben und Audit-Protokoll zwischen ihnen nicht auseinanderlaufen können.

Warum lehnt Claude Desktop einen Eintrag mit "type": "http" in der Konfigurationsdatei ab?

Die Konfigurationsdatei von Claude Desktop startet nur lokale stdio-Server, daher besteht ein Eintrag für einen entfernten HTTP-Server die Validierung nicht. Nutzen Sie entweder die Connectors-Oberfläche, die Streamable HTTP über OAuth nativ spricht, oder binden Sie den entfernten Server über npx mcp-remote an. Das erfordert Node.js und erlaubt es, stattdessen einen festen gscw_live_-API-Schlüssel zu verwenden.

Welche Rate Limits gibt es?

Die MCP-Oberfläche erlaubt pro Nutzer 60 Aufrufe pro Minute und 1.000 pro Stunde. Die REST-Oberfläche unter /v1 erlaubt 180 pro Minute und 2.000 pro Stunde. Die Limits werden pro Nutzer und Oberfläche gezählt, und ein gedrosselter Aufruf liefert die Anzahl der Sekunden zurück, die vor dem nächsten Versuch zu warten sind.

Liest Claude die Search-Console-API direkt?

Bei den meisten Lesezugriffen nicht. Acht Suchanalyse-Tools und elf Analyse-Tools werden automatisch an ein ClickHouse-Warehouse geleitet, das die historischen Search-Console-Daten des Kontos enthält. Das liefert einen längeren Verlauf und vermeidet das Sampling der API. Jede Antwort enthält ein Feld dataSource mit dem Wert clickhouse oder api, dazu settledThrough und bei Bedienung aus dem Warehouse einen Hinweis zur Aktualität. Anfragen, die searchAppearance, den Typ googleNews, drei oder mehr verschiedene Dimensionen oder Paginierung benötigen, fallen immer auf die Live-API zurück.

Wie wird verhindert, dass das Modell seinen eigenen Kontext überflutet?

Tools mit Zeilenlimit holen eine einzelne Probezeile zu viel und liefern einen Paginierungsblock, der das Zeitfenster nennt, ob es weitere Zeilen gibt und wie der nächste Aufruf genau lautet. Stilles Abschneiden ist der Fehlermodus, den das Design ausschließen soll: Ein Modell, das genau limit Zeilen erhält, kann eine vollständige Antwort nicht von einer abgeschnittenen unterscheiden. query_search_analytics liefert standardmäßig 100 Zeilen, weil ein einzelner Aufruf bei 1.000 rund 58k Tokens zurückgab, mehr Kontext als die gesamte Tool-Liste.

Verwandte Themen

Richten Sie Claude auf Ihre eigenen Search-Console-Daten

Ein Endpunkt, OAuth oder ein Schlüssel mit begrenztem Scope und 128 Tools für die Properties, die Ihnen bereits gehören.

Search-Console-Tipps per E-Mail

Praxisnahe GSC- und GA4-Workflows, Produktneuigkeiten und SEO-Experimente. Kein Spam, jederzeit abbestellbar.