Back to Directory/Search & Knowledge

Web Validator by DigestSEO

Audit public webpages and supplied markup for HTML, CSS, SEO, JSON-LD, and link issues.

Search & KnowledgeTypeScriptv1.3.42

Web Validator by DigestSEO

npm version CI License: MIT Indexed on TensorBlock MCP Index mcp-web-validator MCP server

An MCP server for HTML and CSS validation, technical SEO and accessibility checks, JSON-LD syntax validation, broken-link checks, and responsive screenshots. It is part of the DigestSEO suite of open-source SEO tools.

Choose the right surface

This repository contains two deliberately separate MCP surfaces:

SurfaceTransportBest forAccess and side effects
Local npm serverstdioClaude Desktop, Cursor, and other local MCP clientsCan read user-selected workspace files, contact validation and link targets, and write screenshot files.
Hosted appStreamable HTTPChatGPT and remote MCP clientsCan fetch one authorized public HTML page, run a bounded sitemap-first site audit, or process supplied markup. It cannot access local files, authenticate, recursively crawl links, execute page JavaScript, or create screenshots.

Local installation:

npx -y mcp-web-validator

Hosted endpoint:

https://web-validator-mcp.digestseo.com/mcp

Requirements

  • Node.js 22.12.0 or newer
  • An MCP client that supports stdio, or a client that supports Streamable HTTP for the hosted endpoint

Puppeteer may download a compatible browser during npm installation. The browser is used only by the local screenshot.capture tool.

Local server tools

The npm package exposes these exact runtime tool names:

ToolPurposeNetwork or filesystem behavior
html.localValidate a local HTML file.Reads the selected file and submits its markup to the external W3C Nu HTML Checker at validator.w3.org/nu/.
html.urlValidate the markup returned by a public URL.Fetches the URL, then submits the returned markup to the external Nu checker.
css.localValidate a local CSS file.Reads the selected file and submits its CSS to the external W3C Jigsaw CSS Validator.
seo.metadataAudit titles, descriptions, canonical tags, headings, viewport metadata, image alt attributes, and Open Graph metadata.Processes supplied HTML locally.
links.brokenCheck links extracted from supplied HTML.Sends bounded HTTP requests to eligible public links.
schema.markupParse JSON-LD blocks and report JSON syntax errors.Processes supplied HTML locally.
report.validationCombine HTML, optional CSS, SEO, JSON-LD, and bounded link checks in a Markdown report.Reads selected files, contacts the validators, and checks eligible public links found in the HTML.
screenshot.captureCapture desktop, tablet, mobile, or custom viewport screenshots.Opens a selected local file or eligible public URL and writes PNG files to the selected output directory; existing matching files may be replaced.

Hosted app tools

The hosted app exposes eight tools:

ToolPurpose
audit_public_webpageFetch one authorized public HTML page and run the combined HTML, SEO/accessibility-signal, and JSON-LD syntax audit. Link checks are optional.
audit_public_siteRun a bounded sitemap-first audit of up to eight authorized, same-origin public pages. It respects robots.txt, returns compact page coverage and deduplicated findings, and does not run site-wide link checks.
validate_htmlValidate raw HTML markup already supplied in the conversation.
validate_cssParse supplied CSS for syntax errors inside the Worker.
audit_seo_metadataAudit supplied HTML for covered on-page SEO and accessibility signals.
validate_schema_markupCheck JSON-LD blocks in supplied HTML for JSON syntax errors.
check_broken_linksCheck up to 20 authorized public links extracted from supplied HTML.
generate_validation_reportCombine the checks for supplied markup; base_url resolves relative links but does not fetch a page.

audit_public_webpage follows at most three validated redirects, accepts a bounded text/html response, and records the final URL. It does not crawl additional pages, execute JavaScript, authenticate, or fetch linked stylesheets and assets. audit_public_site first locks the final public origin, reads bounded same-origin robots.txt and XML sitemap documents, then audits at most eight eligible sitemap pages in one call. It never follows HTML links, subdomains, external sitemap entries, private/reserved destinations, custom ports, or cross-origin redirects; use page_offset when the response says more eligible pages remain. The fetched HTML is sent to https://html5.validator.nu/, the same external Nu HTML Checker used by validate_html and the report tool. CSS parsing, SEO analysis, and JSON-LD parsing run inside the DigestSEO Worker. Optional link checks make capped HEAD requests, with a bounded GET fallback where necessary, to eligible public HTTP(S) URLs; link redirects are reported but not followed. The site tool intentionally does not perform site-wide link checking. The hosted app does not retain tool inputs, fetched HTML, or results.

Privacy Policy

Only validate files, markup, and public webpages that you own or are authorized to inspect. Public page URLs can contain sensitive query values, so remove tokens and private identifiers before submitting them. Do not submit passwords, API keys, access tokens, payment data, health data, private source code, or other sensitive personal data.

The local server runs with the same operating-system permissions as its MCP client. Review tool inputs before approving file access, outbound validation, link checking, or screenshot creation. The hosted app has no access to your local filesystem.

See the published privacy policy for data-handling details and SECURITY.md for private vulnerability reporting.

Configure a local client

Claude Desktop

Add the server to claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-web-validator": {
      "command": "npx",
      "args": ["-y", "mcp-web-validator"]
    }
  }
}

Restart Claude Desktop after saving the configuration.

Cursor and compatible clients

Create a command/stdio MCP server with:

npx -y mcp-web-validator

This repository also includes a Cursor Marketplace plugin manifest. After the plugin is published, install Web Validator by DigestSEO from Cursor's Marketplace or add the repository from Cursor's plugin UI. The plugin bundles the same local stdio server and does not require API keys or environment variables.

Kiro

Add to Kiro

This installs the local stdio package, preserving its workspace-file and screenshot capabilities. Node.js 22.12.0+ is required.

Development

Clone the repository and install the locked dependencies:

git clone https://github.com/AKzar1el/mcp-web-validator.git
cd mcp-web-validator
npm ci

Run the local quality gates:

npm run check
npm test
npm run build
npm pack --dry-run

Run the local stdio server:

npm start

Validate the hosted Worker separately:

cd chatgpt-plugin
npm ci
npm run check
npm test
npm run deploy:dry-run

See CONTRIBUTING.md for contribution expectations. Deployment and marketplace-review notes live in chatgpt-plugin/SUBMISSION.md. For agent-assisted installation, see llms-install.md.

Ecosystem

smithery badge

License

Licensed under the MIT License.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y mcp-web-validator

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-akzar1el-mcp-web-validator": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-web-validator"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

mcp-web-validatornpm

Compatible MCP Clients

Web Validator by DigestSEO works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More