Skip to main content
Glama

site-audit-mcp

An MCP server that gives Claude (or any MCP client) the ability to audit websites for SEO and technical health. Ask in plain language, for example "Audit acme.com and tell me the five fixes that matter most", and the assistant crawls the site, checks every page, and explains what to fix.

No API keys and no paid services are needed. It runs locally over studio.

Tools

Tool

What it does

audit_page

On-page SEO audit of one URL: title, meta description, H1/heading structure, image alt text, lang, mobile viewport, canonical, Open Graph, noindex, word count, HTTPS, page weight, response time. Returns a 0–100 score and prioritized issues.

check_links

Collects every link on a page and checks its HTTP status in parallel. Lists broken (4xx/5xx/unreachable) links. Falls back from HEAD to GET for servers that reject HEAD.

check_site_files

Checks robots.txt (presence, Disallow: / for all crawlers, declared sitemaps) and the XML sitemap (presence, URL count).

audit_site

Crawls a site from a start URL (same domain only, up to 50 pages), audits each page, and summarizes the average score, the most common issues, and duplicate titles and meta descriptions.

Example output

# Site audit: https://www.python.org/
Pages audited: 5 · Average score: 97/100

## Most common issues
- ℹ️ `canonical_missing` on 5 page(s): No canonical link tag.
- ⚠️ `h1_multiple` on 3 page(s): Found 5 <h1> headings (recommended 1).
- ℹ️ `heading_skip` on 2 page(s): Heading level jumps from h2 to h4.

## Duplicate meta descriptions
- https://www.python.org/, https://www.python.org/jobs/, ...

Related MCP server: Keytomic MCP

Install

Requires Node.js 20 or newer.

git clone https://github.com/zakyalzd/site-audit-mcp.git
cd site-audit-mcp
npm install
npm run build

Claude Code

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

Claude Desktop

Add this to claude_desktop_config.json:

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

Scoring

Each page starts at 100. Every error costs 15 points (for example a missing title, a missing H1, or an HTTP 4xx/5xx), and every warning costs 5 (for example a missing meta description, images without alt text, no viewport, or a slow response). Info items are suggestions and cost nothing.

Development

npm test        # 8 tests against a local HTTP fixture server, using an in-memory MCP client
npm run dev     # run the server from source with tsx

Project layout:

  • src/audit.ts: fetching, HTML analysis, link checking and crawling. It has no MCP dependency.

  • src/server.ts: MCP tool definitions and markdown formatting.

  • src/index.ts: stdio entry point.

Notes

  • The server only makes read-only GET/HEAD requests and sends a site-audit-mcp user agent.

  • Only http and https URLs are accepted.

  • It fetches whatever URL it is given, including local network addresses. Do not expose it as a public network service without adding an allow-list.

License

MIT

Available Tools

4 tools
audit_pageAudit page SEOA
Read-only

Fetch one web page and run an on-page SEO and technical audit: title, meta description, headings, image alt text, mobile viewport, canonical, Open Graph, noindex, content length, HTTPS and response time. Returns a 0–100 score and issues.

NameRequiredDescriptionDefault
urlYesPage URL, e.g. https://example.com/pricing

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds real value beyond that: it discloses the concrete check set, that a live fetch happens, and that the tool returns a 0-100 score with issues. It omits behavior on fetch failures and rate limiting, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb first and the check enumeration after; no filler. The laundry list of eleven checks is long but each item genuinely signals audit coverage, so it mostly earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description covers what is checked and roughly what comes back (score plus issues). Missing edge-case behavior (unreachable pages, redirects, rate limits) is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema coverage is 100% with an example URL already in the schema. The description adds nothing about the URL beyond "one web page," so the schema carries all parameter meaning — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Fetch one web page and run an on-page SEO and technical audit") plus the exact dimension list, so an agent knows precisely what it does. The phrase "one web page" implicitly scopes it against the site-level sibling audit_site, but no sibling is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The single-page framing implies when to pick this over audit_site or check_links, but that routing is left to inference. There is no explicit when-to-use, when-not, or alternative-naming guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

audit_siteCrawl and audit siteA
Read-only

Crawl a site from a start URL (same domain only), audit every page found, and summarize scores, the most common issues, and duplicate titles or meta descriptions.

NameRequiredDescriptionDefault
urlYesStart URL, usually the home page
max_pagesNoMaximum pages to crawl

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond that: the crawl is domain-restricted and capped by max_pages, and the output is an aggregate summary. It does not mention crawl cost/time, robots.txt handling, or failure behavior on unreachable pages, which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no waste; the input, the constraint, and the returned summary are all front-loaded in one pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly takes on the burden of describing return values – scores, most common issues, duplicate titles/meta descriptions. That covers the essentials for a 2-parameter crawl tool, though crawl depth/limit behavior and error handling are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry their own descriptions, so the baseline is 3. The description only adds that the URL is the start point and that crawling stays on the same domain, which is meaningful but does not go beyond what the schema largely conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verbs and resource: crawl from a start URL, audit every page, summarize scores/issues/duplicates. The scope markers 'same domain only' and 'every page found' make it immediately distinguishable from the sibling audit_page, which handles 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied – an agent can infer this is for whole-site auditing versus audit_page or check_links, but no alternative is named and no when-to-use/when-not guidance is given. The 'same domain only' constraint is the only explicit scoping rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_site_filesCheck robots.txt and sitemapB
Read-only

Check a site's robots.txt and XML sitemap: presence, crawler blocking, sitemap location and URL count.

NameRequiredDescriptionDefault
urlYesAny URL or domain on the site

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and external-network profile is covered. The description contributes the useful detail of what is inspected (blocking rules, sitemap URL count), but says nothing about failure modes—unreachable site, missing robots.txt, or timeouts—which matter for a fetch-based check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, colon-delimited, front-loaded with the resources and then the aspects checked. No padding or restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries return-value disclosure and does so by listing the four inspected aspects. Adequate for a single-parameter read tool; only the failure/edge-case behavior is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents 'Any URL or domain on the site'. The description adds no further constraint or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) against specific resources (robots.txt and XML sitemap), and enumerates the aspects examined: presence, crawler blocking, sitemap location, URL count. That distinguishes it from check_links and audit_page by resource, though the boundary with audit_site (which could plausibly cover crawlability) is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to reach for this versus audit_site or audit_page, and no stated prerequisites or exclusions. The agent must infer from the resource names alone that this is a crawlability/SEO pre-check.

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.

  1. 4 tool updatesv1.0.0
    • First observedaudit_page
    • First observedaudit_site
    • First observedcheck_links
    • First observedcheck_site_files

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation4/5

The four tools have mostly distinct scopes: file-level checks, site-wide crawl audit, single-page audit, and link checking. The main potential confusion is between audit_page and check_links, since both operate on a single page, but their descriptions clarify the difference.

Naming Consistency5/5

All tool names use snake_case and follow a clear verb_noun pattern (check_site_files, audit_site, audit_page, check_links). The convention is consistent and easy to predict.

Tool Count5/5

Four tools is a well-scoped set for a focused site-audit server. Each tool covers a distinct audit concern and none feels redundant or superfluous.

Completeness4/5

The surface covers key SEO audit needs: robots/sitemap checks, site-wide crawl auditing, on-page auditing, and link status checks. Minor gaps remain, such as site-wide broken-link aggregation or structured-data checks, but these are workable by combining existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers