Tag Pilot Search Console

io.github.tagpilot由 GitHub 帳號 tagpilot 發布v0.1.0更新於 Nov 3, 2026

Free, read-only Google Search Console: performance, opportunities, URL inspection. No GCP setup.

發布方自己的服務:QuickBooks Connector by Meridian

概覽

AI 產生的概覽

唯讀的 Google Search Console MCP 伺服器,讓助理查詢你網站的點擊、曝光、CTR、排名、網站地圖與索引狀態。

可以做什麼
  • 列出 Search Console 資源及其權限等級,列出或檢視已提交的網站地圖
  • 依日期、查詢字詞、頁面、國家、裝置或搜尋外觀查詢 Search Analytics,支援篩選與分頁
  • 依查詢字詞或頁面比較兩個期間,提供變化量與資源總計
  • 找出 SEO 機會,例如首頁低 CTR 的列與接近首頁的排名
  • 檢查單一 URL 的索引版本:判定結果、涵蓋範圍、上次檢索、標準網址、複合式搜尋結果
  • 連接本機並查看連線狀態
適用情境
適合想直接向助理詢問自然搜尋成效、又不想架設 Google Cloud 專案的情況:哪些查詢字詞流失點擊、與前期相比有何變化、哪些頁面接近首頁,或某個 URL 是否已被索引。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js 18 或更新版本(Claude Desktop 擴充套件版不需 Node.js)。不需 Google Cloud 專案或 API 金鑰:首次請求會啟動瀏覽器登入免費 Tag Pilot 帳號,並授權唯讀的 Google Search Console 存取。TAGPILOT_API_KEY 僅供無介面或 CI 環境選用。需要連線至 Google 與 Tag Pilot 的網路。
安裝前請注意
唯讀:僅申請 webmasters.readonly 權限,任何工具都不會變更 Search Console。Search Console 資料由本機直接送往 Google,Tag Pilot 僅中介 OAuth 權杖交換且不儲存 Google 權杖;憑證保存在本機設定目錄。授權即允許唯讀存取你的 Search Console 資源,之後可撤銷該裝置。受 Google 配額限制,例如 URL 檢查每天 2,000 次。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Tag Pilot Search Console,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Tag Pilot Search Console MCP

A free, read-only Model Context Protocol server for Google Search Console. Ask Claude, Cursor or any MCP client about your organic search: clicks, impressions, CTR and positions by query or page, what changed between two periods, SEO opportunities, Google's index status for a URL, and your sitemaps.

No Google Cloud setup, no API key to copy. You don't need a GCP project, OAuth client, service account or gcloud. Add the server, ask a question, and approve once in your browser.

bash
claude mcp add search-console -- npx -y @tagpilot/search-console-mcp

Get started

  1. Install in your AI client (below). No configuration needed.
  2. Ask something, e.g. "Which queries lost the most clicks this month?" The first time, a browser window opens (or your AI shows a link and a code like ABCD-1234):
    • sign in to your free Tag Pilot account, or create one;
    • check that the code matches and approve this computer;
    • sign in with the Google account that can see your Search Console properties and allow read-only Search Console access.
  3. Ask again. You're connected; the computer shows up under Connected devices on the Search Console MCP page.

Already use the Tag Pilot GA4 MCP? This is a separate server with its own connection (and its own Google consent), so you can install either or both.

Install

[Add to Cursor] [Install in VS Code]

ClientHow
Claude DesktopDownload the extension and open it (no Node.js needed)
Claude Codeclaude mcp add search-console -- npx -y @tagpilot/search-console-mcp
CursorAdd to Cursor, or the mcp.json below
VS CodeInstall in VS Code
Windsurf, Zed, …command npx, args ["-y", "@tagpilot/search-console-mcp"] (stdio)
Gemini CLIclone the repo, then gemini extensions install ./ga4-mcp/packages/search-console-mcp

Everything except the Claude Desktop extension runs the npm package with npx, so it needs Node.js 18 or newer. In the MCP Registry it's io.github.tagpilot/search-console-mcp.

Claude Desktop config file (claude_desktop_config.json), Cursor (~/.cursor/mcp.json) and similar clients:

json
{  "mcpServers": {    "search-console": {      "command": "npx",      "args": ["-y", "@tagpilot/search-console-mcp"]    }  }}

Headless and CI: where nobody can approve in a browser, create a gsc:mcp key on the Search Console MCP page and set TAGPILOT_API_KEY=tpk_… in the server's environment. The device connect is then skipped and only the Google sign-in link is shown.

How connecting works, and what Tag Pilot sees

The same flow as the GA4 MCP (RFC 8628-style device connect, like gh auth login): it works from any browser on any device, also over SSH, in containers or WSL, because nothing listens on your machine.

  • Your Search Console data goes from your machine straight to Google (www.googleapis.com/webmasters/v3, searchconsole.googleapis.com). It never passes through Tag Pilot.
  • Tag Pilot only brokers the token exchange. It adds Tag Pilot's Google OAuth client credentials to Google's token endpoint and returns Google's answer. It stores no Google tokens and never logs them; it holds the one-time sign-in code for at most 10 minutes, and that code is useless without the PKCE verifier that stays on your machine.
  • Read-only. The only Google scope requested is webmasters.readonly. None of the tools can change anything in Search Console (no sitemap submits, no deletes).
  • Your credentials stay on your machine, in ~/.config/tagpilot/search-console-mcp/device.json (readable only by you).
  • Disconnecting: revoke the device on the Search Console MCP page, run npx -y @tagpilot/search-console-mcp logout, and remove the app's access at myaccount.google.com/permissions.

Tools

All tools are read-only. site_url is the property exactly as list_sites shows it: sc-domain:example.com for a domain property, or a URL prefix with its trailing slash (https://www.example.com/).

ToolWhat it does
list_sitesProperties you can read (domain and URL-prefix) with your permission level. Start here.
search_analyticsClicks, impressions, CTR and position by date, hour, query, page, country, device, searchAppearance; filters; search type (web, image, video, news, Discover, Google News); data state; aggregation; paging (up to 25,000 rows per call).
compare_periodsPeriod-over-period by query or page: both periods, deltas, new/lost rows, and property totals. Default: last 28 days vs the 28 days before.
find_opportunitiesTag Pilot analysis. low_ctr: page-one rows with many impressions but under half a typical CTR for their position. striking_distance: rows at average positions ~5–20 with enough impressions.
inspect_urlURL Inspection: Google's indexed version of one URL (verdict, coverage, last crawl, robots.txt, canonical chosen by Google vs declared, sitemaps, rich results).
list_sitemaps / get_sitemapSubmitted sitemaps: type, last submitted/downloaded, errors, warnings, submitted URL counts.
connectConnects this computer: returns a link and a code for you to approve in the browser (your AI shows them; clients that support MCP URL elicitation offer to open the link). Say "connect my Search Console" to start it explicitly.
connection_statusConnected (with the device name), waiting for approval (link and code again), not connected, or what went wrong. Waits up to 25 s for an open sign-in to finish.

Things to know about Search Console data

  • Lag: data is typically available after 2–3 days. The default date range is the 28 days ending 3 days ago. data_state: "all" adds fresher, still-changing data; the result says from which date data is incomplete.
  • Dates are Pacific Time (Search Console's day boundary). Relative dates ("yesterday", "7daysAgo") are computed in Pacific Time too.
  • Anonymised queries: queries too rare to show (privacy) are left out of rows grouped or filtered by query, so per-query rows add up to less than the totals by date, country or device. compare_periods reports property totals separately for that reason.
  • Row limits: a call returns up to 25,000 rows (use start_row to page), and Google exposes at most 50,000 rows per day per search type, sorted by clicks.
  • Aggregation: grouping or filtering by page counts each URL separately (byPage), so totals differ from property-level totals.
  • Discover and Google News don't support aggregation_type: "byProperty".
  • Quotas (Google's): Search Analytics allows 1,200 queries per minute per site and per user, plus a load quota that long, query-and-page-level requests use up faster. URL Inspection allows 2,000 inspections per day and 600 per minute per property, so inspect_url is for a handful of important URLs, not whole sitemaps.

find_opportunities uses a rough benchmark CTR curve (position 1 ≈ 28%, 3 ≈ 10%, 10 ≈ 2%) to rank rows. It's a rule of thumb for prioritising, not Google data or a forecast.

Troubleshooting

"Not connected yet" (a link and a code like ABCD-1234): your AI shows them. Open the link in any browser (it doesn't have to be on this machine), sign in to Tag Pilot, check that the code matches, approve, and allow Search Console access, then tell your AI you're done: it retries your question (or calls connection_status). The server keeps checking in the background, so nothing needs restarting. The code is valid for 10 minutes; after that, ask again (or say "connect Search Console") for a new one. To connect from a terminal instead (e.g. over SSH), run npx -y @tagpilot/search-console-mcp login: it shows the link, the code in a box and a countdown, and waits until you approve.

"The signed-in Google account has no access to the Search Console property …": use list_sites and pass site_url exactly as listed (sc-domain: for domain properties, trailing slash for URL prefixes). To use another Google account, run npx -y @tagpilot/search-console-mcp logout and connect again.

"This computer was disconnected from Tag Pilot": the device was revoked; ask again to reconnect. "Your Google sign-in expired or was revoked": ask again and approve again.

Quota errors: wait a few minutes (Search Analytics) or until tomorrow (URL Inspection).

Check the setup: npx -y @tagpilot/search-console-mcp status. Logs go to stderr.

Configuration

Nothing is required. All variables are optional:

Variable
TAGPILOT_API_KEYA gsc:mcp key for headless/CI setups. Skips the device connect.
TAGPILOT_API_URLTag Pilot API base URL. Default https://api.tagpilot.io.
SEARCH_CONSOLE_MCP_NO_BROWSER1 to only print/return the link instead of opening a browser.
SEARCH_CONSOLE_MCP_BROWSERBrowser to open (macOS app name, or a command on Linux/Windows).
SEARCH_CONSOLE_MCP_AUTH_WAIT_SECONDSHow long a tool call waits for the connect before returning the link. Default 45.
SEARCH_CONSOLE_MCP_CONFIG_DIRCredential directory. Default ~/.config/tagpilot/search-console-mcp.

Commands: npx -y @tagpilot/search-console-mcp [serve|login|logout|status|--help|--version].

Development

See the repo README. SEARCH_CONSOLE_MCP_WEBMASTERS_API_URL and SEARCH_CONSOLE_MCP_INSPECTION_API_URL point the Google calls at a mock (used by npm run e2e).

License

Apache License 2.0. Copyright 2026 Tag Concierge sp. z o.o. The license does not cover the Tag Pilot name or logo (see NOTICE).

來源:packages/search-console-mcp/README.md,提交 4ceb8f8

工具

9

list_sites

List Search Console properties

Lists every Search Console property the signed-in Google account can see: domain properties ("sc-domain:example.com", covering all subdomains and protocols) and URL-prefix properties ("https://www.example.com/"), with the permission level (owner, full, restricted, unverified). Start here: other tools need site_url exactly as listed.

無需輸入參數。

list_sitemaps

List sitemaps

Sitemaps submitted for a property (or listed in a sitemap index): type, last submitted/downloaded, pending, errors, warnings and submitted URL counts per content type. Google no longer reports indexed counts per sitemap; use inspect_url for single URLs.

輸入參數site_url必填sitemap_index

get_sitemap

Get one sitemap

Details of one submitted sitemap (same fields as list_sitemaps).

輸入參數site_url必填sitemap_url必填

search_analytics

Search performance (Search Analytics)

Clicks, impressions, CTR (0–1) and average position from Google Search, grouped by date, query, page, country, device or search appearance, with filters and paging. Defaults: last 28 days of final data, web search, 100 rows sorted by clicks. Search Console data typically lags 2–3 days; the default range ends 3 days ago (Pacific Time). Pass data_state "all" to include fresher, still-changing data. Grouping or filtering by query omits anonymised (rare) queries, so query rows add up to less than the totals by date, country or device. Google exposes at most 50,000 rows per day per search type.

輸入參數filtersend_datesite_url必填row_limitstart_rowdata_statedimensionsstart_datesearch_typeaggregation_type

compare_periods

Compare two periods

Period-over-period change by query or page: clicks, impressions, CTR and position for both periods with deltas, plus property totals (which include anonymised queries). Default: the last 28 days of final data vs the 28 days before. Biggest movers first. Search Console data typically lags 2–3 days; the default range ends 3 days ago (Pacific Time). Pass data_state "all" to include fresher, still-changing data. Grouping or filtering by query omits anonymised (rare) queries, so query rows add up to less than the totals by date, country or device. Uses 4 Search Analytics queries.

輸入參數topsortfiltersend_datesite_url必填dimensionstart_datesearch_typerows_per_periodcompare_end_datecompare_start_date

find_opportunities

Find SEO opportunities

Tag Pilot SEO check over one period, by query (default) or page. low_ctr: rows on page one (avg position ≤ 10) with plenty of impressions but a CTR under half of a typical CTR for that position, so the title/snippet likely underperforms. striking_distance: rows ranking around positions 5–20 (configurable) with enough impressions, where a small ranking gain pays off. "Typical CTR" is a rough industry benchmark curve, not Google data. Search Console data typically lags 2–3 days; the default range ends 3 days ago (Pacific Time). Pass data_state "all" to include fresher, still-changing data. Grouping or filtering by query omits anonymised (rare) queries, so query rows add up to less than the totals by date, country or device.

輸入參數topfiltersend_datesite_url必填dimensionstart_datesearch_typemax_positionmin_positionrows_to_scanmin_impressions

inspect_url

Inspect a URL (index status)

URL Inspection: Google's indexed version of one URL in the property: indexing verdict and coverage state, last crawl, robots.txt and fetch state, Google-selected vs declared canonical, sitemaps and referring URLs, rich results. It is not a live test. Quota: 2,000 inspections per day and 600 per minute per property, so inspect a handful of important URLs, not whole sitemaps.

輸入參數url必填site_url必填language_code

connect

Connect Search Console MCP

Connects this computer to Tag Pilot Search Console MCP (free Tag Pilot account + read-only Google Search Console access). Call it when the user asks to connect, or when another tool says the computer is not connected. It returns a link and a code: show both to the user as given (a clickable link), ask them to open it, approve and allow Google access, and tell you when done; then call connection_status. Never ask the user to run terminal commands. If already connected, it says so.

無需輸入參數。

connection_status

Search Console MCP connection status

Whether this computer is connected to Tag Pilot Search Console MCP: "connected" (with the device name), "waiting" (a sign-in link is open; shows the link and code again), "not_connected" (call connect) or "error" (with the next step). While a sign-in is open it waits up to 25 seconds for the approval before answering, so call it after the user says they approved, not in a fast loop.

輸入參數wait

版本歷史

1
  1. v0.1.0最新Oct 29, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Pilot 整合