SEO Audit MCP Server
Provides SEO auditing tools that validate against Google's requirements, including JobPosting schema validation and recommendations for Google Indexing API implementation
Runs Lighthouse performance audits to measure Core Web Vitals, accessibility, SEO scores, and provides optimization recommendations
Click on "Install 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 Audit MCP Servercrawl https://example.com/jobs and check for JobPosting schema issues"
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 Audit MCP Server
A Model Context Protocol (MCP) server that provides comprehensive technical SEO auditing tools, optimized for job board websites.
Features
Page Analysis - Deep analysis of individual pages including meta tags, headings, structured data, rendering behavior, and links
Site Crawling - Multi-page crawling with automatic page type classification
Lighthouse Integration - Core Web Vitals and performance auditing
Sitemap Analysis - Robots.txt and XML sitemap parsing with job-specific insights
JobPosting Schema Validation - Specialized validation against Google's requirements
Related MCP server: seo-gaca-mcp
Installation
Prerequisites
Node.js 18+
Chrome/Chromium (for Playwright)
Lighthouse CLI (optional, for performance audits)
Setup
# Clone or extract the project
cd seo-audit-mcp
# Install dependencies
npm install
# Install Playwright browsers
npx playwright install chromium
# Install Lighthouse globally (optional but recommended)
npm install -g lighthouse
# Build the project
npm run buildConfigure Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"seo-audit": {
"command": "node",
"args": ["/path/to/seo-audit-mcp/dist/index.js"]
}
}
}Configure Claude CLI
Add to your Claude CLI config or use directly:
# Using npx (after npm link)
claude --mcp-server "node /path/to/seo-audit-mcp/dist/index.js"Available Tools
analyze_page
Analyze a single web page for SEO factors.
Input:
- url (required): The URL to analyze
- waitForSelector: CSS selector to wait for (for JS-heavy pages)
- timeout: Timeout in milliseconds (default: 30000)
- device: 'desktop' or 'mobile' (default: desktop)
Output:
- Meta tags, headings, structured data
- JobPosting schema validation
- JavaScript rendering analysis
- Link and image analysiscrawl_site
Crawl multiple pages starting from a URL.
Input:
- startUrl (required): Starting URL
- maxPages: Maximum pages to crawl (default: 50)
- maxDepth: Maximum link depth (default: 5)
- includePatterns: Regex patterns to include
- excludePatterns: Regex patterns to exclude
Output:
- Aggregated statistics
- Page type classification (job detail, category, location pages)
- Duplicate detection
- Critical issues and warningsrun_lighthouse
Run Lighthouse performance audit.
Input:
- url (required): URL to audit
- device: 'mobile' or 'desktop' (default: mobile)
- categories: Array of categories to audit
- saveReport: Save HTML report (default: false)
Output:
- Performance, Accessibility, Best Practices, SEO scores
- Core Web Vitals (LCP, CLS, TBT, FCP, TTFB)
- Optimization opportunities
- Diagnosticsanalyze_sitemap
Analyze robots.txt and XML sitemaps.
Input:
- baseUrl (required): Base URL of the site
- includeSitemapUrls: Include full URL list (default: true)
- maxUrls: Max URLs per sitemap (default: 1000)
Output:
- robots.txt rules and issues
- Discovered sitemaps
- Job URL detection
- Recommendationscheck_urls
Check HTTP status codes for multiple URLs.
Input:
- urls (required): Array of URLs to check
- timeout: Timeout per URL in milliseconds
Output:
- Status code, redirect destination, response time per URLUsage Examples
Quick Page Audit
"Analyze the SEO of https://example.com/jobs/software-engineer"Full Site Audit
"Crawl https://example.com and analyze their job board SEO.
Focus on structured data and landing pages."Performance Check
"Run a Lighthouse audit on https://example.com/jobs for mobile devices"Job Board Discovery
"Analyze the sitemap for https://example.com and find their job posting pages"Job Board Specific Features
This tool is optimized for job boards with:
JobPosting Schema Validation
Validates all required fields (title, description, datePosted, etc.)
Checks recommended fields (validThrough, baseSalary, employmentType)
Remote job validation (applicantLocationRequirements)
Expiration date checking
Page Type Classification
Job detail pages
Job listing/search pages
Category landing pages (e.g., /marketing-jobs/)
Location landing pages (e.g., /jobs-in-new-york/)
Company profile pages
Expired Job Handling Analysis
Detects 404s, redirects, and soft 404s
Checks validThrough dates in schema
Recommends proper handling strategies
Recommendations
Google Indexing API implementation
Job-specific sitemaps
Landing page architecture
Development
# Run in development mode
npm run dev
# Run tests
npm test
# Lint code
npm run lintArchitecture
src/
├── index.ts # Entry point
├── server.ts # MCP server implementation
├── tools/
│ ├── index.ts # Tool registry
│ ├── crawl-page.ts # Single page analysis
│ ├── crawl-site.ts # Multi-page crawler
│ ├── lighthouse.ts # Performance audits
│ └── sitemap.ts # Sitemap/robots analysis
├── types/
│ └── index.ts # TypeScript definitions
└── utils/
├── browser.ts # Playwright helpers
└── http.ts # HTTP utilitiesTroubleshooting
Playwright Issues
# Reinstall browsers
npx playwright install chromium --force
# On Linux, you may need system dependencies
npx playwright install-depsLighthouse Not Found
# Install globally
npm install -g lighthouse
# Or use npx (slower)
npx lighthouse --versionPermission Errors
The server needs to write to /tmp for temporary files. Ensure proper permissions.
Timeout Errors
For slow sites, increase timeouts:
Page analysis: Use
timeoutparameterCrawling: Reduce
maxPagesor increase delays
License
MIT
Available Tools
8 toolsanalyze_pageA
Analyze a single web page for SEO factors including:
Meta tags (title, description, canonical, robots)
Heading structure (H1-H6)
Structured data (JSON-LD, with special focus on JobPosting schema)
JavaScript rendering analysis (CSR vs SSR detection)
Link analysis (internal, external, nofollow)
Image analysis (alt tags, lazy loading)
Mixed content detection
Basic load time measurement
Use this for detailed analysis of specific pages like job detail pages, landing pages, or homepage.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to analyze | |
| waitForSelector | No | Optional CSS selector to wait for before analysis (useful for JS-heavy pages) | |
| timeout | No | Timeout in milliseconds (default: 30000) | |
| device | No | Device type to emulate (default: desktop) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It describes what the tool analyzes (SEO factors) but doesn't disclose behavioral traits like whether it makes network requests, requires authentication, has rate limits, or what format the analysis results take. The mention of 'JavaScript rendering analysis' and 'basic load time measurement' hints at some behavior but lacks specifics.
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 well-structured with a clear introductory sentence followed by a bulleted list of analysis categories and a usage context sentence. Every element serves a purpose, though the bulleted list is somewhat lengthy (8 items) which slightly reduces conciseness.
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 4-parameter tool with no annotations and no output schema, the description provides good purpose and usage context but lacks behavioral details (how it works, what it returns) and doesn't compensate for the missing output schema. The complexity of analyzing 8 SEO factors suggests more completeness would be helpful.
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 the schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain how 'waitForSelector' interacts with the analysis or why 'device' matters for SEO). Baseline 3 is appropriate when the schema does the heavy lifting.
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 analyzes a single web page for specific SEO factors, listing 8 distinct categories. It distinguishes from siblings like 'analyze_sitemap' (multiple pages) and 'crawl_site' (site-wide crawling) by focusing on detailed analysis of a single 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 provides clear context for when to use this tool ('detailed analysis of specific pages like job detail pages, landing pages, or homepage'), which implicitly suggests it's not for bulk analysis or sitemap-level work. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_sitemapA
Analyze a site's robots.txt and XML sitemaps.
Returns:
robots.txt rules and any blocking issues
All discovered sitemaps (from robots.txt and common locations)
URL counts and job-specific URL detection
Sitemap freshness analysis
Recommendations for job boards (Indexing API, job sitemaps)
Use this as a first step to understand site structure before crawling.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | Yes | The base URL of the site (e.g., https://example.com) | |
| includeSitemapUrls | No | Include full URL list from sitemaps (default: true) | |
| maxUrls | No | Maximum URLs to process per sitemap (default: 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns (robots.txt rules, sitemap details, URL counts, freshness analysis, recommendations) and its role as a first-step analysis tool. However, it lacks details on potential limitations, such as rate limits, authentication needs, or error handling, which would be beneficial for a tool with no annotations.
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 well-structured and front-loaded, starting with the core purpose, listing outputs in bullet-like format, and ending with usage guidance. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.
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 (analyzing sitemaps with multiple outputs) and lack of annotations or output schema, the description does a good job covering what the tool returns and its purpose. However, it could be more complete by mentioning potential outputs like error states or limitations, which would help the agent handle edge cases better.
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 the schema already documents all three parameters (baseUrl, includeSitemapUrls, maxUrls) with clear descriptions. The description does not add any parameter-specific semantics beyond what the schema provides, such as explaining how maxUrls affects processing or default behaviors. Baseline 3 is appropriate when schema coverage is high.
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 analyzes robots.txt and XML sitemaps, listing specific outputs like robots.txt rules, sitemap discovery, URL counts, freshness analysis, and job board recommendations. It distinguishes itself from siblings like analyze_page, check_urls, and crawl_site by focusing on sitemap analysis rather than page-level or broader crawling tasks.
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 as a first step to understand site structure before crawling,' providing clear when-to-use guidance. It positions this tool as a precursor to crawling or auditing tools like crawl_site, plan_audit, or run_audit, helping the agent choose this over alternatives for initial site assessment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_urlsA
Check HTTP status codes for a list of URLs.
Returns status code, redirect destination (if redirected), and response time for each URL.
Use this to:
Verify expired job pages are handled correctly
Check for broken links
Analyze redirect chains
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to check | |
| timeout | No | Timeout per URL in milliseconds (default: 10000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool returns (status code, redirect destination, response time) which is helpful, but doesn't mention important behavioral aspects like error handling, rate limits, authentication requirements, or what happens with invalid URLs. The description adds some value but leaves significant gaps.
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 perfectly structured and concise - a clear purpose statement followed by bulleted use cases. Every sentence earns its place, with no wasted words or redundant information. The information is front-loaded with the core functionality stated first.
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 tool with 2 parameters, 100% schema coverage, but no annotations and no output schema, the description provides adequate context about what the tool does and when to use it. However, it doesn't describe the return format in detail (beyond mentioning what fields are included) or address potential edge cases, leaving room for improvement given the lack of structured output documentation.
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 schema description coverage is 100%, so the schema already documents both parameters (urls and timeout) adequately. The description doesn't add any parameter-specific information beyond what's in the schema, such as URL format requirements or timeout implications. This meets the baseline for high schema coverage.
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 specific action ('Check HTTP status codes') and resource ('for a list of URLs'), distinguishing it from sibling tools like analyze_page or crawl_site which focus on content analysis rather than status verification. It provides a precise verb+resource combination that immediately conveys the tool's function.
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 includes explicit use cases ('Verify expired job pages are handled correctly', 'Check for broken links', 'Analyze redirect chains') that guide when to use this tool. However, it doesn't specify when NOT to use it or mention alternatives among the sibling tools, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawl_siteA
Crawl multiple pages of a website starting from a URL. Discovers internal links and analyzes each page.
Returns:
Aggregated statistics (pages with titles, meta descriptions, schema, etc.)
Page type classification (job detail, category landing, location pages, etc.)
Duplicate detection (titles, descriptions)
Critical issues and warnings
All individual page analyses
Use this for comprehensive site audits. Respects crawl limits and delays.
| Name | Required | Description | Default |
|---|---|---|---|
| startUrl | Yes | The URL to start crawling from | |
| maxPages | No | Maximum pages to crawl (default: 50) | |
| maxDepth | No | Maximum link depth to follow (default: 5) | |
| includePatterns | No | Regex patterns - only crawl URLs matching these patterns | |
| excludePatterns | No | Regex patterns - skip URLs matching these patterns |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by describing what the tool returns (aggregated statistics, page classification, duplicate detection, etc.) and mentions respecting crawl limits and delays. However, it doesn't specify error handling, timeout behavior, or what happens when limits are exceeded.
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 well-structured and front-loaded with the core functionality. Every sentence adds value: the first explains what it does, the second lists returns, and the third provides usage context. There's no wasted text, and it's appropriately sized for the tool's complexity.
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 (multi-page crawling with analysis), no annotations, and no output schema, the description does a good job explaining the return values and use case. However, it could be more complete by detailing output structure or error scenarios, though the listed returns provide solid context.
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 the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3. It doesn't compensate for gaps because there are none in the schema.
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's purpose with specific verbs ('crawl multiple pages', 'discovers internal links', 'analyzes each page') and distinguishes it from siblings like analyze_page (single page) or analyze_sitemap (structured sitemap). It explicitly mentions comprehensive site audits as the primary use case.
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 clear context for when to use this tool ('for comprehensive site audits') and mentions respecting crawl limits and delays as operational constraints. However, it doesn't explicitly contrast when to use this versus alternatives like check_urls or sample_pages, though the comprehensive nature is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_auditA
RECOMMENDED FIRST STEP - Analyze sitemaps and create an intelligent sampling strategy for large sites.
This tool is essential for job boards and large sites with 100k+ pages. Instead of crawling everything, it:
Discovers and validates all sitemaps (robots.txt + common locations)
Identifies distinct route patterns (job pages, category pages, location pages, etc.)
Estimates total pages per route type
Generates a smart sampling strategy
Recommends which pages to analyze with Lighthouse
Returns:
Sitemap validation (URL limits, lastmod coverage, compression)
Route pattern classification with estimated counts
Sampling strategy (how many pages to sample per type)
Issues, warnings, and recommendations
Use this BEFORE crawl_site or sample_pages to understand site structure.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | Yes | The base URL of the site (e.g., https://talent.com) | |
| maxSitemapsToProcess | No | Maximum sitemaps to analyze (default: 20) | |
| maxUrlsPerSitemap | No | Maximum URLs to process per sitemap for pattern analysis (default: 5000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by describing the multi-step process (discover sitemaps, identify patterns, estimate counts, generate strategy). It mentions what the tool returns (sitemap validation, route classification, sampling strategy, issues/warnings) and its non-destructive nature (analysis only). However, it doesn't specify performance characteristics like rate limits or timeout behavior.
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 well-structured with clear sections (purpose, process steps, returns, usage guidance) and front-loads the most important information ('RECOMMENDED FIRST STEP'). While comprehensive, it could be slightly more concise by combining some of the bullet points about returns into a single sentence.
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 tool with 3 parameters, 100% schema coverage, and no output schema, the description provides excellent context about what the tool does, when to use it, and what it returns. It explains the multi-step analysis process and connects to sibling tools. The main gap is the lack of output schema, but the description compensates by listing return categories.
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 the schema already documents all three parameters adequately. The description doesn't add any additional parameter semantics beyond what's in the schema - it focuses on the tool's purpose and outputs rather than explaining parameter usage. This meets the baseline expectation when schema coverage is complete.
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's purpose with specific verbs ('analyze sitemaps', 'create sampling strategy') and resources ('large sites', 'job boards'). It explicitly distinguishes from siblings by recommending use 'BEFORE crawl_site or sample_pages' and mentions alternative tools like Lighthouse analysis, showing clear differentiation.
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 explicit guidance on when to use this tool ('RECOMMENDED FIRST STEP', 'essential for job boards and large sites with 100k+ pages', 'BEFORE crawl_site or sample_pages') and when not to use it (for small sites or direct analysis). It names specific alternative tools (crawl_site, sample_pages, Lighthouse) for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_auditA
FULL AUDIT - Run a complete SEO audit with automatic sampling, caching, and report generation.
This is the main audit tool that orchestrates the entire workflow:
Discovers and analyzes sitemaps
Identifies route patterns and creates sampling strategy
Captures sample pages (cached - only fetches once)
Analyzes SEO, structured data, technical issues, social graph
Generates prioritized recommendations
Saves everything to reports/[sitename]/ folder
The audit captures pages ONCE and stores:
HTML snapshots for inspection
Full analysis data as JSON
Final report as JSON + Markdown
Returns comprehensive findings and prioritized fix recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | Yes | The base URL of the site to audit (e.g., https://talent.com) | |
| reportsDir | No | Directory to save reports (default: ./reports) | |
| maxSitemaps | No | Maximum sitemaps to process (default: 15) | |
| maxUrlsPerSitemap | No | Maximum URLs per sitemap for pattern analysis (default: 2000) | |
| samplesPerRouteType | No | Override samples per route type (default: auto based on route importance) | |
| concurrency | No | Concurrent page captures (default: 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: caching ('captures pages ONCE'), output generation ('saves everything to reports/[sitename]/ folder'), and workflow steps. It could improve by mentioning potential side effects like network usage or time requirements, but it covers most critical aspects well.
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 well-structured with a bolded summary upfront and a numbered list detailing steps, making it easy to scan. It could be slightly more concise by reducing repetition (e.g., 'cached' mentioned multiple times), but overall, it's efficient and front-loaded with key 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's complexity (6 parameters, no output schema, no annotations), the description provides substantial context: it explains the workflow, output storage, and return values ('Returns comprehensive findings and prioritized fix recommendations'). It could enhance completeness by detailing error handling or performance implications, but it's largely sufficient for understanding the tool's scope.
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 the schema already documents all parameters thoroughly. The description adds no specific parameter information beyond what the schema provides, such as explaining how parameters interact or affect the audit process. This meets the baseline for high schema coverage but doesn't add extra value.
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's purpose: 'Run a complete SEO audit with automatic sampling, caching, and report generation.' It specifies the verb ('Run'), resource ('SEO audit'), and scope ('complete'), distinguishing it from siblings like analyze_page or crawl_site by emphasizing its comprehensive, orchestrated workflow.
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 when to use this tool by describing it as 'the main audit tool that orchestrates the entire workflow,' suggesting it's for full audits rather than partial analyses. However, it lacks explicit guidance on when to use alternatives like plan_audit or sample_pages, which could help differentiate usage scenarios more clearly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_lighthouseA
Run a Lighthouse performance audit on a URL.
Returns:
Performance, Accessibility, Best Practices, and SEO scores
Core Web Vitals (LCP, CLS, TBT/INP proxy, FCP, TTFB)
Optimization opportunities with estimated savings
Diagnostics (long tasks, layout shifts, etc.)
SEO audit results (crawlability, meta tags, etc.)
Use this for performance analysis. Run separately for mobile and desktop if both matter.
Note: Requires Lighthouse CLI to be installed (npm install -g lighthouse).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to audit | |
| device | No | Device type to emulate (default: mobile) | |
| categories | No | Categories to audit (default: all) | |
| saveReport | No | Save HTML report to disk (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it lists the comprehensive return data (scores, metrics, opportunities, diagnostics), mentions the prerequisite (Lighthouse CLI installation), and describes the mobile/desktop execution approach. However, it doesn't cover rate limits, error conditions, or execution time expectations.
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 perfectly structured and concise: it starts with the core purpose, then details the returns in a bulleted format, provides usage guidance, and ends with a prerequisite note. Every sentence earns its place with no wasted words.
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 (performance audit with multiple metrics) and no output schema, the description does an excellent job explaining what will be returned. However, without annotations covering safety/behavioral aspects and no output schema, it could benefit from more detail about error handling or execution characteristics.
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 the schema already documents all 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for high schema coverage situations.
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 specific action ('Run a Lighthouse performance audit') on a specific resource ('on a URL'), distinguishing it from sibling tools like analyze_page or crawl_site by focusing on comprehensive performance analysis with specific metrics and categories.
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 clear context for when to use this tool ('for performance analysis') and advises running separately for mobile/desktop if both matter, but doesn't explicitly state when not to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sample_pagesA
Intelligently sample and analyze pages based on an audit plan.
Use this AFTER plan_audit to analyze representative pages from each route type.
For a site with 500k job pages, instead of crawling all of them, this will:
Sample 30-50 job detail pages (random + oldest + newest)
Sample 10-20 category landing pages
Sample 10-20 location pages
Sample company pages, static pages, etc.
Returns:
Detailed analysis of each sampled page
Aggregated issues per route type
Cross-cutting findings (% missing titles, schema errors, etc.)
Common issues ranked by frequency
This approach finds template-level issues that affect all pages of that type.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | The audit plan from plan_audit tool | |
| routeTypes | No | Specific route types to sample (default: all). E.g., ["job_detail", "category"] | |
| samplesOverride | No | Override sample counts per route type. E.g., {"job_detail": 10, "category": 5} | |
| concurrency | No | Concurrent page analyses (default: 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well: it explains the sampling methodology (random + oldest + newest, specific sample ranges), output structure (detailed analysis, aggregated issues, cross-cutting findings, ranked issues), and the strategic purpose (finding template-level issues). It doesn't mention performance aspects like rate limits or auth needs, but provides substantial behavioral context.
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?
Well-structured with purpose first, usage guidance second, then concrete examples and returns. The bullet points efficiently illustrate the sampling approach and output format. Slightly verbose in the example section, but every sentence adds value for understanding scope and results.
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 tool with 4 parameters, 100% schema coverage, no annotations, and no output schema, the description provides excellent context: clear purpose, usage timing, behavioral methodology, and output format. It compensates well for the lack of output schema by detailing what the tool returns. Minor gap: doesn't mention error handling or performance constraints.
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 the schema already documents all parameters. The description doesn't add specific parameter semantics beyond what's in the schema (e.g., it mentions 'route types' generally but doesn't elaborate on the routeTypes parameter). Baseline 3 is appropriate when schema does the heavy lifting.
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 'intelligently sample[s] and analyze[s] pages based on an audit plan', specifying both the action (sample and analyze) and resource (pages). It distinguishes from siblings like analyze_page (single page) or crawl_site (full crawl) by emphasizing representative sampling across route types.
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?
Explicitly states 'Use this AFTER plan_audit to analyze representative pages from each route type', providing clear when-to-use guidance. It also distinguishes from alternatives by explaining the sampling approach versus crawling all pages, helping the agent choose between this and tools like crawl_site or check_urls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but there is some overlap between crawl_site, run_audit, and sample_pages. crawl_site performs comprehensive crawling and analysis, run_audit orchestrates a full audit including sampling, and sample_pages focuses on intelligent sampling after planning. While their descriptions clarify differences, an agent might initially confuse when to use crawl_site versus run_audit, as both involve crawling and analysis, though run_audit is more automated and includes caching and reporting.
Tool names follow a consistent verb_noun pattern (e.g., analyze_page, check_urls, crawl_site), with minor deviations. The main inconsistency is run_lighthouse, which uses 'run' instead of 'analyze' or 'check', and run_audit, which also uses 'run' but fits the pattern. Overall, the naming is predictable and readable, with only slight variations in verb choice.
With 8 tools, the count is well-scoped for an SEO audit server. Each tool serves a specific function in the audit workflow, from initial planning (plan_audit) to detailed analysis (analyze_page) and comprehensive auditing (run_audit). The tools cover a range of tasks without being overwhelming, and none feel redundant or unnecessary given the domain's complexity.
The tool set provides complete coverage for SEO auditing, including planning (plan_audit), crawling (crawl_site), sampling (sample_pages), detailed analysis (analyze_page, run_lighthouse), sitemap handling (analyze_sitemap), URL checking (check_urls), and full automation (run_audit). There are no obvious gaps; the tools support a full lifecycle from initial assessment to report generation, with clear workflows and no dead ends for agents.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Professional SEO auditing: 15 tools, 9 checks, CWV, E-E-A-T, schema, GEO. Free tier.
Technical SEO + GEO (AI-search) site audits: hosted crawls, prioritized fixes, report diffs.
Validate HTML/CSS, audit SEO and JSON-LD, check links, and capture responsive screenshots.
Free technical-SEO audit MCP: crawl a site, run checks, return an LLM-ready shareable report.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables SEO auditing and site analysis by crawling websites, identifying issues, and generating reports like sitemaps and markdown exports.5114MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for SEO, performance, GEO, and UX audits with 37 tools covering technical SEO, Lighthouse performance, AI search optimization, content analysis, accessibility, security, and more.1MIT
- FlicenseNot gradedqualityDmaintenanceAudits any website for SEO issues, providing scored health checks, schema validation, and performance analysis through AI assistants.
- FlicenseNot gradedqualityCmaintenanceProvides comprehensive technical SEO audits, Schema.org validation, AEO readiness checks, and semantic cannibalization detection via MCP and CLI.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RichardDillman/seo-audit-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server