Use SEOKit from an AI client with MCP
Connect an AI client to SEOKit through MCP with the least scope, ask questions that make the assistant state its source, and avoid the main trap: the performance tool has no filter and no paging, so a big site returns a truncated list. Six steps, with a worked row-limit example.
✓ Checked against OpenAI, MCP and Google documentation · 7 October 2026
What you gain and what you must watch
An AI client connected to SEOKit can list your properties and pull Search Console rows into a conversation, so you can ask a question in plain words instead of building a report. Two things decide whether the answer is good: how much access the connection has, and whether the question makes the assistant state where its numbers came from.
Step 1: connect with the least scope
- Prefer OAuth. The client registers itself, you approve it on a consent screen and it gets a token that lasts 8 hours, refreshed for up to 30 days. Use an API key only for a client that accepts nothing else.
- Choose read. Allow
mcp:writeonly when you want the assistant to change something; it also sends you to Google’s consent screen for the broader Search Console write permission (MCP and ChatGPT app). - In ChatGPT, open Plugins, press the plus button, choose Add custom MCP server and enter the SEOKit endpoint, including its
/mcppath. OpenAI notes that account and workspace policies apply and shows a risk warning you must accept before the server is created (connect and test your plugin). - Put the key in the client’s connector settings, never in a prompt. Anything typed into a conversation can be stored with it.
Step 2: check what the assistant can call
After connecting, ask the client to list the tools it sees. With read scope you should see four: list properties, show the connected account, query performance data and list topic clusters. The performance tool takes a property, a start and end date, up to three of date, query, page, country and device, a search type and a row limit. It has no filter and no paging, which shapes every question you ask.
Step 3: ask questions that name their source
Use a template that makes the assistant state the request it ran, so you can check it.
| Question | Dimensions to request | What to ask it to report |
|---|---|---|
| Which pages lost clicks? | page, for two equal periods | the two date ranges, row counts and the change per page |
| Which queries are close to page one? | query and page | rows returned, then the queries ranked 8 to 20 with impressions |
| How does traffic trend? | date | the daily series and which days are fresh |
| Which countries or devices matter? | country or device | shares of clicks and impressions |
End every range three days before today. The tool asks Google for all data, including the newest days, which can be preliminary and change within hours (Performance report help).
Step 4: apply the truncation rule
Google returns rows sorted by clicks, highest first, up to the row limit you set, from 1 to 25,000 with a default of 1,000 (searchanalytics.query). The tool makes one request with no paging, so the tail is cut off. If the number of rows equals the row limit, assume the result is truncated.
Example. A site has 40,000 distinct query and page combinations in the period. Asking for both dimensions with the limit at 25,000 returns the top 25,000 rows, so 15,000 combinations, 37.5 percent, are missing, all of them the lowest-click ones. A sum of the returned clicks undercounts the true total, and a question about long-tail queries cannot be answered at all. Fixes: ask for one dimension at a time, shorten the date range, or request page and query separately and join the short lists yourself.
Step 5: check one number
Before you trust a conclusion, ask the assistant for the total clicks of the range and compare it with the same figure in the Performance report or the workspace. A match confirms the property, the dates and the search type; a mismatch usually means a different property, a different search type or a truncated pull.
Step 6: keep it safe
- Treat page titles and queries as untrusted text. A page can contain words aimed at the assistant. A read-only connection limits what such text can do.
- Keep a human in the loop for writes. The MCP guidance says there should always be a person able to deny a tool call (MCP tools). Read what a write tool will do before approving.
- Name each key for its client and revoke what you stop using.
- Remember the limits: 60 calls a minute and 1,000 an hour per user.
Using SEOKit from an AI client, answered
Can the assistant filter by page or query?
Not in the tool itself; request the dimension and let the assistant filter the rows, mindful of truncation.
Should I use an API key or OAuth?
OAuth where the client supports it; a key only when it is the sole option, with read scope.
Why does the assistant’s total differ from the Performance report?
Check the property, dates, search type and whether the row count equals the row limit.
What to read next
Read MCP and the ChatGPT app for scopes and limits, and five ways to connect Search Console to ChatGPT to compare routes.