seo-mcp
The seo-mcp server is a free, keyless SEO toolbox providing the following capabilities:
On-Page SEO Audit (
audit_page): Analyze any URL for title, meta description, canonical tags, robots directives, viewport, Open Graph/Twitter tags, heading structure, word count, image alt coverage, link counts, and structured data — producing a 0–100 score with a list of issues. Optionally includes PageSpeed metrics.Export Audit as PDF (
export_audit_pdf): Generate a professionally formatted PDF report of an SEO audit, including score badge, summary cards, severity-colored issue list, and optional PageSpeed metrics.Robots.txt Analysis (
check_robots): Fetch and parse a site's/robots.txtto reveal user-agent groups, allow/disallow rules, and declared sitemaps.Sitemap Discovery & Summary (
check_sitemap): Discover and summarize a sitemap (index vs. urlset), including URL count and a sample of URLs.Structured Data Extraction (
extract_schema): Extract JSON-LD structured data, listing all schema.org@types, microdata itemtypes, and any JSON-LD parse errors.Broken Link Detection (
find_broken_links): HEAD-check links on a page and report any returning 4xx/5xx status codes or that are unreachable.Keyword Ideas (
keyword_ideas): Generate related keyword/query suggestions for a seed term via Google Suggest (free, no search volume data).PageSpeed Insights (
pagespeed): Run Google PageSpeed Insights (Lighthouse) for a performance score, lab Core Web Vitals (LCP, CLS, TBT, FCP, Speed Index, TTI), real-user CrUX field data, and top improvement opportunities. Works keyless, but supports an optionalPAGESPEED_API_KEYfor higher quota.
Provides Google PageSpeed Insights data including performance score, Core Web Vitals, and optimization opportunities.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@seo-mcpaudit https://example.com for SEO"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
seo-mcp
An SEO MCP server — a stdio Model Context Protocol server that gives an AI host a set of SEO tools. The MVP is 100% free and keyless: on-page/technical audits, robots.txt, sitemaps, structured data, broken-link checks, and keyword ideas.
Built on the same proven scaffold as chrome-mcp: SDK Server → StdioServerTransport, a flat tool registry, and a never-throw dispatch firewall.
Tools (all free, no API key)
Tool | What it does |
| Full on-page audit: title, meta description, canonical, robots, viewport, OG/Twitter, heading outline, word count, image alt coverage, link counts, structured-data presence → issues + 0–100 score. Pass |
| Fetch & parse |
| Discover & summarize a sitemap (index vs urlset, URL count, sample) |
| Pull JSON-LD structured data and list schema.org |
| HEAD-check links on a page; report 4xx/5xx/unreachable |
| Related queries for a seed term via Google Suggest (no volume) |
| Google PageSpeed Insights (Lighthouse): perf score, lab Core Web Vitals + real-user CrUX field data + top opportunities. Keyless (rate-limited); set |
Related MCP server: gkb-seo-mcp-server
Use it as an MCP server
Requires Node 20+. There is nothing to clone, build, or configure — add this to your MCP host config (e.g. a project .mcp.json) and restart the host:
{
"mcpServers": {
"seo-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@mehmoodqureshi/seo-mcp"]
}
}
}Or with Claude Code: claude mcp add seo-mcp -- npx -y @mehmoodqureshi/seo-mcp
Or, after npm install -g @mehmoodqureshi/seo-mcp, set "command": "seo-mcp" with no args.
Windows
WSL2 is not required — native Windows works. One config change is, though: on Windows npx is npx.cmd, a batch shim, and MCP hosts spawn the server without a shell, which cannot execute a .cmd. So "command": "npx" fails to start. Wrap it in cmd /c:
{
"mcpServers": {
"seo-mcp": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx", "-y", "@mehmoodqureshi/seo-mcp"]
}
}
}Or: claude mcp add seo-mcp -- cmd /c npx -y @mehmoodqureshi/seo-mcp
Develop
From a source checkout:
npm install
npm run build # → dist/src/cli.js
npm testThen point your host at the local build with "command": "node", "args": ["<abs-path>/dist/src/cli.js"].
Then ask things like "audit https://example.com for SEO" or "what does example.com's robots.txt block?".
Quick smoke test (no MCP host needed)
node -e "require('./dist/src/seo/audit').auditPage('https://example.com').then(r=>console.log(JSON.stringify(r,null,2)))"Develop
npm run typecheck # tsc --noEmit
npm run build # → dist/
npm test # node:test suite (no network — fetch is stubbed)CI (.github/workflows/ci.yml) runs typecheck → build → test on Node 20/22. Node 20+ is required (cheerio 1.x depends on undici, which needs the global File added in Node 20).
Performance & output size
Request caching — identical GETs are de-duplicated by a short-TTL cache with in-flight coalescing, so a
audit_page→export_audit_pdfpair (or a sitemap/robots.txt referenced during a crawl) hits the network once. Tune withSEO_MCP_CACHE_TTL_MS(milliseconds, default15000); set0to disable.Compact
audit_site— by default the site audit returns a slim, worst-first per-page table (score + issue counts) plus the aggregates, to keep the response small inside an MCP host's context. Passdetail: truefor the full per-page breakdown, or useexport_site_pdffor a formatted report.
PageSpeed (optional key)
The pagespeed tool works keyless but Google rate-limits anonymous requests. To raise the quota, grab a free PageSpeed Insights API key and set it in your MCP host config:
{
"mcpServers": {
"seo-mcp": {
"type": "stdio",
"command": "node",
"args": ["/Users/mehmoodqureshi/Work/seo-mcp/dist/src/cli.js"],
"env": { "PAGESPEED_API_KEY": "your-key-here" }
}
}
}Roadmap (needs a key — not in the free MVP)
serp_rank— real SERP position checks (drive a browser, or a paid SERP API)domain_authority— OpenPageRank (free key) for an authority scorebacklinks— real backlink profiles (paid: Ahrefs / SEMrush / DataForSEO)
License
MIT
Available Tools
8 toolsaudit_pageA
Full on-page SEO audit of a URL: title, meta description, canonical, robots, viewport, Open Graph/Twitter, heading outline, word count, image alt coverage, internal/external link counts, structured-data presence, plus a list of issues and a 0–100 score. Free, no API key. Set pagespeed=true to also attach PageSpeed Insights performance metrics. After presenting the results, ASK THE USER whether they want a professionally formatted PDF report; if they say yes, call export_audit_pdf with the same url (and same pagespeed/strategy).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https:// optional) | |
| pagespeed | No | Also run PageSpeed Insights and attach performance metrics (default false) | |
| strategy | No | PageSpeed strategy when pagespeed=true: "mobile" (default) or "desktop" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description fully bears the burden. It discloses everything the tool does, including optional pagespeed integration, and notes that PDF generation requires a follow-up call. No destructive actions or contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct (about 6 sentences), front-loaded with the main purpose, and includes only essential information. No extraneous words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many checks) and no output schema, the description thoroughly enumerates all output items (title, meta, issues, score, etc.) and provides next-step instructions. It is complete for an AI agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters described. The description adds extra context: url accepts 'https:// optional', pagespeed defaults to false, strategy defaults to mobile. It explains the interplay between pagespeed and strategy parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'Full on-page SEO audit of a URL' and lists specific elements (title, meta description, canonical, etc.), distinguishing it from siblings like check_robots or check_sitemap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states it is 'Free, no API key', advises when to set pagespeed=true, and instructs to ask the user for a PDF report then call export_audit_pdf with specific parameters. This provides excellent guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_robotsA
Fetch and parse a site's /robots.txt — user-agent groups, allow/disallow rules, and declared sitemaps.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Any URL on the site |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It indicates a network fetch but does not mention error handling (e.g., missing robots.txt), rate limits, or caching. Adequate but could be improved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that is front-loaded with the verb and resource, no wasted words, efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the main functionality and outputs. However, it lacks details on edge cases like missing robots.txt, which would be helpful for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'url' is described in the schema as 'Any URL on the site'. The tool description reinforces this by stating 'Fetch and parse a site's /robots.txt', but adds no additional semantic nuance. Schema coverage is 100%, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Fetch and parse') and the resource ('a site's /robots.txt'), and specifies the outputs ('user-agent groups, allow/disallow rules, and declared sitemaps'). This distinguishes it from sibling tools like check_sitemap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for robots.txt checking but does not explicitly state when to use this tool versus alternatives like check_sitemap. No guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_sitemapA
Discover and summarize a sitemap (via /sitemap.xml or robots.txt): index vs urlset, URL count, and a sample of URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Any URL on the site |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains what the tool does but lacks details on behavioral traits such as read-only nature, rate limits, or permission requirements. Adequate for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and summarizes outputs with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is mostly complete. It covers the action and key outputs, though it could mention whether the full sitemap content or only a summary is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single parameter 'url' described as 'Any URL on the site'. The description adds no extra semantic meaning beyond the schema, meeting baseline expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool discovers and summarizes a sitemap, listing specific outputs (index vs urlset, URL count, sample URLs). This clearly distinguishes it from sibling tools like check_robots and audit_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for sitemap overview but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_audit_pdfA
Generate a professionally laid-out PDF report of an on-page SEO audit (score badge, summary cards, severity-colored issue list, metadata, content/structure, social tags, and optional PageSpeed metrics). Re-runs the audit for the URL and writes a .pdf to disk, returning the file path. Use this after audit_page when the user asks for a PDF report.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL to audit and export (https:// optional) | |
| path | No | Output file path (default: ./seo-audit-<host>-<date>.pdf in the current directory). ".pdf" is appended if missing. | |
| pagespeed | No | Also run PageSpeed Insights and include performance metrics in the report (default false) | |
| strategy | No | PageSpeed strategy when pagespeed=true: "mobile" (default) or "desktop" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool re-runs the audit, writes a .pdf to disk, and returns the file path. It also notes the optional PageSpeed metrics. No contradictions observed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: first explains what the tool produces, second explains the process and return value, third gives usage guidance. Every sentence adds unique value, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (1 required), no output schema, and no annotations, the description covers all necessary aspects: purpose, process, return value, and usage context. It is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context about the tool's behavior (re-running audit, writing to disk) but does not provide additional meaning for each parameter beyond what the schema already describes. The parameters are adequately documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and nouns: 'Generate a professionally laid-out PDF report of an on-page SEO audit' and enumerates report contents. It also distinguishes from siblings by noting it is used after audit_page and can include PageSpeed metrics, which other tools do not provide as a PDF.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this after audit_page when the user asks for a PDF report.' This provides clear context for when to invoke this tool, though it does not explicitly list when not to use it or mention alternative tools beyond audit_page.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_schemaA
Extract JSON-LD structured data from a page and list the schema.org @types found (plus any microdata itemtypes and JSON-LD parse errors).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the burden. It discloses that the tool extracts structured data and reports errors, implying a read-only operation. However, it does not explicitly state non-destructiveness, authentication needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the core action and outputs. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, no output schema, and missing annotations, the description provides sufficient context: the tool extracts and lists specific structured data types and errors. Slightly less informative for a read-heavy tool, but adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description adds no new information about the 'url' parameter beyond the schema's 'Page URL' description. No format constraints or examples are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'extract' and the resource 'JSON-LD structured data from a page', and specifies what it returns (schema.org @types, microdata itemtypes, parse errors). It distinguishes from sibling tools like audit_page and check_robots by focusing on structured data extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage for extracting structured data, but lacks explicit guidance on when to use this tool versus alternatives (e.g., audit_page). No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_broken_linksB
Check the links on a page with HEAD requests and report any that return 4xx/5xx or are unreachable.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL | |
| max | No | Max links to check (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that HEAD requests are used (non-destructive) and reports broken links. However, it lacks detail on follow-redirects, timeout handling, or rate limiting. Basic behavior is conveyed but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the core functionality. No extraneous information; all text is relevant and earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description adequately explains what it does and how. It specifies the maximum links checked (via 'max' param in schema) and the criteria for broken links. Missing output format details, but overall sufficient for a straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters ('url', 'max') are described in the input schema with coverage 100%. The description does not add semantic value beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks links on a page using HEAD requests and reports those with 4xx/5xx status or unreachable. It specifies the action and resource ('links on a page'). While it doesn't explicitly distinguish from sibling tools like 'audit_page', the unique purpose is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., audit_page, check_robots). No context for optimal use cases or prerequisites is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyword_ideasA
Get related keyword/query ideas for a seed term via Google Suggest (free; related queries only, no search volume).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | Yes | Seed keyword or phrase | |
| lang | No | Language code, e.g. "en" (default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description describes the tool as free, using Google Suggest, and returning only related queries (no volume). With no annotations, this provides basic behavioral context, but it lacks details on rate limits, authentication requirements, or potential errors, which would be helpful for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that packs all necessary information (purpose, source, limitations) without any redundancy or filler. It is well front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description provides sufficient context: source, free nature, and data limitation. It could mention response format or even a note on rate limiting to be fully complete, but it covers essentials well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage). The description adds minimal extra meaning beyond what the schema provides, only reiterating the seed term. With full schema coverage, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'related keyword/query ideas for a seed term' via Google Suggest. It uses a specific verb ('Get') and resource, and the context of 'free; related queries only, no search volume' distinguishes it from sibling tools like audit_page or check_robots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is free and returns only related queries without search volume, giving clear context for when to use. However, it does not explicitly state when not to use it or provide alternative tools for volume data, missing a small opportunity for guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pagespeedA
Run Google PageSpeed Insights (Lighthouse): performance score (0–100), lab Core Web Vitals (LCP, CLS, TBT, FCP, Speed Index, TTI), real-user CrUX field data when available (LCP, CLS, INP, FCP, TTFB), and the top improvement opportunities. Works keyless (rate-limited); set PAGESPEED_API_KEY to raise the quota.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL | |
| strategy | No | "mobile" (default) or "desktop" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations present, but the description covers key behavioral aspects: read-only operation, rate limits, and that results include lab and field data. Transparent about return data structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence detailing outputs, one sentence on quotas. No fluff, front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description enumerates key return values: performance score, lab CrUX, field data, opportunities. Adequately complete for a simple API tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds no extra semantic meaning beyond restating defaults and one usage note. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it runs PageSpeed Insights and lists specific outputs (score, Core Web Vitals, field data, opportunities). Does not explicitly differentiate from siblings like 'audit_page' but the focus on performance makes it distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions keyless usage with rate limits and optional API key for higher quota, providing usage context. Does not explain when to use this tool versus similar siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
audit_page - First observed
check_robots - First observed
check_sitemap - First observed
export_audit_pdf - First observed
extract_schema - First observed
find_broken_links - First observed
keyword_ideas - First observed
pagespeed
TDQS
Scored across 8 tools
Each tool targets a distinct SEO task (audit, robots, sitemap, schema, broken links, keywords, performance). However, there is some overlap because `audit_page` can optionally include PageSpeed results, making the separate `pagespeed` tool redundant and causing slight ambiguity in which to use for performance analysis.
The naming convention is predominantly verb_noun in snake_case (e.g., audit_page, check_robots). Exceptions are `keyword_ideas` (noun_noun) and `pagespeed` (single word), which break the pattern but are still comprehensible.
With 8 tools, the server covers common SEO diagnostic tasks without being bloated. Each tool serves a clear purpose, and the number fits the domain well.
The set covers essential on-page SEO areas: audit, robots.txt, sitemap, structured data, broken links, keywords, and performance. Missing advanced features like backlink analysis or content suggestions, but for a free MCP it is reasonably complete. The workflow dependency between `audit_page` and `export_audit_pdf` is well documented.
Maintenance
Related MCP Connectors
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
SEO MCP server — backlinks, domain authority, tech stack, and 18+ tools via Common Crawl.
SEO Intelligence MCP — 13 tools: keyword research, SERP, domain audits, competitors.
Free MCP server: 32 security & developer API tools -- WHOIS, DNS, CVE checks, IP reputation.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for on-page SEO auditing and JSON-LD schema validation, providing tools for full SEO audit, schema validation, heading hierarchy, and image audit without requiring API keys.41MIT
- FlicenseAqualityCmaintenanceAn MCP server providing 20 SEO tools including coverage reports, supporting both stdio and HTTP modes for data-driven SEO analysis.20-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides SEO analysis tools including backlink analysis, keyword research, and traffic estimation using Ahrefs data, with CAPTCHA solving and caching.MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides a suite of SEO analysis tools for auditing meta tags, headings, links, keyword density, page speed, and sitemaps without requiring external API keys.625 npm1MIT