Google Search Console について
AI アシスタントを Google Search Console に接続し、分析、URL 検査、サイトマップ管理を行うローカル MCP サーバーです。API の制約を検証し、トラフィック変化を説明するほか、インデックス監査を再開できます。
主な機能
- 01検索タイプ別の分析データ取得
- 02時間単位の分析と期間比較
- 03トラフィック変化の要因分析
- 04URL 検査と再開可能なインデックス監査
- 05サイトマップとプロパティの管理
活用シーン
- 01クリック数が減ったクエリの特定
- 02期間ごとの検索パフォーマンス比較
- 03URL の検査とインデックス状態の診断
- 04サイトマップ URL の複数日にわたる監査
MCP 対応
MCP ツールとして Google Search Console のデータと一部の書き込み操作を提供し、構造化出力とリクエスト検証に対応します。`GSC_ENABLE_WRITES=0` で書き込みを無効にできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx open-gsc-mcpGSC_SERVICE_ACCOUNT_FILEAbsolute path to a service account JSON key. Leave unset to use the OAuth login from `open-gsc-mcp auth login`.GSC_ENABLE_WRITESSet to 0 to leave out the submit/delete sitemap and add/delete site tools.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
22掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Google Search Console MCP サーバー
AI アシスタント(Claude Code、Claude Desktop、Cursor、その他あらゆる MCP クライアント)を Google Search Console API に接続する、ローカルの Model Context Protocol サーバーです。クリック数、 クエリ、ページ、インデックス登録、サイトマップについて自然な言葉で質問すると、サーバーが適切な API 呼び出しに変換し、構造化データを返します。
お使いのマシン上で動作し、Google と通信します。インデックス登録の監査中にアクセスするサイトも、ご自身のサイトだけです。保存するのはログイン情報と監査の進捗だけで、それ以外は保存しません。
非公式です。 このプロジェクトは Google との提携や、Google による承認を受けていません。ご自身の Google Cloud 認証情報を使用し、Google の利用規約に基づくご自身の利用に責任を負ってください。
この MCP サーバーを選ぶ理由
- API の落とし穴を検出します。 Google は、不正なリクエストの多くにエラーではなく空の結果を返します。 無効な正規表現、2 文字の国コード、10 日以上前の時間単位データ、未来の期間などが該当します。 ほかにも、組み合わせによっては簡潔な 400 エラーで失敗します。こうした条件はすべて呼び出し前に 確認し、わかりやすい言葉で説明します。ルールはブログ記事から転載したものではなく、 実際の API に対して検証済みです。
- 数値だけでなく、変化の理由を説明します。
explain_changeは増減をページ、クエリ、国、デバイス、 検索での見え方ごとに分解し、インプレッションの減少とクリック率の低下を区別して、Google が公開した 更新情報と照合します。 - インデックス登録を全面的に監査します。 Google の API では、ページのインデックス登録レポートにある URL 一覧を取得できません。そのため、
audit_indexingは一覧を再構築します。日ごとの割り当ての範囲内で すべてのサイトマップ URL を調べ、翌日には停止した箇所から処理を再開し、各ページの現在の状態を Google が最後に確認した状態と照合できます。 - 安全策を備え、API の機能をすべて利用できます。 読み取りと書き込みの両方に対応しており、プロパティの追加と削除、サイトマップの送信と削除ができます。変更にはプロパティの正確な名前が必要です。また、変更を行うツールには書き込み(削除の場合は破壊的操作)のマークが付いているため、クライアントは実行前に確認を求められます。書き込みを無効にするには
GSC_ENABLE_WRITES=0を設定します。 - 構造化出力。 すべてのツールで出力スキーマを定義し、結果の行は名前付きフィールドで返します。また、各アナリティクス結果には Google に送信した正確なリクエストが含まれます。
- API を全面的にカバー: 検索アナリティクス(すべての検索タイプ、フィルター、データ状態、ページネーション)、時間単位のデータ、検索での見え方、URL 検査(単一および並行バッチ)、サイトマップ、プロパティに加え、検索の各領域(Discover、画像、動画、Google ニュース、ニュースタブ)に特化したツールを備えています。各ツールは、その領域でサポートされる項目だけを受け付けます。
- 最新のスタックを採用: MCP Python SDK 2.x(2026-07-28 のプロトコルと、それ以前のクライアントに対応)と非同期クライアントを使用しているため、バッチ検査を並行して実行できます。
クイックスタート
uv と、少なくとも 1 つの Search Console プロパティにアクセスできる Google アカウントが必要です。
-
OAuth クライアントを作成する(初回のみ、約 5 分):
- console.cloud.google.com を開き、プロジェクトを作成するか、既存のプロジェクトを選択します。
- APIs & Services > Library:Google Search Console API を有効にします。
- Google Auth Platform > Branding:アプリ名とメールアドレスを入力します。
- Google Auth Platform > Audience:External を選択し、テストユーザーとして Google アカウントを追加してから、Publish app をクリックし、ステータスを In production にします。 これを省略すると、Google により 7 日ごとにログインの有効期限が切れます。
- Google Auth Platform > Clients > Create client:Desktop app を選択します。JSON をダウンロードし、リポジトリ外に保存します(例:
~/.config/open-gsc-mcp/client_secret.json)。
-
サインインする(ブラウザーが一度開きます。サーバー自体がブラウザーを開くことはありません):
uvx open-gsc-mcp@latest auth login --client-file ~/.config/open-gsc-mcp/client_secret.jsonアプリが自分のもので、審査されていないため、Google に「Google hasn't verified this app」と表示されます。Advanced > Go to (your app) を選択してください。完了すると、コマンドにアクセス可能なプロパティが一覧表示されます。
-
サーバーをクライアントに追加する(以下を参照)し、クライアントを再起動して、次のように尋ねます。 「今月、example.com でクリック数が最も減少したクエリは何ですか?」
クライアントの設定
Claude Code
claude mcp add --scope user gsc -- uvx open-gsc-mcp@latest
Claude Desktop:claude_desktop_config.json を編集します
(macOS:~/Library/Application Support/Claude/、Windows:%APPDATA%\Claude\):
{
"mcpServers": {
"gsc": {
"command": "uvx",
"args": ["open-gsc-mcp@latest"]
}
}
}
Claude Desktop で uvx が見つからないと表示される場合は、絶対パスを使用してください(macOS と Linux では which uvx、Windows では where uvx)。
Cursor:同じ mcpServers ブロックを ~/.cursor/mcp.json に追加します。
@latest を指定すると、クライアントがサーバーを起動するたびに、uvx が新しいリリースを確認します。指定しない場合、uvx は初回にキャッシュしたバージョンを使い続けます。選択したときだけアップグレードするには、代わりに [email protected] のようにバージョンを固定します。
設定を渡すには、サーバーエントリーに env オブジェクトを追加するか、claude mcp add に -e NAME=value を指定します。クライアントは任意の作業ディレクトリからサーバーを起動するため、パスは絶対パスで指定する必要があります。
サービスアカウント(ヘッドレス)
サーバー、CI、共有マシンでは、個人ログインの代わりにサービスアカウントを使用します。
-
Google Cloud で IAM & Admin > Service Accounts を開き、アカウントを作成してから、Keys > Add key > JSON を選択します(一部の組織ではポリシーによりキーの作成が制限されています)。
-
Search Console で Settings > Users and permissions > Add user を開き、各プロパティにサービスアカウントのメールアドレスを追加して、Full または Restricted の権限を付与します。
-
サーバーにキーを指定します。
claude mcp add --scope user gsc -e GSC_SERVICE_ACCOUNT_FILE=/abs/path/key.json -- uvx open-gsc-mcp@latest
GSC_SERVICE_ACCOUNT_FILE が設定されている場合、OAuth ログインより優先されます。
ツール
| ツール | 機能 |
|---|---|
list_sites | このアカウントがアクセスできるプロパティと、正確な site_url および権限レベルを一覧表示します。 |
get_site | 1つのプロパティの種類と権限レベルを取得します。 |
query_search_analytics | クエリ、ページ、国、デバイス、日付、検索での見え方別のクリック数、表示回数、CTR、掲載順位を取得します。検索タイプ、フィルター、final または all データ、ページングを指定できます。 |
query_hourly_analytics | 過去約10日間について、時間別に同じデータを取得します。不完全な時間帯が始まる時刻も報告します。 |
query_discover_analytics | ページ、国、日付別の Google Discover データを取得します。クエリ、デバイス、掲載順位には対応していないため、このツールでは指定できません。 |
query_image_analytics | Google 画像検索のクエリ、ページ、画像検索結果内の掲載順位を取得します。 |
query_video_analytics | Google 検索の「動画」タブのデータを取得します。 |
query_google_news_analytics | Google ニュース(news.google.com とアプリ)のページ、国、デバイス、日付別のデータを取得します。クエリと掲載順位には対応していません。 |
query_news_tab_analytics | クエリと掲載順位を含む、Google 検索の「ニュース」タブのデータを取得します。 |
list_search_appearances | プロパティに表示されたリッチリザルトなどの検索結果機能を一覧表示します。Google の2段階の検索での見え方クエリの第1段階です。 |
query_search_appearance | 第2段階:1つの検索での見え方を、クエリ、ページ、国、デバイス、日付別に分類します。 |
compare_periods | 同じ長さの2つの期間について、合計と項目ごとの変化を絶対値と割合で示し、変化の大きい項目から順に表示します。 |
explain_change | 2つの期間の間でトラフィックが変動した理由を説明します。どのページ、クエリ、国、デバイス、検索での見え方が変動に影響したか、表示回数とクリック率のどちらによるものか、期間中またはその前後に Google のアップデートがあったかを示します。 |
inspect_url | 1つの URL のインデックス登録状況、カバレッジ、正規 URL(Google の判定とユーザーの指定)、クロール、robots.txt、リッチリザルトを確認します。 |
batch_inspect_urls | 最大50件の URL を並行して確認し、進捗、URLごとのエラー、判定の概要を表示します。割り当て量に達すると、正常に停止します。 |
audit_indexing | すべてのサイトマップ URL を、必要な回数と日数をかけて確認し、インデックス登録状況ごとに分類して有効な修正方法を示します。正規 URL の競合、表示回数のないインデックス登録済みページ、サイトマップにないページも検出します。オプションで各ページをライブチェックできます。 |
list_sitemaps、get_sitemap | 送信済みサイトマップと、エラー、警告、保留中の状態、URL 数を取得します。 |
1.1.0 の query_news_analytics は非推奨です。呼び出しは引き続き動作し、source で選択した新しいニュースツールに転送されますが、2.0.0 で削除される予定です。
変更を行うツールは4つあります:submit_sitemap、delete_sitemap、add_site、delete_site です。
これらのツールが受け付けるのは、プロパティの正確な site_url のみです。また、サイトマップはそのプロパティに属している必要があります。
これらのツールには書き込み操作(削除は破壊的操作)として注釈が付いており、まずユーザーに確認するようモデルに指示しますが、サーバー自身が確認を求めることはありません。確認プロンプトが表示されるかどうかは、クライアントの権限設定によります。この4つの操作は、Google の API で許可されている変更のすべてです。インデックス登録のリクエスト、検索結果からの URL の削除、ユーザーや設定の管理はできません。これらを使わないサーバーにするには、GSC_ENABLE_WRITES=0 を設定してください。
サイトは sc-domain:example.com、https://www.example.com/、裸の example.com、またはサイト上の任意の URL で指定できます。正確なプロパティ以外が指定された場合は、実際のプロパティ一覧と照合し、該当するサイトを含むプロパティに解決されます。その場合は結果にその旨が示され、ページ URL を指定した場合はサイト全体のプロパティを対象としていることが記載されます。
プロンプト:weekly_report、indexing_audit、content_opportunities は、具体的な日付と正確なツール呼び出しを含む、すぐに使えるワークフローです。
インデックス登録状況の監査では進捗がローカルに保存されるため、audit_indexing を呼び出すたびに、前回停止したところから続行します。各 URL の確認には数秒かかるため、1回の呼び出しで確認できるのは約50件です。大規模なサイトでは、ターミナルから uvx open-gsc-mcp@latest audit sc-domain:example.com を実行するか、cron から毎日実行すると、1日あたり最大2,000件を処理できます。その後、結果についてアシスタントに質問してください。
設定
| 変数 | デフォルト | 用途 |
|---|---|---|
GSC_SERVICE_ACCOUNT_FILE | 未設定 | サービスアカウントキーです。設定すると、OAuth の代わりに使用されます。 |
GSC_OAUTH_CLIENT_FILE | 未設定 | OAuth クライアント JSON です。設定すると、auth login で --client-file が不要になります。 |
GSC_TOKEN_FILE | ユーザーごとの設定ディレクトリ | auth login でログイン情報を保存する場所です(モード 0600)。 |
GSC_ENABLE_WRITES | 1 | 0 に設定すると、変更を加える 4 つのツールが除外されます。その場合、auth login は読み取りアクセスのみを求めます。 |
GSC_LOG_LEVEL | INFO | DEBUG にすると、すべての HTTP リクエストもログに記録されます。ログは stderr に出力されます。 |
GSC_DATA_DIR | ユーザーごとのデータディレクトリ | インデックス監査の進捗を保存する場所です(所有者のみがアクセスできる SQLite ファイル 1 つ)。 |
コマンドライン:
uvx open-gsc-mcp@latest # run the MCP server over stdio (what clients do)
uvx open-gsc-mcp@latest auth login # sign in; --read-only to grant reads only, --no-browser over SSH
uvx open-gsc-mcp@latest auth status # which credentials are used, and do they work
uvx open-gsc-mcp@latest auth logout # revoke and delete the saved login
uvx open-gsc-mcp@latest audit SITE # inspect up to a day's 2,000 sitemap URLs; --fetch-pages
API の動作を代わりに処理
| Google の動作 | サーバーの処理 |
|---|---|
searchAppearance は、ほかのディメンションとグループ化できません(400)。 | リクエストを拒否し、2 段階のパターンを案内します。 |
searchAppearance に対する notEquals/notContains は、除外するはずの行を返します(Google で確認済みのバグ)。 | 説明を添えてリクエストを拒否します。 |
| Discover と Google News にはクエリデータがなく(400)、掲載順位もありません。Discover にはデバイスデータもありません(400)。 | query(Discover では device も)を拒否し、行から掲載順位を除外します。サーフェスツールでは、これらの項目を選択することもできません。 |
searchAppearance フィルターには、その検索タイプの正確な大文字表記の表示名が必要です(それ以外は 400)。 | equals を必須とし、名前を大文字に変換して、専用の 2 段階目のツールを提供します。 |
hour には dataState=hourly_all が必要で、date と組み合わせることはできません(400)。 | 専用の時間別ツールで両方を設定します。 |
| 約 10 日より古い時間別データ、未来の日付範囲、無効な正規表現または RE2 以外の正規表現、2 文字の国コード、不明なデバイスは、すべてエラーなしで 0 行 を返します。 | 呼び出し前にそれぞれを拒否します。また、通常は日付の誤りである、今日より後の終了日も拒否します。 |
| 日付は太平洋時間で、履歴データは 16 か月分です。 | 太平洋時間を使用し、開始日を範囲内に補正して、そのことを通知します。 |
byProperty 集計は、ページによるグループ化またはフィルター指定がある場合、また Discover と Google News では失敗します(400)。 | リクエストを拒否します。 |
| 最近のデータは不完全ですが、Google が開始時点を通知するのは日付でグループ化した場合のみです。 | first_incomplete_date/first_incomplete_hour を報告し、ほかのグループ化では直近約 3 日分が含まれることを注記します。比較では、デフォルトで final データを使用します。 |
| 1 リクエストあたり最大 25,000 行で、上位の行のみです。 | デフォルトの行数を 100 にし、ページング用に next_start_row を返します。 |
| URL Inspection:プロパティあたり 1 日 2,000 件、1 分あたり 600 件です。 | バッチを一度に 5 件ずつ処理し、クォータエラーが発生した場合は正常に停止します。 |
siteUrl はプロパティの文字列と完全に一致する必要があります。 | ドメイン名のみの入力や URL を、それらを含むプロパティに解決します。 |
| Page indexing レポートの URL リストは API に含まれておらず、URL Inspection は 1 日 2,000 件までです。 | audit_indexing は、完了までに何日かかっても、サイトマップからリストを再構築します。 |
Google の API では利用できないため、どのサーバーでも提供できません:生成 AI レポート(AI Overviews と AI Mode)、プラットフォームプロパティ(Instagram、TikTok、X、YouTube)、ブランドクエリフィルター、Core Web Vitals、手動による対策、リンク。
トラブルシューティング
- 「Google のログインの有効期限が切れたか、取り消されました(invalid_grant)」:OAuth アプリがまだテスト中の状態である可能性が高く、ログインの有効期間が 7 日に制限されています。公開して(クイックスタートの手順 1.4)、もう一度
auth loginを実行してください。 - 「サインインしていません」:
uvx open-gsc-mcp@latest auth login --client-file ...を実行するか、GSC_SERVICE_ACCOUNT_FILEを設定してください。 - プロパティが表示されない、またはサービスアカウントで 403 が返される場合:Search Console で、サービスアカウントのメールアドレスをプロパティのユーザーとして追加してください。変更には、そこでオーナー権限またはフル権限も必要です。
- 「Google ログインで許可されるのは読み取りのみです」:フルアクセスがデフォルトになる前、または
--read-onlyを指定してサインインしています。変更を許可するには、もう一度auth loginを実行してください。 - 結果が空の場合:日付範囲(太平洋時間。
finalデータには 2~3 日の遅延があります)、search_type、フィルターを確認してください。各結果のnotesとrequestに、リクエスト内容が表示されます。 - セットアップ全体を確認する場合:
uvx open-gsc-mcp@latest auth statusを実行してください。
セキュリティとプライバシー
- stdio 経由でローカルに実行され、テレメトリーはありません。Google の API を呼び出し、
explain_change用に Google の公開更新フィード(status.search.google.com)を読み取ります。 - インデックス監査では、プロパティのサイトマップも読み取ります。また、
fetch_pagesを使う場合はページも読み取ります。取得するのはプロパティ内の URL のみで、プライベートアドレスまたはローカルアドレスに解決されるホストにはアクセスせず、プロパティ内にとどまる場合に限ってリダイレクトをたどります。各ページから保持するのは、ステータスコード、リダイレクト、robots ディレクティブ、正規 URL のみです。 - 監査の進行状況(URL とそのインデックス状況)は、ユーザーデータディレクトリ(
GSC_DATA_DIR)内の SQLite ファイル 1 つに保存され、本人のみが読み取れます。 - OAuth ログインは、ユーザー設定ディレクトリに所有者のみがアクセスできる権限で保存されます。
auth logoutは Google 側でログインを取り消し、削除します。 - ログイン時には、書き込みツールが必要とする Search Console へのフルアクセスを Google に要求します。読み取りアクセスのみを許可するには、
auth login --read-only(またはGSC_ENABLE_WRITES=0)を使用してください。 - クエリやページの文字列は、検索ユーザーや他のウェブサイトに由来します。サーバーはモデルに対し、それらを指示ではなくデータとして扱うよう伝えます。
脆弱性は非公開で報告してください。SECURITY.md をご覧ください。
開発
git clone https://github.com/onlymoein/google-search-console-mcp
cd google-search-console-mcp
uv sync
uv run pytest # unit and in-memory MCP tests, no network
uv run ruff check . && uv run ruff format --check . && uv run pyright
ご自身のプロパティに対する、ライブの読み取り専用チェック:
export GSC_SERVICE_ACCOUNT_FILE=/abs/path/key.json
GSC_TEST_SITE=sc-domain:example.com uv run pytest -m live
uv run python scripts/probe_compat.py sc-domain:example.com
プロジェクトの構成とツールの追加方法については、CONTRIBUTING.md をご覧ください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。