Search Console MCP
Search Console, Bing Webmaster Tools, GA4 and AdSense data and SEO analysis in one MCP server
SEO data from your own Search Console, GA4, Bing and site crawls, hosted or run locally over MCP
By ian nuttall (individual) TypeScript Remote (hosted) · Streamable HTTPLocal · stdio Data and analyticsBrowser automation
71 popularity score ★ 609 ↓ 4.3k/wk
Opens the app, which asks before it adds the server.
claude mcp add --transport http seoskill https://seoskill.dev/mcpcodex mcp add seoskill --url https://seoskill.dev/mcp{
"mcpServers": {
"seoskill": { "url": "https://seoskill.dev/mcp" }
}
}https://seoskill.dev/mcpOpens the app, which asks before it adds the server.
npm i -g seo
seo startclaude mcp add seo-skill -- seo mcp serve{
"mcpServers": {
"seo-skill": {
"command": "seo",
"args": [
"mcp",
"serve"
]
}
}
}{
"mcpServers": {
"seo-skill": {
"command": "seo",
"args": [
"mcp",
"serve"
]
}
}
}{
"servers": {
"seo-skill": {
"type": "stdio",
"command": "seo",
"args": [
"mcp",
"serve"
]
}
}
}[mcp_servers.seo-skill]
command = "seo"
args = ["mcp", "serve"]gemini mcp add --scope user seo-skill seo -- mcp serve| Set together: google-service-account | |
|---|---|
SEO_GOOGLE_SERVICE_ACCOUNT_JSON secret |
Optional: Whole Google service account JSON key, used instead of a browser sign-in. Set only one of this, SEO_GOOGLE_SERVICE_ACCOUNT_FILE or GOOGLE_APPLICATION_CREDENTIALS. |
SEO_GOOGLE_SERVICE_ACCOUNT_FILE |
Optional: Path to a service account JSON key file. |
GOOGLE_APPLICATION_CREDENTIALS |
Optional: Standard Google path to a service account key, read when the other two are unset. |
| Set together: dataforseo | |
SEO_DATAFORSEO_LOGIN |
Optional: DataForSEO login. Set together with SEO_DATAFORSEO_PASSWORD. |
SEO_DATAFORSEO_PASSWORD secret |
Optional: DataForSEO API password. |
SEO_AHREFS_API_KEY secret |
Optional: Ahrefs API key for research. |
SEO_BING_API_KEY secret |
Optional: Bing Webmaster Tools API key, used instead of a saved one. |
SEO_CLICKY_SITEKEY secret |
Optional: Clicky sitekey, read instead of asking when connecting a Clicky site. |
TYPESAFE_API_KEY secret |
Optional: TypeSafe key that lets internal link suggestions be classified and judged. |
| Set together: telemetry | |
DO_NOT_TRACK |
Optional: Set to 1 to turn off anonymous usage events. SEO_TELEMETRY_DISABLED=1 does the same. |
SEO Skill gives an assistant the numbers behind a site you own: Search Console clicks, impressions and positions, Google Analytics or Clicky visits, Bing Webmaster rows, dates of Google updates and a crawl of the site. It reports facts and the next tool to call, and leaves the conclusions to the assistant and to you.
There are two ways to use it. The maker runs a hosted server at https://seoskill.dev/mcp that you add to your client and sign in to with Google. It carries the seven shared tools (seo_sites, seo_report, seo_page, seo_compare, seo_index, seo_research and seo_data). The npm package `seo` is a CLI that also starts a local stdio server with `seo mcp serve`, using the Google sign-in and keys saved on your machine.
The README says every command is also an MCP tool. At version 0.13.0 the local server registers 12 tools (packages/mcp/src/index.ts, shared-tools.ts and provider-extension-tools.ts). It has the seven shared ones, plus seo_crawl and seo_internal_links, which only run locally, and three tools for provider packages installed through the CLI. There is no seo_analytics tool. Google Analytics and Clicky rows come through seo_data with its source field. It also serves its usage guide as the resource skill://seo/SKILL.md.
An earlier release exposed a catalogue of about 70 reports behind seo_list_reports and seo_run_report. The maker cut that down to this short set, so older guides that name those tools no longer match.
| To run it yourself | Node.js 22+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Google Search Console | FreeA Google account with access to at least one property. Google Analytics is optional. |
| DataForSEO or Ahrefs | Paid planOnly for seo_research. Each request uses credits on your own account. |
| Bing Webmaster Tools | FreeOptional, for Bing rows in the local CLI and server. |
Nothing to install for the hosted server: add https://seoskill.dev/mcp and sign in with Google in the browser when the client asks. Codex finishes the sign-in with `codex mcp login seoskill`. For the local server, install the package globally with `npm i -g seo` and run `seo start` once to sign in with Google and add the server to your agents. The package's engines field asks for Node ^22.23.4, ^24.22.1 or 26.12.1 and later. On a machine without a browser, a Google service account JSON key or an SEO_TOKEN made on your seoskill.dev account page replaces the sign-in.
Without a Search Console property, reports cover crawl evidence only and give no traffic, queries or rankings. Research-provider figures are estimates, and those calls cost money per request (the reports record API units or USD and cache repeats). The crawler identifies itself with a fixed user agent, so sites that block bots may refuse it. There is no hosted endpoint in this release. Reports needing conversion, attribution or geography fields require Google Analytics; Clicky and SerpBase need separate provider packages.
Suits site owners and developers who want an assistant to answer questions from their own Search Console and analytics numbers rather than from estimates. The hosted endpoint needs no install, and the maker's docs say it keeps linked accounts and saved keys but no reports or data rows. The local server suits people who also want crawls, Bing data or everything kept on their own machine. It is a community project, not a Google product. Look elsewhere if you need ranking data for sites you cannot see in Search Console and have no DataForSEO or Ahrefs account.
10 only read, 2 change things. A ? marks an optional parameter.
seo_sitesseo_reportsite?: stringsection?: enumstart_date?: stringend_date?: stringdetail?: enumoffset?: integerseo_pageurl: stringstart_date?: stringend_date?: stringdetail?: enumoffset?: integerseo_comparesite: stringdate: stringpages?: stringseo_indexsite: stringstart_date?: stringend_date?: stringmax_urls?: integerdetail?: enumoffset?: integerseo_researchprovider: enumaction: enumkeywords?: arraytarget?: stringcountry?: stringdetail?: enumoffset?: integerseo_datasource?: enumsite: stringdimensions?: arraypage?: stringquery?: stringstart_date?: stringend_date?: stringdetail?: enumoffset?: integerseo_crawl changesurl: stringseo_internal_linkssite?: stringurl?: stringmax_pages?: integerstart_date?: stringend_date?: stringdetail?: enumoffset?: integerseo_list_providersseo_describe_providerid: stringseo_run_provider changesid: stringaction: stringaccount?: objectparams?: objectrefresh?: booleanskill://seo/SKILL.md