AskWatch Google Search Console MCP
What is AskWatch GSC MCP A hosted MCP server that gives Claude, ChatGPT, Cursor, Claude Code and any other MCP client read access to your Google Search…
What it can do
- Site Overview: How the site did over a period compared with the one before it: clicks, impressions, CTR, average position and the change in each. Covers the question 'how is my site doing'.
- Top: Top queries, pages, countries or devices for a period. Optionally narrowed to one country or device — 'top pages in Germany on mobile' is one call.
- Changes: What gained and what lost between this period and the one before it, with small rows filtered out. Answers 'what dropped in the last 28 days'.
What data it sees
Do you need an account
No: the server works without sign-in
What is AskWatch GSC MCP
A hosted MCP server that gives Claude, ChatGPT, Cursor, Claude Code and any other MCP client read access to your Google Search Console data.
You connect your Google account once and get a personal link. There is no Google Cloud project to create, no OAuth client to configure, no credentials.json on disk and nothing running on your machine.
It is free, and the grant is read-only: it asks for webmasters.readonly, which cannot submit a sitemap, request indexing, remove a URL or change a property.
Setup
- Connect your Google account at askwatch.ai/free-tools/google-search-console-mcp.
- Copy your personal link.
- Add it to your client.
Claude Code:
claude mcp add --transport http askwatch-gsc https://mcp.askwatch.ai/gsc/YOUR_KEY
Cursor, VS Code, Windsurf, Codex and Gemini CLI take the same address in their own config file. The exact shape for each of the nine supported clients is on the tool page.
The key also works as a header, for clients that prefer one:
Authorization: Bearer YOUR_KEY
Tools
Seven tools answer a whole question, one passes anything through, three describe the account.
| Tool | What it answers |
|---|---|
site_overview |
Clicks, impressions, CTR and average position for a period, each against the period before it |
top |
Top queries, pages, countries or devices, optionally narrowed to one country or device |
changes |
What gained and what lost between two periods, with small rows filtered out |
find_opportunities |
Queries ranking 5 to 20 with a click-through rate below what is normal at that position |
find_cannibalization |
Queries where more than one of your pages is being shown |
page_queries |
What searches a specific page is shown for |
brand_split |
Branded against non-branded search, split on terms you supply |
query |
Direct Search Analytics query, for anything the shaped tools do not cover |
list_sites |
Search Console properties this connection can read |
inspect_url |
Index status of one URL, including the canonical Google picked |
list_sitemaps |
Sitemaps submitted for the property and their status |
Every tool is annotated readOnlyHint, so a client can tell reads from writes without asking you to confirm each call.
Why the tools are shaped
A server can pass the Search Console API through and let the model write the query, or it can carry tools that each answer a whole question. We do the second.
"What dropped" has a right method: compare two windows of equal length, drop rows with too few impressions to mean anything, sort by absolute loss rather than percentage so a query going from 2 clicks to 1 does not top the list. A model assembling that from raw rows picks a method each time, and the methods differ. The raw query tool is still there for the questions nobody anticipated. It is the fallback, not the interface.
Answers come back in one envelope: the period used, the date the data runs through, the criteria applied, and notes.
Finalized data, not fresh
Search Console data settles over about two days, and the API can return either finalized rows or everything it has so far. We ask for finalized.
This is not a detail. On a live site, including the incomplete day reported clicks down 11.7 percent when the actual fall was 1.1 percent. The reader here is a model that will pass the number on as a fact and build advice on top of it, so the default matters more than it would in a dashboard.
Limits
Limits are here to stop a looping agent from spending your Google quota, not to ration a free tool.
- 20 calls a minute is the only refusal.
- Daily thresholds add a notice and then a small delay. Nothing is cut off.
- URL Inspection has its own smaller budget, because Google meters that endpoint an order of magnitude tighter than the rest.
- Answers are cached from 30 minutes to 30 days depending on how old the data is, so the same question asked twice does not cost your quota twice.
Access and privacy
- The grant asks for
webmasters.readonlyand nothing else. - Google tokens are encrypted before they are stored. The link is stored as a hash, so a dump of the table is not a set of working addresses.
- Regenerate the link and the old address stops answering immediately. Withdraw the grant in your Google account and the whole connection ends.
- What we keep: the properties your account can read, the cached answers, and a count of calls per tool per day.
- AskWatch's use of information received from Google APIs follows the Google API Services User Data Policy, including the Limited Use requirements. We do not sell this data and we do not train models on it.
Who makes it
AskWatch monitors brand visibility in AI search: whether ChatGPT, Perplexity, Gemini and Google AI Overviews name your brand when buyers ask, and which sources they cite. Search Console tells you what Google search did. It says nothing about what the answer engines say, which is the gap AskWatch measures.
The Search Console MCP server is free and stays free.
How to connect
How to connect AskWatch Google Search Console MCP to Claude
The server address to paste into Claude settings:
https://askwatch-gsc.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect AskWatch Google Search Console MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://askwatch-gsc.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect AskWatch Google Search Console MCP to Cursor
The server address to paste into Cursor settings:
https://askwatch-gsc.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (11)
Raw names from tools/list. Only developers need these.
| site_overview | How the site did over a period compared with the one before it: clicks, impressions, CTR, average position and the change in each. Covers the question 'how is my site doing'. |
| top | Top queries, pages, countries or devices for a period. Optionally narrowed to one country or device — 'top pages in Germany on mobile' is one call. |
| changes | What gained and what lost between this period and the one before it, with small rows filtered out. Answers 'what dropped in the last 28 days'. |
| find_opportunities | Queries ranking 5-20 with plenty of impressions but a click-through rate below what is typical at their position — where a title or snippet rewrite is worth the most clicks. |
| find_cannibalization | Queries where more than one page of the site is being shown, with how each page does on them. |
| page_queries | What searches a specific page is shown for. |
| brand_split | Branded versus non-branded search, split on the words supplied. The split is only as good as those terms: misspellings and the domain name catch more of what people type. |
| query | Direct query against Google's Search Analytics API, with the same dates, dimensions and filters it takes, passed through unchanged. |
| list_sites | Search Console properties this connection can read, from Google's Sites API. These are the exact strings the site argument takes. |
| inspect_url | Google's index status for one URL, as the URL Inspection API reports it: whether it is indexed, when it was last crawled, and which canonical Google chose. |
| list_sitemaps | Sitemaps submitted for the property and their status, from Google's Sitemaps API. Read-only: submitting is not possible with read access. |