site-audit-mcp
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., "@site-audit-mcpAudit example.com and give me the top SEO fixes and any broken links."
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.
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 |
| On-page SEO audit of one URL: title, meta description, H1/heading structure, image alt text, |
| 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. |
| Checks |
| 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 buildClaude Code
claude mcp add site-audit -- node /absolute/path/to/site-audit-mcp/dist/index.jsClaude 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 tsxProject 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/HEADrequests and sends asite-audit-mcpuser agent.Only
httpandhttpsURLs 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 toolsaudit_pageAudit page SEOARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL, e.g. https://example.com/pricing |
TDQS
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.
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.
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.
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.
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.
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 siteARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Start URL, usually the home page | |
| max_pages | No | Maximum pages to crawl |
TDQS
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.
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.
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.
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.
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.
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_linksFind broken linksARead-only
Collect every link on a page and check each one's HTTP status. Reports broken (4xx/5xx/unreachable) links.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page whose links should be checked | |
| max_links | No | Maximum number of links to check | |
| include_external | No | Also check links to other domains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety and external-network profile is covered. The description adds genuine value beyond that by defining what counts as broken (4xx/5xx/unreachable) and stating that every link is checked, which tells the agent to expect a full crawl of the page rather than a sample.
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?
Two short sentences, the core action first and the result definition second. There is no filler, and the reporting behavior is front-loaded rather than buried.
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?
With only three flat parameters, full schema coverage, and no output schema, the description is nearly sufficient: it says what is collected and what is reported. It stops short of describing truncation behavior when max_links is hit or how redirects and timeouts are classified, which matters for an open-world checker but is a minor gap.
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 url, max_links, and include_external are already fully documented in the schema. The description adds no extra meaning about how max_links truncation affects the reported results or what include_external changes about the output, leaving it at the baseline for schema-complete tools.
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 pairs a specific verb (collect and check HTTP status) with a specific resource (every link on a page) and states the output (broken 4xx/5xx/unreachable links). It is clearly distinct from a page audit in spirit, but it never names check_site_files, audit_site, or audit_page, so the differentiation from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Collect every link on a page" implies the single-page scope, which is the main usage signal, but there is no explicit statement of when to prefer this over audit_page or check_site_files, and no prerequisites or exclusions. The agent must infer the boundary from the name alone.
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 sitemapBRead-only
Check a site's robots.txt and XML sitemap: presence, crawler blocking, sitemap location and URL count.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Any URL or domain on the site |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.0- First observed
audit_page - First observed
audit_site - First observed
check_links - First observed
check_site_files
TDQS
Scored across 4 tools
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.
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.
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.
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
Related MCP Connectors
Audit, rank-track and analyze SEO for sites via an authenticated MCP server.
Free technical-SEO audit MCP: crawl a site, run checks, return an LLM-ready shareable report.
Public website health scan, AI-crawler and structured-data readiness, and a local presence score.
- CrawlieOAuthapp.crawlie
Technical SEO + GEO (AI-search) site audits: hosted crawls, prioritized fixes, report diffs.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables running comprehensive SEO audits on websites, checking meta tags, sitemaps, robots.txt, broken links, headings, duplicate titles, and keyword density through MCP tools.6 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to perform bounded website Quick Audits via MCP tools, covering crawlability, indexability, and metadata.1MIT
- AlicenseAqualityCmaintenanceEnables auditing of a live website's technical SEO, including sitemap coverage, per-page issues, and redirect chains.4MIT
- AlicenseAqualityAmaintenanceEnables running comprehensive website audits from any MCP client, returning actionable plain-language reports covering SEO, accessibility, performance, security, and more.651 npmMIT