SEO with Claude works when Claude does not answer from memory but measures for itself. In Claude Code, Claude gets three things for that: measuring tools it starts in the terminal (Lighthouse, a crawler, the Search Console interface), skills as fixed work instructions for recurring tasks such as an audit, and MCP servers as access to data sources you do not have yourself, for example a keyword database like SE Ranking. The rule that holds it together: every number in the result points to a saved file, or it gets thrown out. That is how Sebastian, my AI employee for SEO and GEO, has worked for me since August 2026. Further down I show how we set up the SE Ranking MCP server in Claude Code without writing the API key in plain text into the repository or the command line, and where the data runs into limits for a small website.
What an MCP server is in general and which scopes exist is covered in Set Up a Claude MCP Server. This article is about the SEO case.
What “Claude SEO” actually means
Under “Claude SEO” you will find three different things, and it pays to keep them apart:
SE Ranking, for example, publishes its own skill collection on GitHub that builds on its MCP server, with 26 skills according to the description, from content briefs to AI visibility. I have not tested that collection. What I tested is the MCP server underneath, with Sebastian's own skills.
The three building blocks in Claude Code
Measuring tools in the terminal. Lighthouse, Unlighthouse, linkinator, Playwright and a custom crawl script run for Sebastian without approval, because they cost nothing and change nothing. He reads Search Console and Bing Webmaster Tools through their interfaces, read-only. Every raw output ends up as a file in the job folder. Which free tools measure what and where they stop is covered in SEO Audit Tools Compared.
Skills as work instructions. A skill is a SKILL.md file with a description of when it is needed and the steps Claude then follows. Sebastian has two: /seo-audit for a technical and content audit with a prioritised action plan, and /geo-audit for visibility in AI search. They state not only what to check but also what must not go into the report, such as a number without a source location or a ranking promise. How skills work in general is shown in Claude Skills: How to Create and Use Them.
MCP servers as a data source. For everything the free sources fundamentally do not deliver, an MCP server is attached. For Sebastian, that has been SE Ranking since October 2026: search volume, keyword difficulty, competitors' terms and positions, third-party backlinks. Claude calls the server's tools like a web search and gets the answer back.
How an SEO job runs for me
- Write down the job. Sebastian creates a dated folder and records who wants what, in my own words.
- Measure. Raw data from Search Console, crawl, Lighthouse and, if needed, SE Ranking goes into
daten/.
- Assess. Findings with a source location, separated into “proven” and “hypothesis”.
- Prioritise. Actions with effort and expected effect, phrased as a hypothesis.
- Have it reviewed. A separate review role reads the report against the raw data before I see it.
- Approve. Anything that changes the website or leaves the house only goes out with my explicit word.
- Measure again. The same query after 28 days, if possible with an unchanged control page.
A complete run with all the tools is described in How to Run an SEO Audit With AI. The role behind it is on Sebastian, my AI employee for SEO and GEO.
Setting up the SE Ranking MCP in Claude Code
Upfront: I have a partnership with SE Ranking, and I earn a commission through my links to SE Ranking*. I set up and tested the MCP server before that, with the free trial I had set up myself. For this article and three others, SE Ranking now provides me with an account free of charge.
* Affiliate link: if you subscribe or buy credits through this link, I earn a commission. Your price stays the same. I have a partnership with SE Ranking.
SE Ranking runs a hosted MCP server at https://api.seranking.com/mcp. The official documentation names two ways for Claude Code.
Option A: browser sign-in (recommended by the provider).
claude mcp add --transport http se-ranking https://api.seranking.com/mcp
Then call /mcp in a Claude Code session and finish the sign-in in the browser. Claude Code stores the token and reuses it in later sessions. For a machine you sit at yourself, this is the simplest way.
Option B: API key in the header (for servers and runs without a browser).
claude mcp add --transport http se-ranking https://api.seranking.com/mcp \
--header "X-Api-Key: <your-key>"
You find the key in the API dashboard of your SE Ranking account. We took this way on my server because nobody opens a browser there. I would not recommend typing the command exactly like this, though: the key then ends up in the shell history and, because claude mcp add stores locally when you give no scope, as plain text in your user configuration ~/.claude.json.
This is how we did it: key as a placeholder, never in plain text in the repository. The repository contains only this template with a placeholder:
{
"mcpServers": {
"se-ranking": {
"type": "http",
"url": "https://api.seranking.com/mcp",
"headers": {
"X-Api-Key": "${SERANKING_API_KEY}"
}
}
}
}
The key itself sits encrypted in the repository (with SOPS and a separate key for the server; my private key is never stored there). During installation, a script decrypts it on the server, inserts it into the template and writes the finished configuration to a file that Git ignores and that only the working user may read. The key never appears in the chat, in logs, in commits or on the command line. Without a server it is simpler: Claude Code itself replaces placeholders of the form ${VAR} in a .mcp.json with environment variables, including in the headers of HTTP servers. Then the same template is enough, and you load the value from your password manager into the environment before you start claude. A .mcp.json in a project has to be approved by Claude Code the first time; on the server, the approval for se-ranking is in the user settings (enabledMcpjsonServers).
Check that it runs. claude mcp list shows the server as connected, /mcp lists its tools. On 17 October 2026, ours had 236 tools in four groups:
Block the deleting tools. According to SE Ranking, a key in the header has the same rights as the whole account, and read-only keys do not exist yet. Among the 236 tools there are therefore some that delete projects, keywords, audits or sub-accounts. I blocked those in the Claude Code settings with a deny rule, 28 of them, each by its full name:
{
"permissions": {
"deny": [
"mcp__se-ranking__PROJECT_deleteProject",
"mcp__se-ranking__PROJECT_deleteKeywords",
"mcp__se-ranking__PROJECT_createSubAccount",
"mcp__se-ranking__PROJECT_addDisavowedBacklinks",
"mcp__se-ranking__SEV_removeProjectEngine"
]
}
}
This is an excerpt. I chose individual names instead of a pattern like mcp__se-ranking__*delete* because not every dangerous tool has “delete” in its name: creating sub-accounts, declaring backlinks invalid or removing an AI search engine from a project changes the account just as much. A deny rule takes the tool completely out of Claude's reach. That is a technical boundary, not a request in the work instructions.
Keep credits under control. The Data API bills per successful query and per row returned, and error responses cost nothing. The list in the documentation and the actual charge differed clearly in my test: volume for 1,000 terms cost 300 credits instead of the 10,000 you would expect from the table. Sebastian therefore measures the balance before and after every block, using a tool that costs nothing itself. And he does not fetch large responses via MCP but via the REST interface directly into a file. An MCP response ends up in the conversation context; a keyword list with a thousand rows fills it without then lying on disk as evidence. A single SERP cost us about 10 credits via MCP and brought roughly 60 KB into the context, and about 2 credits via REST.
Limits: what the data gives you for a small website
- The database hardly knows your own website. SE Ranking listed 19 search terms for kevinwelter.com, while Search Console had 8,144 in the 28 days to 16 October 2026. For your own positions, Search Console remains the source.
- German Claude terms are often missing. “claude cowork”, “claude skills” or “claude code tutorial” had no data in SE Ranking's German database, but did in the US database. The terms are English; the gap is in SE Ranking's German database, the one for searches in Germany. If you want to know the demand for Claude topics among German-speaking readers, Search Console is the better source.
- Small volumes are lower bounds. A term with 0 searches according to the database had 100 impressions in Search Console in 90 days for me.
- Monthly values jump. Individual terms jumped from 10 to 20 up to 590 searches within a few months. I prioritise by the trend, not by the last month.
- AI search in Germany is almost only AI Overviews. For ChatGPT and Perplexity, you still need your own prompt set.
- The trial access was limited. Domain queries returned at most 10 rows. According to SE Ranking, the limit does not apply to paid accounts.
All numbers from the comparison with and without SE Ranking are in my test report SE Ranking Review: API, MCP and Real Numbers.
Frequently asked questions
Can Claude do SEO?
Claude can do SEO work if it is allowed to measure. Without connected tools, a language model invents numbers such as load times or search volume. In Claude Code, Claude starts Lighthouse, a crawler or a query to Search Console itself, saves the raw data and assesses it. Decisions about changes to the website stay with you.
What is a Claude SEO skill?
A skill is a SKILL.md file with a description of when Claude should use it and the steps of the workflow. For SEO, that means for example: which tools an audit runs, where the raw data ends up and what must not go into the report. There are public collections, but you can also write skills yourself.
How do I set up the SE Ranking MCP in Claude Code?
With claude mcp add --transport http se-ranking https://api.seranking.com/mcp and then /mcp for the browser sign-in. Without a browser, it works with the API key in the X-Api-Key header. Then write the key as the placeholder ${SERANKING_API_KEY} into the .mcp.json, not in plain text into the command.
Does the SE Ranking MCP cost extra?
According to the provider, the MCP server is included in every plan. The Data API tools do consume credits like the API itself, and the project tools consume your plan's limits. What a typical run costs, you should measure on the balance, not on the price list.
Do I need a paid tool for SEO with Claude?
Not to begin with. Search Console, Bing Webmaster Tools, Lighthouse and a crawler carry the audit of a small website. A data tool pays off as soon as you need search volume, competitors or third-party backlinks, because the free sources fundamentally do not deliver those.
Where to go from here
If Claude Code is not running for you yet, start with Install Claude Code: Windows, Mac, Linux and then set up the free measuring tools. You connect your first MCP server following Set Up a Claude MCP Server, preferably one that only reads at first. And if you want not just a tool but an employee who runs this every month: Sebastian is available as a ready-made package in my community Claude Practitioners.