SEO Skill

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

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude Codeterminal
claude mcp add --transport http seoskill https://seoskill.dev/mcp
Codexterminal
codex mcp add seoskill --url https://seoskill.dev/mcp
Cursor.cursor/mcp.json or ~/.cursor/mcp.json
{
"mcpServers": {
"seoskill": { "url": "https://seoskill.dev/mcp" }
}
}
Claude (desktop and web)Settings, Connectors, add a custom connector
https://seoskill.dev/mcp
Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
npm i -g seo
seo start
Claude CodeTerminal
claude mcp add seo-skill -- seo mcp serve
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "seo-skill": {
      "command": "seo",
      "args": [
        "mcp",
        "serve"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "seo-skill": {
      "command": "seo",
      "args": [
        "mcp",
        "serve"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "seo-skill": {
      "type": "stdio",
      "command": "seo",
      "args": [
        "mcp",
        "serve"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.seo-skill]
command = "seo"
args = ["mcp", "serve"]
Gemini CLITerminal
gemini mcp add --scope user seo-skill seo -- mcp serve

Settings 10

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. For seo_research.
SEO_DATAFORSEO_PASSWORD secret Optional: DataForSEO API password. For seo_research.
SEO_AHREFS_API_KEY secret Optional: Ahrefs API key for research. For seo_research.
SEO_BING_API_KEY secret Optional: Bing Webmaster Tools API key, used instead of a saved one. For seo_data.
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. For seo_internal_links.
Set together: telemetry
DO_NOT_TRACK Optional: Set to 1 to turn off anonymous usage events. SEO_TELEMETRY_DISABLED=1 does the same.

What it does

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.

What it needs

To run it yourselfNode.js 22+
Runs onmacOS, Windows, Linux
Google Search ConsoleFreeA Google account with access to at least one property. Google Analytics is optional.
DataForSEO or AhrefsPaid planOnly for seo_research. Each request uses credits on your own account.
Bing Webmaster ToolsFreeOptional, 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.

Limits

  • Not covered Site crawls, internal link suggestions, Bing data and provider packages work only in the local server and CLI, not on the hosted endpoint.
  • Not covered Traffic, query and index data cover only Search Console properties the signed-in Google account or service account can read.
  • Cost seo_research calls your own DataForSEO or Ahrefs account and each call spends its credits.
  • Early release seo_report without a site summarises the weekly site audit, which is in beta. Accounts outside that beta must pass a site.
  • Size cap seo_internal_links crawls 500 pages by default, up to 5,000 with max_pages.
  • Rate limit seo_index inspects URLs within the Google URL Inspection quota left for the day.

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.

Who it suits

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.

Tools 12

10 only read, 2 change things. A ? marks an optional parameter.

seo_sites
Lists the Search Console, Google Analytics and Bing properties the connected accounts can read and which research keys are set.
seo_report
Main Search Console report for a site, then one section's rows. With no site, a summary of last week's audited sites.site?: stringsection?: enumstart_date?: stringend_date?: stringdetail?: enumoffset?: integer
seo_page
Live facts for one URL, its Google index status and its Search Console queries against the previous period.url: stringstart_date?: stringend_date?: stringdetail?: enumoffset?: integer
seo_compare
Compares equal periods before and after a date, with the Google updates that fall in the window.site: stringdate: stringpages?: string
seo_index
Google's indexing reasons for known URLs and the pages that lost their clicks, checked live.site: stringstart_date?: stringend_date?: stringmax_urls?: integerdetail?: enumoffset?: integer
seo_research
Keyword, competitor, backlink and AI answer data from your own DataForSEO or Ahrefs key.provider: enumaction: enumkeywords?: arraytarget?: stringcountry?: stringdetail?: enumoffset?: integer
seo_data
Raw rows from Search Console, Google Analytics, Bing or Clicky for questions the report does not cover.source?: enumsite: stringdimensions?: arraypage?: stringquery?: stringstart_date?: stringend_date?: stringdetail?: enumoffset?: integer
seo_crawl changes
Local only: crawls a site from your machine, returns technical issues and saves the crawl.url: string
seo_internal_links
Local only: suggests internal links to add across a site or toward one page.site?: stringurl?: stringmax_pages?: integerstart_date?: stringend_date?: stringdetail?: enumoffset?: integer
seo_list_providers
Local only: lists provider packages installed through the CLI.
seo_describe_provider
Local only: shows one installed provider's capabilities and action schemas.id: string
seo_run_provider changes
Local only: runs one action from an installed provider package.id: stringaction: stringaccount?: objectparams?: objectrefresh?: boolean

Resources 1

skill://seo/SKILL.md
The usage guide for the tools, served as markdown when the package includes it.

Similar servers