How the connection works
AI assistants reach outside data through MCP, the Model Context Protocol. An MCP server offers a small set of tools, and the assistant calls them when your question needs them. ChatGPT, Claude, Codex, Cursor and VS Code all support remote MCP servers.
QuerySail runs a hosted Google Search Console MCP server. You approve read-only Search Console access on Google's consent screen once, add one URL to your AI app and sign in. There is no Google Cloud project, service account or API key, and nothing to install.
What you can ask
Ask in plain language. Your assistant picks the tool, dates, dimensions and filters, and the answer states the date range and filters it used.
| Question | Tool | What comes back |
|---|---|---|
| Which Search Console properties can you access? | list_properties | Each property's exact ID, such as sc-domain:example.com or https://example.com/, and your permission level. |
| What were my top queries by clicks over the last 28 days? | get_performance | Clicks, impressions, CTR and average position per query, with the exact dates used. |
| Which pages under /blog/ get many impressions but few clicks on mobile? | get_performance | Pages filtered to URLs containing /blog/ and to mobile devices, which your assistant then sorts by CTR. |
| Which pages lost the most clicks compared with the previous 28 days? | compare_performance | Both periods' totals with absolute and percent changes, and the top gaining and losing pages. |
| How do this month's clicks compare with the same weeks last year? | compare_performance | A comparison against 52 weeks earlier, so Mondays line up with Mondays. |
| How did search traffic look hour by hour yesterday? | get_performance | Hourly clicks and impressions. Google keeps hourly data for about 10 days, and it is preliminary. |
| How many clicks did Discover send last month? | get_performance | Clicks and impressions for Discover. Discover and Google News have no query data. |
| Are these five URLs indexed, and which canonical did Google choose? | inspect_urls | For each URL, whether it is on Google, its coverage state, robots.txt or noindex blocking, last crawl and both canonicals. |
| When did Google last read my sitemap, and does it have errors? | list_sitemaps | Each submitted sitemap's last read time, pending status, error and warning counts, and how many URLs it lists. |
Example: which pages lost clicks
With no dates, compare_performance compares the last 28 finalized days with the 28 days before. It splits the change in total clicks into a part from impressions and a part from CTR, so you can tell lost visibility apart from fewer clicks at the same visibility. Each page in the list also shows its change in average position.
Example answer, with made-up numbers. For sc-domain:example.com, 2026-09-06 to 2026-10-03 (Pacific Time) against the previous 28 days, clicks fell from 4,210 to 3,870, down 8.1%. Impressions rose 3%, so the drop came from a lower CTR. The pages that lost the most clicks were /blog/sourdough-starter, down 142, and /recipes/focaccia, down 96. Their average positions barely moved.
The data shows what changed, not why. When your assistant suggests a cause, treat it as a lead to check.
Example: why a page is not on Google
inspect_urls runs Search Console's URL Inspection for up to 20 URLs of one property at a time.
Example answer, made up. https://example.com/blog/new-post is not on Google. Its coverage state is "Crawled - currently not indexed". Google last crawled it on 2026-09-28. Neither robots.txt nor a noindex tag blocks it, and Google's chosen canonical matches the one the page declares.
Set up QuerySail
Setup takes about five minutes.
- Create a QuerySail account. The trial needs no card.
- Connect your Google account and approve read-only Search Console access. Every property that account can read becomes available. You can connect more than one Google account.
- Add the endpoint below to your AI app and sign in with your QuerySail account when it asks.
- Ask "Which Search Console properties can you access?" to check the connection.
https://mcp.querysail.com/gsc/mcp- Open Settings → Security and login and turn on Developer mode. Availability depends on your plan and workspace settings.
- Go to chatgpt.com/plugins and select the plus button.
- Name it QuerySail, paste the endpoint above as the connection URL and create it.
- Sign in with your QuerySail account when asked, then add QuerySail from the tools menu in a new chat.
Add the server, then sign in with your QuerySail account in the browser window the second command opens:
codex mcp add querysail-gsc --url https://mcp.querysail.com/gsc/mcp
codex mcp login querysail-gscThe Codex app and IDE extension read the same ~/.codex/config.toml. To edit it by hand, add:
[mcp_servers.querysail-gsc]
url = "https://mcp.querysail.com/gsc/mcp"Add the server for all your projects:
claude mcp add --transport http --scope user querysail-gsc https://mcp.querysail.com/gsc/mcpThen run /mcp in Claude Code, choose querysail-gsc and sign in with your QuerySail account.
Leave out --scope user to add it to the current project only.
- In Claude Desktop or on claude.ai, open Customize → Connectors, select + Add, then Add custom connector.
- Name it QuerySail, paste the endpoint above as the server URL and select Continue.
- Keep the detected sign-in settings, add the connector and sign in with your QuerySail account.
- In a chat, select + → Connectors and turn on QuerySail.
On Team and Enterprise plans an owner adds the connector under Organization settings → Connectors, then each member selects Connect. Free plans allow one custom connector.
Add this to ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one project. If the file already lists servers, add the entry inside the existing mcpServers.
{
"mcpServers": {
"querysail-gsc": {
"url": "https://mcp.querysail.com/gsc/mcp"
}
}
}Then open Cursor's MCP settings, connect querysail-gsc and sign in with your QuerySail account.
Run MCP: Add Server from the Command Palette, choose HTTP, paste the endpoint above and name it querysail-gsc. Or add this to your mcp.json:
{
"servers": {
"querysail-gsc": {
"type": "http",
"url": "https://mcp.querysail.com/gsc/mcp"
}
}
}Sign in with your QuerySail account when VS Code asks.
Add this to opencode.json in your project, or to ~/.config/opencode/opencode.json for all projects:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"querysail-gsc": {
"type": "remote",
"url": "https://mcp.querysail.com/gsc/mcp",
"enabled": true
}
}
}Then sign in with your QuerySail account in the browser window this opens:
opencode mcp auth querysail-gscIf your app accepts a remote MCP URL, add the endpoint above and sign in with your QuerySail account when asked.
If it only runs local commands, use the mcp-remote bridge (needs Node.js). It opens your browser so you can sign in:
{
"mcpServers": {
"querysail-gsc": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.querysail.com/gsc/mcp"
]
}
}
}Limits and accuracy
Search Console data has limits that are easy to miss when an assistant summarizes it. QuerySail adds notes about them to its answers, and your assistant should pass them on.
- Freshness. By default QuerySail uses finalized data. The default window is the last 28 days ending three days ago. Ask for preliminary data to include the most recent days, which can still change.
- Time zone. Dates and hours are Pacific Time, as in Search Console.
- History. Search Console keeps about 16 months. Hourly data covers the last 10 days.
- Top rows only. For query and page breakdowns Google returns top rows, and it leaves out rare queries for privacy. Query rows usually do not add up to the property total, and a missing row does not mean zero.
- Rows per answer. Each call returns 20 rows by default and 100 at most. Your assistant can page through more. Fair-use limits are on the pricing page.
- URL inspection. Results describe the version Google last indexed, not a live test of the page.
- Sitemaps. URL counts are URLs the sitemap lists, not URLs Google indexed.
- Cache. QuerySail caches answers for up to 15 minutes, so asking the same question twice in a row does not call Google again.
- Read-only. The tools cannot change anything in Search Console: no sitemap submissions, indexing requests or setting changes.
Other ways to get Search Console data into an AI assistant
QuerySail is one option. Depending on how often you ask and which app you use, one of these may suit you better.
Export a CSV and upload it
Export the Performance report from Search Console and attach the file to a chat. It is free and works in any assistant that accepts files. The report shows and exports at most 1,000 rows per table, the file is a snapshot, and every new question about another date range or filter needs a new export. URL inspection and sitemap status are not in the export.
Use Google's own tools
Search Console itself, the Looker Studio connector and the bulk data export to BigQuery all read the same data. Looker Studio suits dashboards you check regularly. The BigQuery export has the most complete performance data, but it needs a Google Cloud project and SQL. None of them lets you ask questions in ChatGPT or Claude.
Run an open-source MCP server yourself
Several open-source Search Console MCP servers exist, and the software is free. You create a Google Cloud project, enable the Search Console API, set up an OAuth client or a service account, and run the server on your machine. A local server works with Claude Desktop, Claude Code, Cursor and VS Code. ChatGPT and claude.ai only connect to servers on the internet, so for them you also host the server and secure it. If you are comfortable with that, self-hosting is a good choice.
When QuerySail fits
QuerySail suits you if you want the same Search Console data in ChatGPT, claude.ai and your editor without running anything, or if you look after several properties or Google accounts. It costs $8 per month after the 7-day trial. See the Search Console MCP server page for every tool and option.