Skip to main content
Glama
pradeepoct

gsc-mcp-connector

by pradeepoct

gsc-mcp-connector

セルフホスト型 Google Search Console MCP サーバー。Cloudflare Workers に 15 分でデプロイ可能。ChatGPT、Claude、または MCP 対応クライアントに接続し、自然言語で GSC データをクエリできます。

Deploy to Cloudflare License: MIT

このプロジェクトが提供するもの

デプロイ後、プライベートな MCP エンドポイントが得られ、AI アシスタントに以下の 4 つのツールを公開します:

  • list_sites — 認証済みユーザーがアクセス可能なすべてのプロパティを検出

  • query_search_analytics — クリック数、インプレッション数、CTR、掲載順位。クエリ / ページ / 国 / デバイス / 検索表示 / 日付でフィルタ可能

  • inspect_url — URL Inspection API の完全な出力(インデックス状況、正規URL、モバイル、AMP)

  • list_sitemaps — 送信済みのすべてのサイトマップとその処理状況

あなたが「過去28日間とその前の28日間で、クリック数の減少が最も大きかった50のクエリはどれですか?」と尋ねると、アシスタントがデータを取得し、差分を計算し、分析を記述します。もう SQL エクスポートは必要ありません。

Related MCP server: gsc-mcp-connector

仕組み

ChatGPT/Claude  ──OAuth──▶  Your Worker  ──OAuth──▶  Google
                                 │
                                 └─ holds your Google refresh_token
                                    (encrypted, in OAuth grant props)

2 つの OAuth チェーン:

  1. MCP クライアント → Worker: ChatGPT/Claude が Worker に対して OAuth 2.1 + PKCE を実行します。ログイン UI は、デプロイ時に設定した静的な「アクセスキー」(コネクタゲート)の入力を求めます。

  2. Worker → Google: アクセスキーの確認後、ユーザーは Google の同意画面にリダイレクトされ、webmasters.readonly を許可します。結果として得られたリフレッシュトークンは OAuth 認可に保存され、ツール呼び出しのたびに Worker が新しいアクセストークンを取得して GSC を呼び出します。

ユーザーの Google アカウントがアクセスを制御します。サービスアカウントは不要、GSC のユーザー管理の手間も不要、権限反映の遅延もありません。

前提条件

項目

コスト

必須?

ChatGPT Plus / Pro / Team または Claude.ai Pro / Team

$20/月〜

カスタム MCP コネクタは有料プランでのみ利用可能です。

Cloudflare アカウント

無料枠で十分

はい

Google Cloud プロジェクト

無料

はい — OAuth クライアント作成のため

確認済みの Search Console プロパティ

無料

はい(すでにお持ちのはずです)

Node.js 20+ + wrangler CLI

無料

シークレット設定手順で推奨

Cloudflare Workers の無料枠(1日10万リクエスト)は個人の SEO 利用で十分です。有料の Cloudflare プランは不要です。

クイックスタート(約15分)

1. Worker をデプロイする

この README 上部の Deploy to Cloudflare ボタンをクリックしてください。Cloudflare がリポジトリをあなたのアカウントにクローンし、依存関係をインストールし、https://gsc-mcp-connector.<your-subdomain>.workers.dev のような公開 URL を発行します。

: この時点で、MCP_BEARER_TOKENGOOGLE_OAUTH_CLIENT_IDGOOGLE_OAUTH_CLIENT_SECRET の入力を求められます。Google のものはまだ用意できていません — MCP_BEARER_TOKEN には適当なランダムな16進文字列を入力し(後で変更可能)、Google の2つのフィールドには何でも貼り付けてください。これらは手順4で適切に設定します。

ボタンを使わずに進めたい場合は、リポジトリをローカルにクローンし、npm install を実行し、npx wrangler deploy を実行してください。

デプロイ後、Worker URL をメモしてください。手順3と手順5の両方で必要になります。

2. コネクタのアクセスキーを生成する

これは静的なランダム文字列で、Google OAuth の前にゲートとして使用されます。コネクタを使用するすべての人は、ログイン UI でこの文字列を貼り付ける必要があります。

openssl rand -hex 32

出力を保存してください — これをシークレットとして設定し、ChatGPT/Claude で使用します。

3. Google Cloud(OAuth クライアント)の設定

docs/SETUP_GCP.md のステップバイステップに従ってください。承認済みのリダイレクト URI には手順1で取得した Worker URL を使用します。最終的に Client IDClient Secret が発行されます。

これが最も長い手順です(初回は約10分)が、一度だけ行えば OK です。

4. Worker シークレットの設定

npx wrangler secret put MCP_BEARER_TOKEN
# paste the value from step 2

npx wrangler secret put GOOGLE_OAUTH_CLIENT_ID
# paste the Client ID from step 3

npx wrangler secret put GOOGLE_OAUTH_CLIENT_SECRET
# paste the Client Secret from step 3

または Cloudflare ダッシュボードから: Workers & Pages → 該当 worker → SettingsVariables and Secrets → それぞれを Secret タイプで追加してください。

ヒント — Windows でのエンコーディングの落とし穴: ファイルの内容をパイプで渡す場合(例: Get-Content | wrangler secret put)、そのファイルに UTF-8 BOM が付いていると、BOM もシークレットに含まれて JSON 解析が壊れます。Cloudflare ダッシュボードや対話型の wrangler secret put(プロンプトに貼り付け)を使えば、この問題を完全に回避できます。

5. ChatGPT に接続(Plus/Pro/Team)

ChatGPT → SettingsConnectorsAdd custom connector:

  • Name: gsc

  • MCP Server URL: https://YOUR-WORKER-URL/mcp(末尾は /mcp である必要があります)

  • Authentication: OAuth

  • 「I understand and want to continue」にチェック

  • Create

ポップアップが開き、Worker のログイン UI に移動します。MCP_BEARER_TOKEN を貼り付け → Continue with Google → → Google がログインを求めます(GSC プロパティを所有するアカウントでログイン)→ webmasters.readonly を許可 → ChatGPT にリダイレクトされ、コネクタが有効になります。

新しいチャットで、ツールバーから gsc コネクタを有効化し、「List my Google Search Console sites」と尋ねてください。プロパティが表示されるはずです。

6. (任意)Claude.ai に接続(Pro/Team)

SettingsIntegrationsAdd custom integration → 同じ URL、同じフローです。

ローカル開発

git clone https://github.com/JuJu78/gsc-mcp-connector
cd gsc-mcp-connector
npm install
cp .dev.vars.example .dev.vars
# edit .dev.vars with your real Client ID + Client Secret + bearer token
npx wrangler dev

開発サーバーは http://localhost:8787 で動作します。ローカル開発では Google OAuth フローを完全に完了できないことに注意してください。Google のリダイレクト URI は HTTPS を必要とするためです。真のエンドツーエンドテストを行うには、Cloudflare にデプロイし、workers.dev の URL に対してテストしてください。

制限事項

  • 読み取り専用。書き込み操作(サイトマップ送信、インデックス登録リクエストなど)は意図的に除外しています。LLM のコンテキストではリスクが伴うためです。必要であれば PR を送ってください。

  • シングルテナント仕様。一人の運用者ガデプロイし、一つのBearer トークンがコネクタをガードし、アクセスは Google OAuth フローを完了したユーザーに紐づけられま。マルチユーザー SaaS 型は対象外です。

  • OAuth 同意画面が "Testing" モードの場、100 テスユーザーまでの制限がありま(個人/チーム利用には十分以大)。よ広く配布すには、アプリを Google の審査(webmasters.readonly は「感度な」射程で、手動レビューが必要)に提出する必要がありま。

  • GSC API クォータ — プロジェクトあたり1200クエリ/分、30000/日。インタラクティブな利用には十分です。

  • 日付範囲 — GSC は過去16か月間のデータを返します。それ以前の日付はエラーになります。

トラブルシューティング

症状

原因

修正方法

Google ログイン時に Error 400: redirect_uri_mismatch

GCP の承認済みリダイレクト URI が Worker が送信するものと正確に一致していない

https://YOUR-WORKER/oauth/google/callbackGCP 認証情報そのまま 設定されていることを確認

Google ログイン後に Error 403: access_denied

ログインしたアカウントが OAuth 同意画面の テストユーザー に含まれていない

OAuth 同意画面 → 対象ユーザー → テストユーザー にその Gmail を追加

ChatGPT で認可後に something went wrong

以前の試行による古い OAuth 許可が残っている

ChatGPT でコネクタを削除し、再作成する

No Google refresh token in grant. Re-authorize

v0.4+ をデプロイする前に作成された許可

ChatGPT/Claude でコネクタを削除し、再作成する

Bearer を貼り付けた後に Invalid access key. Try again.

シークレットと貼り付けた値の MCP_BEARER_TOKEN が一致しない

対話型 wrangler secret put でシークレットを再設定(ファイルパイプを避け、BOM/改行の混入を防止)

tools/call list_sites{} を返す

認証された Google アカウントに GSC プロパティがない(またはアカウントが間違っている)

Google 同意手順で使用したアカウントを確認 — GSC プロパティを所有している必要がある

ChatGPT が「利用可能なツールがありません」と表示する

URL が /mcp で終わっていない

サーバーURL は https://YOUR-WORKER/mcp でなければならず、ベーURL ではだめ

技術スタック

  • Cloudlfare Workers + Durable Objects(agents SDK ≥0.12 経由)

  • @cloudflare/workers-oauth-provider で OAuth 2.1 + DCR + PKCE

  • @modelcontextprotocol/sdk でツール定義

  • K V ネームスペース OAuth_KV で OAuth 状態を管理

  • Google OAuth 2.0 フローを Web Cryptto API(Node 依存なし)でネイティブに署名

クレジット

Julien Gourdon によって制作 — 検索と AI の交差点を探求する SEO コンサルタント。

ライセンス

MIT — LICENSE を参照。

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    Self-hosted MCP server that exposes Google Search Console tools (list sites, query analytics, inspect URL, list sitemaps) via natural language to AI assistants like ChatGPT and Claude.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Self-hosted MCP server that connects Google Search Console to AI assistants, enabling natural language queries about search analytics, sitemaps, and URL inspection data.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Self-hosted Google Search Console MCP server deployable to Cloudflare Workers, allowing natural language queries of GSC data via ChatGPT, Claude, or any MCP-capable client.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Self-hosted MCP server for Google Search Console. Enables natural language queries to list sites, analyze search analytics, inspect URLs, and check sitemaps through AI assistants.
    MIT

View all related MCP servers

Related MCP Connectors

  • SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pradeepoct/google-search-console-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server