Skip to main content
Glama
Website Audit MCP

Website Audit MCP

website-audit-mcp

An MCP server (stdio) that fetches a web page over HTTP and scores it in five categories: performance, SEO, design, functionality and technology. It uses plain HTTP requests and cheerio. It needs no browser, no database and no API key.

What it checks

Category

Checks (weight in overall score)

performance (25)

response time, HTML size, compression header, number of external scripts, redirects, HTTP status

seo (25)

title, meta description, <h1> count, lang attribute, canonical link, image alt text, noindex

design (20)

viewport meta tag, favicon link, deprecated presentational elements, charset, inline styles, table count

functionality (15)

links present, empty or javascript: links, unlabeled form inputs, HTTP status

technology (15)

HTTPS, TLS validity and expiry, security headers, server version disclosure, CMS and library detection

Scores are 0-100. The overall score is the weighted average. Only the HTML document is analyzed; linked assets are not downloaded and JavaScript is not executed, so pages rendered client-side are scored on their initial HTML.

Related MCP server: webcheck-mcp

Input limits

  • Only http: and https: URLs. URLs with embedded credentials are refused.

  • Hosts that resolve to loopback, private, link-local or otherwise reserved addresses are refused. Every redirect target is checked again, and the connection uses the validated address.

  • 10 s timeout, 2 MB body cap (the body is truncated and reported as truncated), at most 5 redirects.

  • compare_websites takes 2 to 10 URLs.

Install

git clone <this repository>
cd website-audit-mcp
npm install
npm run build

Requires Node.js 18 or newer.

Configure

Claude Code:

claude mcp add website-audit -- node /absolute/path/to/website-audit-mcp/dist/index.js

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "website-audit": {
      "command": "node",
      "args": ["/absolute/path/to/website-audit-mcp/dist/index.js"]
    }
  }
}

Setting WEBSITE_AUDIT_ALLOW_PRIVATE=1 disables the private-host check. It exists for the test suite and should not be set otherwise.

Tools

audit_website

Input:

{ "url": "string (http or https URL)" }

Output (JSON text): url, finalUrl, status, scores (performance, seo, design, functionality, technology, overall), findings[] (category, severity of info|warning|error, message), detected (cms, frameworks, server), metrics (responseTimeMs, htmlBytes, truncated, redirects).

compare_websites

Input:

{ "urls": ["string", "string"] }

Output (JSON text): ranked[] (rank, url, overall, scores) sorted by overall score, highest first, and errors[] (url, error) for URLs that were refused or failed.

Invalid input returns a tool result with isError: true and a message.

Example

audit_website with {"url": "https://example.com"} (findings shortened):

{
  "url": "https://example.com",
  "finalUrl": "https://example.com/",
  "status": 200,
  "scores": { "performance": 100, "seo": 60, "design": 100, "functionality": 75, "technology": 84, "overall": 84 },
  "findings": [
    { "category": "performance", "severity": "info", "message": "Response time 67 ms" },
    { "category": "seo", "severity": "error", "message": "Missing meta description" },
    { "category": "seo", "severity": "error", "message": "No <h1>" },
    { "category": "functionality", "severity": "warning", "message": "No links on the page" },
    { "category": "technology", "severity": "info", "message": "TLS valid (TLSv1.3), 55 days until expiry" },
    { "category": "technology", "severity": "warning", "message": "No Strict-Transport-Security header" }
  ],
  "detected": { "cms": null, "frameworks": [], "server": "cloudflare" },
  "metrics": { "responseTimeMs": 67, "htmlBytes": 577, "truncated": false, "redirects": 0 }
}

Development

npm test          # builds, then runs unit tests and the stdio end-to-end test
npx tsc --noEmit  # type check

The tests use a local HTTP server as a fixture. The end-to-end test starts the built server over stdio and talks to it with the SDK client.

Limitations

  • The scoring rules are fixed heuristics, not measurements from a browser. They do not replace Lighthouse.

  • Only the single URL given is fetched. No other pages of the site are crawled.

License

MIT, see LICENSE.

Available Tools

2 tools
audit_websiteB

Fetch one http/https URL and score it 0-100 for performance, SEO, design, functionality and technology, with findings.

Inputs: url (required).

compare_websitesA

Audit 2 to 10 URLs and return them ranked by overall score, best first.

Inputs: urls (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 2 tools

    Disambiguation4/5

    The two tools differ by cardinality: audit_website targets a single URL, compare_websites targets 2-10 URLs and returns a ranking. The boundary is mostly clear, though compare_websites is essentially a batch wrapper and an agent could plausibly reach for it when auditing one site plus a competitor.

    Naming Consistency5/5

    Both names follow the same verb_noun snake_case pattern (audit_website, compare_websites). The verb directly signals the action and the noun the resource, so the convention is fully predictable.

    Tool Count3/5

    Two tools is thin for a server claiming five audit dimensions (performance, SEO, design, functionality, technology). The surface is cohesive and each tool earns its place, but there is no tooling for targeted checks, configuration, or report retrieval, putting it at the borderline.

    Completeness3/5

    Single-site auditing and multi-site ranking are covered, so the core workflow has no dead ends. However, there is no way to request a specific dimension, retrieve or export a report, or re-examine prior results, which are notable gaps for an audit product.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      MCP server for website SEO + GEO analysis. Scan any URL to get scores across 5 categories (SEO, GEO, Performance, Security, Accessibility) with actionable fix recommendations. Enables AI coding assistants to audit websites and implement fixes autonomously.
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Website health checker MCP server - SEO audit, accessibility scan, broken link detection, performance analysis, and page comparison.
      56 npm
      3
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Performs comprehensive website health audits including SSL, DNS, email authentication, performance, uptime, and broken link checks, all without requiring API keys. Returns a scored report with weighted metrics and actionable recommendations.
      7
      67 npm
      MIT