Google Search Console
概要
作者による説明(英語の原文)
MCP server for Google Search Console: properties, sitemaps, search analytics and URL inspection
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 95/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 検索・AIの記憶
- 入力が必要なもの:GSC_SERVICE_ACCOUNT_KEY, GSC_CLIENT_SECRET, GSC_REFRESH_TOKEN
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- 自分で入力するもの:
GSC_SERVICE_ACCOUNT_KEY,GSC_SERVICE_ACCOUNT_KEY_FILE,GSC_CLIENT_ID,GSC_CLIENT_SECRET,GSC_REFRESH_TOKEN,GOOGLE_APPLICATION_CREDENTIALS,GSC_SITE_URL,GSC_ALLOWED_SITES,GSC_READ_ONLY,GSC_ALLOW_TOOLS,GSC_DENY_TOOLS
「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
- npmNode.jsのインストール(npxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": [
"-y",
"@ni-c/google-search-console-mcp"
],
"env": {
"GSC_SERVICE_ACCOUNT_KEY": "your-value",
"GSC_SERVICE_ACCOUNT_KEY_FILE": "your-value",
"GSC_CLIENT_ID": "your-value",
"GSC_CLIENT_SECRET": "your-value",
"GSC_REFRESH_TOKEN": "your-value",
"GOOGLE_APPLICATION_CREDENTIALS": "your-value",
"GSC_SITE_URL": "your-value",
"GSC_ALLOWED_SITES": "your-value",
"GSC_READ_ONLY": "your-value",
"GSC_ALLOW_TOOLS": "your-value",
"GSC_DENY_TOOLS": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add google-search-console --env GSC_SERVICE_ACCOUNT_KEY=your-value --env GSC_SERVICE_ACCOUNT_KEY_FILE=your-value --env GSC_CLIENT_ID=your-value --env GSC_CLIENT_SECRET=your-value --env GSC_REFRESH_TOKEN=your-value --env GOOGLE_APPLICATION_CREDENTIALS=your-value --env GSC_SITE_URL=your-value --env GSC_ALLOWED_SITES=your-value --env GSC_READ_ONLY=your-value --env GSC_ALLOW_TOOLS=your-value --env GSC_DENY_TOOLS=your-value -- npx -y @ni-c/google-search-console-mcp動かす前に、空欄の値を入力してください。
または、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": [
"-y",
"@ni-c/google-search-console-mcp"
],
"env": {
"GSC_SERVICE_ACCOUNT_KEY": "your-value",
"GSC_SERVICE_ACCOUNT_KEY_FILE": "your-value",
"GSC_CLIENT_ID": "your-value",
"GSC_CLIENT_SECRET": "your-value",
"GSC_REFRESH_TOKEN": "your-value",
"GOOGLE_APPLICATION_CREDENTIALS": "your-value",
"GSC_SITE_URL": "your-value",
"GSC_ALLOWED_SITES": "your-value",
"GSC_READ_ONLY": "your-value",
"GSC_ALLOW_TOOLS": "your-value",
"GSC_DENY_TOOLS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@ni-c/google-search-console-mcp"
],
"env": {
"GSC_SERVICE_ACCOUNT_KEY": "your-value",
"GSC_SERVICE_ACCOUNT_KEY_FILE": "your-value",
"GSC_CLIENT_ID": "your-value",
"GSC_CLIENT_SECRET": "your-value",
"GSC_REFRESH_TOKEN": "your-value",
"GOOGLE_APPLICATION_CREDENTIALS": "your-value",
"GSC_SITE_URL": "your-value",
"GSC_ALLOWED_SITES": "your-value",
"GSC_READ_ONLY": "your-value",
"GSC_ALLOW_TOOLS": "your-value",
"GSC_DENY_TOOLS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
自分で入力する値
- Service account key as JSON, or base64-encoded JSON. One of the three credential options.
GSC_SERVICE_ACCOUNT_KEY_FILEenvPath to a service account key file. Alternative to GSC_SERVICE_ACCOUNT_KEY.GSC_CLIENT_IDenvOAuth2 client id. Use together with GSC_CLIENT_SECRET and GSC_REFRESH_TOKEN.- OAuth2 client secret. All three OAuth2 variables are required together.
- OAuth2 refresh token. All three OAuth2 variables are required together.
GOOGLE_APPLICATION_CREDENTIALSenvPath to application default credentials, used when no GSC_ credential is set.GSC_SITE_URLenvDefault property, e.g. sc-domain:example.com or https://example.com/ — makes site_url optionalGSC_ALLOWED_SITESenvComma-separated properties this server may touch; anything else is refusedGSC_READ_ONLYenvSet to true to register only the read tools (default: false)GSC_ALLOW_TOOLSenvComma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)GSC_DENY_TOOLSenvComma-separated tool names or list_* prefixes to remove from whatever the allow list left
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント ni-c で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
検索・AIの記憶のほかのサーバーとの比較i
- このカテゴリのほかの5692件のうち0%よりスターが多い
- このカテゴリのほかの5692件のうち40%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5692件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Google Search Consoleは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
入力が必要なもの:GSC_SERVICE_ACCOUNT_KEY, GSC_CLIENT_SECRET, GSC_REFRESH_TOKEN
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(0.3.0)がレジストリに届いたのは2 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.js, Dockerも必要です。
代わりに使えるものは?
同じカテゴリには:Context7, Codebase Memory, Exa
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
google-search-console-mcp
A Model Context Protocol (MCP) server for Google Search Console, the service that tells you how Google sees your site — this reads it and sets it up.
Lets MCP clients like Claude Code, Claude Desktop or Codex create a property and prove ownership of it, submit and refresh sitemaps, ask what any URL's index status is, and query the whole Performance report — with the irreversible operations put to a person first and the write tools switchable off entirely.
21 tools is the ceiling, not the floor: GSC_ALLOW_TOOLS=essential registers a curated five instead, and a model picks the right tool far more reliably from five than from 21 — see choosing which tools load.
What makes it different
It can actually create a working property. Getting one takes four steps in a fixed order — obtain a verification token, place it in DNS or on the page, verify ownership, add the property — and nothing in Google's APIs enforces that order. Calling sites.add first _succeeds_ and leaves a property that appears in every listing and answers 403 for every piece of data, which looks like a permissions bug and is not. setup_site reports which step is missing and hands over the exact DNS record to paste. Servers that expose sites.add alone can only add properties somebody already verified by hand.
Three APIs, not one. Search Console v1 is ten methods and does not include ownership. Site Verification is a separate service with its own scope, its own host and an incompatible way of naming the same site — sc-domain:example.com there is {type: INET_DOMAIN, identifier: example.com}, and passing the property spelling straight through is accepted and verifies a domain literally called sc-domain:example.com. The Indexing API is a third. All three are covered, and the translation between them is in src/site-identity.ts.
The numbers are right. Search analytics come back as a table with totals where CTR is computed from the totals rather than averaged across rows, and average position is weighted by impressions. Unweighted, a thousand rare queries ranking 80th drag a property's real average of 12 up into the nineties. The result also says plainly that the rows do not sum to the property total when the query dimension is used — Google withholds rare queries for anonymity, commonly a third or more of all impressions, and a total printed without that caveat is a number people will quote.
It knows where these APIs are sharp. The trailing slash on https://example.com/ is mandatory and its absence is a 403; a domain property and a URL-prefix property for the same site are different properties with different data, so a bare hostname is refused rather than guessed at; days are counted in Pacific Time, so a last7days computed in UTC asks for a day Google has no data for; the hour dimension silently returns nothing without dataState: HOURLY_ALL; Google omits empty arrays entirely, so a fresh credential's property list arrives as {}; and the Indexing API returns 200 for any owned URL while only acting on JobPosting and BroadcastEvent pages.
Requirements
- Node.js 24 or newer (or the container image)
- A Google credential — a service account key, an OAuth2 refresh token, or application default credentials
- The APIs you intend to use enabled in a Google Cloud project: Search Console API, and separately Site Verification API and Indexing API
Configuration
The server starts without credentials and lists its tools; every call then fails with setup instructions rather than a Google error. That is deliberate, so registries and sandbox inspectors can introspect it.
| Variable | Description |
|---|---|
GSC_SERVICE_ACCOUNT_KEY | Service account key as raw JSON, or base64-encoded JSON |
GSC_SERVICE_ACCOUNT_KEY_FILE | Path to a service account key file. Alternative to the above — setting both is an error |
GSC_CLIENT_ID | OAuth2 client id |
GSC_CLIENT_SECRET | OAuth2 client secret |
GSC_REFRESH_TOKEN | OAuth2 refresh token. All three OAuth2 variables are required together |
GOOGLE_APPLICATION_CREDENTIALS | Application default credentials, used when no GSC_ credential is set |
GSC_SITE_URL | Default property, e.g. sc-domain:example.com or https://example.com/. Makes site_url optional everywhere |
GSC_ALLOWED_SITES | Comma-separated properties this server may touch at all; anything else is refused |
GSC_READ_ONLY | true (or 1/yes) registers only the twelve read tools |
GSC_ALLOW_TOOLS | Comma-separated tool names, a list_* prefix, or essential |
GSC_DENY_TOOLS | Same shape, subtracted from whatever the allow list left |
ELICITATION | false replaces the approval dialog with the two-call token. Not prefixed |
Credentials are tried in that order — explicit beats ambient. A partial OAuth triple is a startup error rather than a reason to fall through to application default credentials, because that fallback would quietly run the server as whatever account the machine is logged into.
Which credential
A service account is the recommended one: it sees only the properties you explicitly add it to, and revoking it does not touch anyone's Google account. Add its client_email under Settings → Users and permissions in Search Console, or give it ownership with verify_site. Note that the Indexing API requires owner, not full user.
An OAuth2 refresh token acts as the person who consented and sees everything they see. Its scopes were fixed at consent time and cannot be widened later.
Choosing which tools load
Every visible tool costs context on every request, and a model picks the right one far more reliably from five than from 21. Two variables narrow the list:
GSC_ALLOW_TOOLS=essential # the curated five
GSC_ALLOW_TOOLS='list_*,get_site' # exact names, or one trailing * GSC_DENY_TOOLS='delete_*' # subtracted from whatever allow left
essential is list_sites, get_site, list_sitemaps, query_search_analytics and inspect_url — everything needed to look at a property, and nothing that changes it.
An entry that matches no tool stops the server with the list of real names. An ignored typo would otherwise leave a tool missing from tools/list with nothing pointing at the cause, and nobody traces an absence back to an environment variable.
If you run several of these servers at once, mcp-hub is the other answer — its /hub endpoint replaces every server's tools with six meta-tools.
Narrowing the list also narrows the credential: the OAuth scopes this server requests are derived from the tools that are actually registered, so a server denied the Indexing tools never asks for the Indexing scope.
Installation
Claude Code
claude mcp add google-search-console -- npx -y @ni-c/google-search-console-mcp
Claude Desktop
{
"mcpServers": { "google-search-console": { "command": "npx", "args": ["-y", "@ni-c/google-search-console-mcp"], "env": { "GSC_SERVICE_ACCOUNT_KEY_FILE": "/path/to/key.json", "GSC_SITE_URL": "sc-domain:example.com" } } } }
Codex
[mcp_servers.google-search-console]
command = "npx" args = ["-y", "@ni-c/google-search-console-mcp"]
[mcp_servers.google-search-console.env] GSC_SERVICE_ACCOUNT_KEY_FILE = "/path/to/key.json" GSC_SITE_URL = "sc-domain:example.com"
Docker
docker run --rm -i \
-v /path/to/key.json:/key.json:ro \ -e GSC_SERVICE_ACCOUNT_KEY_FILE=/key.json \ -e GSC_SITE_URL=sc-domain:example.com \ ghcr.io/ni-c/google-search-console-mcp
Through mcp-hub
A client that cannot spawn a local process — ChatGPT connectors, Claude on the web, Cursor, LibreChat — reaches google-search-console-mcp through mcp-hub: one container serves many stdio MCP servers over Streamable HTTP, with an OAuth 2.1 login behind a single password and long-lived tokens for the clients that cannot do OAuth. Its /hub endpoint puts every server behind six meta-tools, so one connector reaches all of them without N×tool schemas in the model's context, and it speaks both protocol revisions — a question this server asks travels through it to the person at the far end.
Its /config/mcp.json uses Claude Code's format, so the entry is the one you already have:
{
"mcpServers": { "google-search-console": { "command": "npx", "args": ["-y", "@ni-c/google-search-console-mcp"], "env": { "GSC_SERVICE_ACCOUNT_KEY": "…", "GSC_SITE_URL": "sc-d
冒頭だけを表示しています。続きはリポジトリで読めます