サーバーリファレンス

Claude Search Console MCP

GSC Wizard MCPサーバーは、OAuthで保護されたリモートのModel Context Protocolリソースです。Google Search Console、Bing Webmaster、GA4、Merchant CenterのデータをClaudeに提供します。このページは技術リファレンスで、トランスポート、認証の流れ、ツールの一覧、レスポンスの仕様、読み取りのルーティング、制限事項を扱います。

クリック単位のセットアップ手順をお探しの場合は、Claudeの接続ガイドをご覧ください。すべてのクライアントに共通する製品の概要は、Google Search Console MCPをご覧ください。

エンドポイント
https://mcp.gscwizard.com/mcp
トランスポート
Streamable HTTP
認証
OAuth 2.1 (DCR + PKCE) or Bearer key
ツール
128 · 96 read / 32 write
01

エンドポイントとトランスポート

このサーバーは、Streamable HTTP上でMCPを話します。SSE専用のフォールバック用エンドポイントはありません。非推奨のHTTP+SSEの組み合わせを前提にしているクライアントは、リクエストごとにストリーミングをネゴシエートする単一の/mcpパスに向けてください。

パス 認証 用途
POST /mcp必須Streamable HTTP上のJSON-RPC
/v1/*必須MCP以外の呼び出し元向けのREST
GET /health公開{ ok, sessions }を返します
GET /, /docs公開表示用のツールカタログ
/.well-known/oauth-protected-resource公開RFC 9728のリソースメタデータ

セッション

セッションの継続は、Mcp-Session-Idレスポンスヘッダーで行われ、クライアントは以降のリクエストでそれをそのまま返します。各セッションは、開いたuser_idにサーバー側で固定されます。別の認証情報で同じセッションIDを提示すると、暗黙に付け替えられることなく拒否されるため、セッションIDが漏れただけではアカウントを読み取れません。

3つのインターフェース、1つのパイプライン

MCP stdio、MCP Streamable HTTP、/v1のREST APIは、いずれも同じrunTool()パイプラインを通して実行されます。認可、引数の検証、プロパティ単位の権限の適用、サブスクリプションのチェック、レート制限、監査証跡は、この1か所で適用されるため、トランスポート間でずれることがありません。レジストリに追加したツールは、3つすべてから呼び出せ、同じルールで管理されます。

02

認証

2つの方式があり、クライアントの機能に応じて使い分けます。ClaudeのConnectors UIはOAuth 2.1を使い、設定ファイル型やヘッドレスのクライアントは固定のAPIキーを提示します。

OAuth 2.1のディスカバリーチェーン

MCPサーバーがリソースサーバーで、tool.gscwizard.comのアプリが認可サーバーです。Claudeは、ユーザーの操作なしで次の流れをたどります。

  1. 1

    保護リソースのメタデータ(RFC 9728)

    リソースに対する認証なしのGETで、認可サーバーとスコープが示されます。

  2. 2

    認可サーバーのメタデータ(RFC 8414)

    Claudeは発行元から/.well-known/oauth-authorization-serverを取得し、各エンドポイントの場所を確認します。

  3. 3

    動的クライアント登録(RFC 7591)

    Claudeは自分自身を登録し、専用のクライアントIDを受け取ります。コネクタの追加時にクライアントIDとシークレットの欄を空欄にするのはこのためです。入力すると登録が先取りされ、フローが壊れます。

  4. 4

    認可コード + PKCE

    S256チャレンジを使うauthorization_codeグラントで、更新も可能です。Googleのサインインと同意は認可サーバー上で行われ、Claude側では行われません。

リソースのメタデータ

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

認可サーバーのメタデータ

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

トークン発行前の2つのゲート。認可エンドポイントでは、有効なサブスクリプションと、接続済みのSearch Consoleプロパティが1つ以上あることが必要です。どちらかが欠けているアカウントは、以降のツール呼び出しがすべて拒否されるトークンを渡される代わりに、先にそれらを完了するよう案内されます。

APIキー

キーの接頭辞はgscw_live_で、アカウント → APIキーで作成し、Authorization: Bearerとして提示します。保存されるのはSHA-256ハッシュのみで、平文は作成時に一度だけ表示され、後から復元することはできません。ローテーションは、新しいキーを発行して古いキーを失効させることで行います。

各キーには、作成時に固定されるスコープがあります。読み取りスコープのキーは、変更系のツールを呼び出せません。このチェックはハンドラーの前にパイプラインで実行されるため、読み取り専用はモデルが言いくるめられかねない指示ではなく、認証情報の構造上の性質です。

03

クライアントの設定

Claudeの4つの利用環境に対して、3種類の接続方法があります。

Claudeのウェブ版とデスクトップ版(コネクタ)

設定 → コネクタ → カスタムコネクタを追加。URLを入力し、OAuthの2つの欄は空欄のままにします。

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

Claude Code

1つのコマンドで、キーのヘッダーつきでリモートサーバーを登録します。セッション内で/mcpを実行して確認してください。

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

Claude Desktopの設定ファイル

デスクトップの設定ファイルはローカルのstdioサーバーしか起動しないため、"type": "http"のエントリは検証で失敗します。OAuthではなく固定のキーを使いたい場合は、mcp-remote(Node.jsが必要)でリモートサーバーを橋渡ししてください。

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

プログラムから使う(Claude Agent SDK)

エージェントのオプションでHTTPのMCPサーバーとして宣言します。JSON-RPCのハンドシェイクはSDKが処理します。

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

無人で動かす用途には、読み取りスコープのキーを使ってください。エージェントが少数のツールしか必要としない場合は、クライアント側でも許可するツールのリストを絞ります。表面が小さいほど1ターンあたりのコストが下がり、取得したページ内容に紛れ込んだプロンプトインジェクションが届く範囲も狭くなります。

04

ツールの一覧

登録されているツールは128個で、読み取り96個と変更32個です。すべてのアカウントで利用できます。どのツールもMCPのアノテーション(readOnlyHint、destructiveHint、openWorldHint、title)を備えているため、クライアントはツール名を決め打ちせずに、表示や制御ができます。

グループ 代表的なツール スコープ
検索アナリティクスquery_search_analytics, query_top_queries, query_top_pages, query_countries, query_devices読み取り
分析find_decaying_content, analyze_cannibalization, get_ranking_changes, score_opportunities, analyze_ctr_curve読み取り
検知detect_anomalies, detect_change_points, forecast_traffic, get_decay_overview読み取り
インデックス登録inspect_url, bulk_inspect_urls, get_indexing_tracker, list_sitemaps読み取り
その他のデータソースBing Webmaster、GA4、Yandex、Merchant Center、Core Web Vitals読み取り
変更submit_sitemap, submit_indexnow_urls, create_topic_cluster, create_annotation, add_site書き込み

分析はサーバー側で実行されます。劣化、カニバリゼーション、CTR曲線のモデリング、変化点の検知、機会のスコアリングはサーバーで計算され、結果として返されます。モデルが受け取るのは結論とその根拠となる行であり、統計的に推論させるための生データではありません。そのため、1ターンあたりのコストが下がり、計算のずれも起きません。

ツールごとの引数スキーマとペイロード例を含む完全なカタログは、mcp.gscwizard.comで公開されています。レジストリとの対応がテストされているため、実際に登録されているツールから静かに遅れることはありません。

05

レスポンスの仕様

黙って切り捨てるのではなく、ページネーションで返す

行数の上限そのものがリスクなのではなく、上限が明示されないことがリスクです。ちょうどlimit件の行を渡されたモデルは、完全な回答と途中で切れた回答を区別できず、自信満々に「このサイトのクエリは100件です」と報告してしまいます。そのため、行数に上限のあるツールは、プローブ用に1行多く取得し、最大でもlimit件を返したうえで、対象期間、続きがあるかどうか、次に呼ぶべき正確な呼び出しを示すブロックを添付します。

"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のデフォルトは、当初の1,000行ではなく100行です。1,000行では1回の呼び出しで約58kトークン、つまりツール一覧全体より多くのコンテキストを消費していました。ランキング型の分析ツールは共有の分析コア内で上限をかけており、ページネーションのブロックは付きません。

日付はどこでも省略できます

呼び出し側が今日の日付を知っていなければならないツールはありません。期間を省略すると、Search Consoleのレポートに約3日の遅延があることを考慮して、直近28日間の確定した日が使われ、比較の基準期間は直前の同じ長さの期間になります。また、日付パーサーは、LLMクライアントがよく出力するnull、"null"、""を検証エラーにせず「デフォルトを使う」として扱います。これにより、リトライのループという問題が丸ごとなくなります。

出所を示すフィールド

フィールド意味
dataSourceclickhouseかapiのいずれか。この読み取りがどちらの経路で処理されたかを示します
settledThroughデータが揃っている最後の日付
dataMaturity最初の未確定の日付、基準となるタイムゾーン、使用したプローブ
noteモデルがそのまま伝えるための、データの鮮度に関する注意書き(文章)

これらは、回答の出典を示せるようにするためのものです。Claudeが先週トラフィックが落ちたと伝えるとき、本当の減少とレポートの遅延を見分ける手がかりになるのがsettledThroughです。レポートの遅延は、Search Consoleの自動分析で最もよくある誤警報です。

06

読み取りのルーティング

大半の読み取りは、Search Console APIを呼びません。過去のパフォーマンスデータはClickHouseのウェアハウスに取り込まれ、対象となる読み取りはそこから処理されます。APIの16か月という範囲より長い履歴を扱え、クエリの種類が多いプロパティでもAPI側のサンプリングがありません。

ウェアハウスで処理

検索アナリティクス系の8つのツール(query_search_analytics、query_top_queries、query_top_pages、query_countries、query_devices、get_site_summary、get_query_performance、get_page_performance)と、11の分析ツールです。

常にライブAPI

searchAppearance、googleNewsタイプ、3つ以上の異なるディメンション、またはページネーションが必要なリクエストです。バックフィルが完了していないプロパティも対象です。

ルーティングはリクエストごとに自動で行われ、呼び出し側が選ぶことはありません。ウェアハウスからの読み取りは、読み取り専用のロールと、アカウントに紐づく行ポリシーを使うため、テナントの境界はクエリビルダーだけでなくデータベースによっても強制されます。サーバーが読み取りの経路でウェアハウスに書き込むことはありません。

Claudeにとっての実際的な影響として、ウェアハウスは実時間より約2日、ライブAPIは約3日遅れており、ウェアハウスから返した応答はnoteでその旨を伝えます。「先週」を求めると、途中までのデータが減少として示されることなく、週単位で完結したデータが返ります。

07

制限とエラー

インターフェース1分あたり1時間あたり
MCP601,000
REST /v11802,000

ユーザーごと、インターフェースごとにカウントされます。制限にかかった呼び出しには、どの時間枠に達したかと待つべき秒数が返されるため、エージェントは推測せずに正確にバックオフできます。URL検査には、Googleによる別の1日あたりのクォータがあり、get_inspection_quotaで確認できます。

対処しておきたいエラーの形

状況動作
読み取りキーで書き込みツールを呼び出したハンドラーの実行前に拒否される
プロパティが未接続、または権限が付与されていない権限の適用により、理由つきで拒否される
連携が未設定エラーにはせず、理由つきでnotConfigured: trueを返す
別の認証情報でセッションIDが再利用された付け替えられずに拒否される
新規にGoogleのOAuthを行い、プロパティがまだ反映されていないGoogleが短時間403を返す。接続の直後は少し待って再試行する

notConfiguredの規約は、エージェントにとって重要です。GA4やMerchant Centerの接続が未設定なのは、報告すべき状態であり、再試行すべき例外ではありません。この2つを区別することで、再試行では解決できない状況でレート制限を使い果たすループを防げます。

08

セキュリティモデル

無人で動くエージェントには、読み取りスコープのキーと、そのジョブに必要な特定のツールだけをクライアント側で許可するリストの組み合わせをおすすめします。この組み合わせにより、エージェントが取得するどのコンテンツ経由でプロンプトインジェクションが届いても、その影響範囲を限定できます。

09

トラブルシューティング

コネクタを追加した直後に失敗する

多くの場合、クライアントIDまたはシークレットが入力されています。サーバーは動的クライアント登録を使うため、両方の欄を空にする必要があります。コネクタを削除し、URLだけで追加し直して、Claudeに自分自身を登録させてください。

認可は完了したのに、すべてのツールがunauthorizedを返す

認可エンドポイントが強制する2つのゲートを確認してください。有効なサブスクリプションと、アカウントに接続された1つ以上のSearch Consoleプロパティです。接続されたプロパティがないアカウントに発行されたトークンには、読み取りが許されるものが何もありません。

Claude Desktopが設定のエントリを無効として拒否する

設定ファイルが起動するのはローカルのstdioプロセスだけなので、"type": "http"は有効なエントリではありません。Connectors UIを使うか、前述のようにnpx -y mcp-remoteで橋渡ししてください。

Googleを接続した直後に403が返る

新しく付与されたSearch Consoleの認可がGoogle側に反映されるまで、少し時間がかかります。接続後の数分間に出る403は、多くの場合、権限エラーではなく反映待ちです。OAuthフローをやり直す前に、再試行してください。

数字がSearch ConsoleのUIと一致しない

レスポンスのdataSourceとsettledThroughを確認してください。ウェアハウスから返した読み取りと、名目上は同じ期間のUI表示とでは、終了日が異なることがあります。また、UI自体がクエリ数の多いレポートをサンプリングしますが、ウェアハウスはサンプリングしません。

エージェントがレート制限を使い果たしている

多くの場合は、notConfiguredレスポンスに対するリトライのループが原因です。これは何度再試行しても解決しません。あるいは、1つの分析ツールなら1回の呼び出しで済むのに、ページごとに繰り返し呼んでいるケースです。行を取得して自分で推論するのではなく、サーバー側の分析ツールを使ってください。

10

よくある質問

Claude Search Console MCPはどのトランスポートを使いますか?

https://mcp.gscwizard.com/mcpのStreamable HTTPです。セッションの継続はMcp-Session-Idレスポンスヘッダーで行われ、各セッションはそれを開いたユーザーにサーバー側で固定されるため、別の認証情報で再利用されたセッションIDは拒否されます。ローカルビルド用にstdioのエントリポイントがあり、/v1のRESTは同じパイプラインを通して、プレーンなHTTP+JSONを提供します。

ClaudeコネクタのOAuthディスカバリーはどのように動きますか?

MCPサーバーはOAuth 2.1のリソースサーバーで、tool.gscwizard.comを認可サーバーとして示すRFC 9728の保護リソースメタデータを公開しています。Claudeはその発行元からRFC 8414のメタデータを読み取り、RFC 7591の動的クライアント登録で自分自身を登録し、PKCE S256つきのauthorization_codeフローを実行します。クライアントIDとシークレットの欄を空欄にするのはこのためです。

このサーバーはどのOAuthスコープに対応していますか?

mcp:readとmcp:writeです。Bearerトークンは、Authorizationヘッダーでのみ受け付けます。APIキーでは、同等の区別が作成時に固定されるスコープとして備わっており、読み取りキーは変更系のツールを呼び出せません。そのため、このゲートはプロンプトによる指示ではなく、構造的なものです。

サーバーがClaudeに公開するツールはいくつですか?

登録されているツールは128個で、読み取り96個、変更32個、すべてのアカウントで利用できます。3つのインターフェースはすべて1つのrunTool()パイプラインを通して実行されるため、認可、検証、権限の適用、監査証跡がインターフェース間でずれることはありません。

Claude Desktopが設定ファイルの"type": "http"のエントリを拒否するのはなぜですか?

Claude Desktopの設定ファイルが起動するのはローカルのstdioサーバーだけなので、リモートのHTTPエントリは検証で失敗します。Streamable HTTPをOAuthでネイティブに扱うConnectors UIを使うか、npx mcp-remote(Node.jsが必要)でリモートサーバーを橋渡ししてください。後者なら、代わりに固定のgscw_live_ APIキーを提示できます。

レート制限はどうなっていますか?

MCPのインターフェースは、ユーザーあたり1分に60回、1時間に1,000回まで呼び出せます。/v1のRESTインターフェースは、1分に180回、1時間に2,000回までです。制限はユーザーごと、インターフェースごとにカウントされ、制限にかかった呼び出しには、再試行までに待つべき秒数が返されます。

ClaudeはSearch Console APIを直接読み取りますか?

大半の読み取りでは読み取りません。検索アナリティクスの8つのツールと11の分析ツールは、アカウントの過去のSearch Consoleデータを保持するClickHouseのウェアハウスに自動でルーティングされ、より長い履歴が得られ、APIのサンプリングも避けられます。すべてのレスポンスに、clickhouseかapiの値を持つdataSourceフィールドが含まれ、ウェアハウスから返した場合はsettledThroughと鮮度に関する注意書きも付きます。searchAppearance、googleNewsタイプ、3つ以上の異なるディメンション、またはページネーションが必要なリクエストは、常にライブAPIにフォールバックします。

モデルが自分のコンテキストを溢れさせないようにしているのはなぜですか?

行数に上限のあるツールは、プローブ用に1行多く取得し、対象期間、続きの行があるかどうか、次に呼ぶべき正確な呼び出しを示すページネーションのブロックを返します。設計上なくそうとしているのは、黙って切り捨てられるという失敗です。ちょうどlimit件の行を渡されたモデルは、完全な回答と途中で切れた回答を区別できません。query_search_analyticsのデフォルトが100行なのは、1,000行では1回の呼び出しで約58kトークン、つまりツール一覧全体より多くのコンテキストを消費したためです。

関連

Claudeを自分のSearch Consoleデータにつなぐ

1つのエンドポイント、OAuthまたはスコープ付きのキー、そして手持ちのプロパティに対する128のツール。

Search Consoleのヒントをメールでお届け

GSCとGA4の実践的なワークフロー、製品のアップデート、SEOの実験をお届けします。スパムは送りません。いつでも配信を停止できます。