In short
- Run npx serpkin, connect Search Console in the browser, and Claude Code, Codex or Cursor can read your clicks, impressions, positions and index status.
- Serpkin uses only the webmasters.readonly scope, so it can never change your Search Console property.
- Agents get 28- and 90-day performance, period comparisons, top queries and pages, and mission markers; reading it costs no credits.
- Google's limits still apply: about 2 to 3 days of lag, anonymized queries left out, and row caps on large sites.
- A DIY open-source server gives raw API access but needs your own Google Cloud OAuth client and credentials.
A Google Search Console MCP server lets a coding agent like Claude Code, Codex or Cursor read your real clicks, impressions, average positions and indexing status, then act on them in your code. With Serpkin you connect Search Console once in the browser (read-only), run npx serpkin in your repository, and your agent gets tools such as serpkin_get_performance and serpkin_compare_performance. Reading that data costs no credits, and there is no Google Cloud project or OAuth client to set up yourself.
What a Search Console MCP server gives your agent
Search Console is the only source of what Google actually showed for your site: which queries, which pages, how often, and at what position. An MCP server exposes that to the agent as tools it can call in the middle of a task. The useful part is the combination: the agent can read that /pricing lost clicks, open the file that renders it, and propose a change in the same session.
Through Serpkin, an agent can read:
- Performance over time. Daily clicks, impressions, CTR and position for the last 28 or 90 days, totals against the previous period, the top 25 queries and the top 25 landing pages with their change in clicks.
- Period comparisons. Site totals for the last 28 days against the 28 before, side by side, with caveats when the periods aren't comparable.
- Mission markers. The dates a fix shipped and was verified, drawn on the same series, so the agent can see what happened after a change. That is correlation, not proof.
- Indexing status. Serpkin runs Google's URL Inspection on your pages. A page Google hasn't indexed becomes a scan finding and a mission, and site watch reports wins like "page indexed" or "first impressions".
- What to work on next. Missions and the research plan use the same data: queries ranking around positions 8 to 15, queries with demand but no page that ranks, pages with high impressions and few clicks.
What to ask, and which tool answers
You don't have to name tools. Ask in plain words and the agent picks one. This table shows what each request maps to, so you know what data is behind the answer:
| Ask your agent | Tool it calls | What comes back |
|---|---|---|
| How did search do this month compared with last month? | serpkin_compare_performance | Clicks, impressions and average position for two 28-day windows, plus caveats |
| Which pages lost the most clicks in the last 28 days? Open the files that render them. | serpkin_get_performance | Top 25 landing pages with clicks_delta; the agent then reads the files locally |
| Show the last 90 days of clicks and mark when we shipped SEO fixes. | serpkin_get_performance (days: 90) | Daily series with shipped and verified markers per mission |
| Which queries get impressions but almost no clicks? | serpkin_get_performance | Top 25 queries with page, position, impressions, clicks, CTR and a sparkline |
| Did the canonical fix we shipped last month help? | serpkin_get_results | Baseline, then 14- and 28-day clicks, impressions, CTR, position or index checks |
| Is my site OK? Did any page drop out of the index? | serpkin_site_watch | Open alerts with a fix line each, plus recent wins such as page indexed |
| What should we research next, and why? | serpkin_research_plan | Topic map, competitors seen in your results and up to 5 ranked moves with their credit cost |
| Summarize my SEO week. | serpkin_weekly_summary | Clicks for the latest 7 synced days vs the 7 before, ranking moves, alerts and the next mission |
| What's the one SEO fix to do now? | serpkin_next_mission | A mission built from your queries and pages, with files, steps and checks |
Two habits make the answers better. Ask for the page and the file together, because the route map tells the agent which source file renders each URL. And ask the agent to say which period the numbers cover: Search Console data lags, so "this month" ends a couple of days ago.
> Which pages lost the most clicks in the last 28 days? Open the files that render them. $ serpkin_get_performance { days: 28 } Period ends 2 days ago (Search Console lag). Clicks 1,284 vs 1,410 the 28 days before. /pricing: 212 clicks (-61), position 6.8 · /docs/setup: 98 clicks (-24), position 9.1 /pricing → app/pricing/page.tsx · /docs/setup → app/docs/setup/page.mdx The /pricing title was shortened two weeks ago. Want me to compare it with the queries it ranks for?
Set up Search Console MCP in Claude Code, Codex or Cursor
You need Node 22 or newer and a Search Console property for your site. From your repository root:
npx serpkin- Sign in and pick your agents
The CLI opens
serpkin.com/cliwith a short code. Approve it, and the key is saved to~/.config/serpkin/credentials.json, outside the repository. The CLI detects Claude Code, Codex and Cursor, or you name them:npx serpkin --agent claude,codex,cursor. - Connect Search Console
When the CLI asks about ownership, choose Google Search Console (or pass
--ownership search-console). A browser tab opens. Pick the Google account that has access to the property and approve read-only access. You can also do this later in Settings → Connections. The first sync usually finishes within a few minutes, and a connected property also verifies that the site is yours. - Let the CLI write the agent config
The MCP server is a local stdio bridge that reads the saved key and forwards each request to
https://serpkin.com/api/mcp. No config file holds a key. For Claude Code the CLI installs the plugin or writes.mcp.json. For Cursor it merges.cursor/mcp.jsonand adds a project rule. For Codex it appends a table to~/.codex/config.toml. - Restart the agent and ask
Start the agent again so it loads the server, check that
serpkinshows as connected (/mcpin Claude Code and Codex, Customize in the Cursor sidebar), then ask "How did search do this month compared with last month?"
The config the CLI writes
Claude Code (.mcp.json) and Cursor (.cursor/mcp.json) use an entry like this (Cursor's omits type):
{
"mcpServers": {
"serpkin": {
"type": "stdio",
"command": "npx",
"args": ["-y", "--registry=https://registry.npmjs.org", "serpkin@0.2.10", "mcp"]
}
}
}Codex uses TOML:
[mcp_servers.serpkin]
command = "npx"
args = ["-y", "--registry=https://registry.npmjs.org", "serpkin@0.2.10", "mcp"]The details per agent, including scopes, slash commands, hooks and setup without the CLI, are on the Claude Code, Codex and Cursor pages. What happens on the Google side, connection states and how to disconnect are in Connect Google Search Console.
What data you get, and its limits
Serpkin syncs a connected property about once a day and stores a snapshot. The agent reads that snapshot, so answers are fast and every tool call sees the same numbers. Here is what the snapshot covers:
| Data | Window | Read with |
|---|---|---|
| Query and page rows | 28 days ending 2 days ago, plus the 28 days before; up to 25,000 query and page rows per period | serpkin_get_performance, missions, research plan |
| Daily site series | 90 days, same end date | serpkin_get_performance (days: 28 or 90) |
| Daily series per query | 90 days for the top 50 queries by impressions | Sparklines in serpkin_get_performance |
| Period totals | The two synced 28-day windows, all countries and devices | serpkin_compare_performance |
| URL inspection | Up to 150 pages a day on Builder and 200 on Pro | Scan findings, missions, site watch, results |
The limits come from two places: how Google reports the data, and what Serpkin keeps.
- Lag. Google says collected data should normally be available in 2 to 3 days. Serpkin ends its windows two days ago so totals are close to complete, and the newest day can still move a little.
- Hidden queries. Google leaves some queries out to protect searchers' privacy (anonymized queries), so query rows don't add up to the site total. Grouping by both query and page can also drop some rows.
- Row caps. The Search Console interface shows at most 1,000 rows per table. The API returns up to 25,000 rows per request and exposes at most 50,000 rows per day per search type, sorted by clicks. A large site's long tail is incomplete wherever you read it.
- History. Google keeps 16 months of Search Console data. Serpkin keeps a rolling 90 days, because missions and results need recent windows. For year-over-year questions, open Search Console itself.
- Fixed windows.
serpkin_compare_performancemaps the periods you ask for to the nearest synced 28-day window. Ask for "last March vs this March" and it will say so in its caveats instead of inventing numbers. - Inspection quota. Google allows 2,000 URL inspections per day and 600 per minute per property. Serpkin stays well below that with its per-plan allowance.
Privacy: read-only by design
Google offers two scopes for the Search Console API: webmasters (read and write) and webmasters.readonly. Serpkin asks only for webmasters.readonly. It can read your properties, performance data and URL inspection results. It cannot add or remove users, submit or delete sitemaps, or change any setting on the property.
- Tokens stay on the server. The Google token is encrypted at rest. Your agent never sees it, and no config file in your repository holds a Google or Serpkin key.
- Agent keys can be read-only too. A key with "Review and plan" access (Settings → Agents) can read sites, missions and performance, changes nothing and spends no credits.
- Search data is untrusted input. Query text and page URLs come from the public, so the Serpkin tools label them as data, not instructions. A query like "ignore previous instructions" stays a query.
- Disconnecting deletes the data. It revokes the token at Google and deletes the stored tokens and synced Search Console data for that site. See Data and privacy for the rest.
Serpkin vs a DIY open-source Search Console MCP server
You can also run an open-source Search Console MCP server yourself. Most work the same way: you create a Google Cloud project, enable the Search Console API, create your own OAuth client (Google calls these a client ID and client secret) or service account credentials, then point the server at the credentials file. The server calls the API live on each request.
| DIY open-source server | Serpkin | |
|---|---|---|
| Google setup | Your own Cloud project, API enabled, OAuth client or service account | Approve read-only access in the browser |
| Credentials | A client secret or key file on your machine; keep it out of git | Encrypted on Serpkin's server; no key in any config |
| Scope | Whatever the server requests; check before you approve | webmasters.readonly only |
| Data | Live API calls, any date range within Google's 16 months | Daily snapshot: 28-day windows and 90 days of daily data |
| Raw queries | Usually any dimension, filter and date range the API supports | Fixed reports shaped for agents (top queries, pages, deltas) |
| What the agent does with it | Your prompts decide | Missions with files and steps, preview checks, measured results |
| Cost | Free; you run and update it | 7-day free trial, then a paid plan; reading the data costs no credits |
A DIY server is the better fit if you want raw API access, long date ranges or custom filters, and don't mind managing credentials. Serpkin is the better fit if you want the agent to turn Search Console rows into a specific change in a specific file, then check whether it helped. Before you approve any server, look at the scope on Google's consent screen: the read and write scope can change your property. For a broader look at SEO servers for agents, see SEO MCP servers compared.
What it costs
Every Search Console read is free: serpkin_get_performance, serpkin_compare_performance, serpkin_get_results, serpkin_site_watch, serpkin_weekly_summary and serpkin_research_plan spend no credits. Only research tools do, such as keyword research (2 credits) or a SERP check (1 credit per keyword), and the agent is told to state the cost and ask you first. Serpkin plans start with a 7-day free trial: Builder is $29 a month for 3 sites, Pro is $79 a month for 15 sites. Without a plan you get one site with a 6-page preview audit and no missions.
Not ready to connect anything? The free SEO checker checks one URL's server HTML, title, canonical, robots and structured data with no sign-up. Start the trial when you want your agent reading real Search Console data.
Questions
Is there an official Google Search Console MCP server?
Google documents the Search Console API, which MCP servers build on. To connect a coding agent you use a third-party server: an open-source one you run with your own Google Cloud credentials, or a hosted one like Serpkin that asks for read-only access in the browser.
Can a Search Console MCP server change my property?
Only if it asks for the read and write webmasters scope. Serpkin asks for webmasters.readonly only, so it can read performance and URL inspection data but cannot change users, sitemaps or settings.
Why don't the query rows add up to my total clicks?
Google leaves out anonymized queries to protect searchers' privacy, and row limits drop part of the long tail on large sites. Site totals include that traffic; query tables don't.
How fresh is the data my agent sees?
Google says Search Console data is normally available in 2 to 3 days. Serpkin syncs once a day and ends its 28-day windows two days ago, so the newest day can still change slightly.
Do I need a Google Cloud project to use Search Console with Claude Code?
Not with Serpkin: you approve read-only access in the browser and run npx serpkin. Most open-source Search Console MCP servers do need your own Google Cloud project, the API enabled and an OAuth client or service account.
Sources (6) · checked November 5, 2026
- Search Console API: authorizing requests (webmasters and webmasters.readonly scopes, client ID) (checked November 5, 2026)
- Search Console Help: about Search Console data (anonymized queries, 2 to 3 day availability, 1,000-row tables) (checked November 5, 2026)
- Search Console API: getting all your data (50,000 rows per day per search type, 2 to 3 day lag) (checked November 5, 2026)
- Search Console API: searchanalytics.query (rowLimit up to 25,000, dataState) (checked November 5, 2026)
- Search Console API: usage limits (URL Inspection 2,000 per day, 600 per minute per property) (checked November 5, 2026)
- Analytics Help: Search Console integration (Search Console keeps data for the last 16 months) (checked November 5, 2026)