mcp-web-validatorBLOCK
W3C HTML/CSS Validator and Technical SEO Audit MCP Server. Part of the DigestSEO (https://digestseo.com) suite.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://www.npmjs.com/package/mcp-web-validator) [](https://github.com/AKzar1el/mcp-web-validator/actions/workflows/ci.yml) [](LICENSE) [](https://tensorblock.co/mcp/servers/github-akzar1el-mcp-web-validator-4b38b48a) [](https://glama.ai/mcp/servers/AKzar1el/mcp-web-validator)
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.
- Product: digestseo.com/validator-mcp
- Engineering case study: DigestSEO MCP Suite — AI visibility, Search Console, web validation, and trend intelligence
- Documentation: this README
- Support: digestseo.com/support
- Privacy: digestseo.com/privacy
Choose the right surface
This repository contains two deliberately separate MCP surfaces:
377f5b184a6bOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add mcp-web-validator -- npx -y [email protected]
{
"mcpServers": {
"mcp-web-validator": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (8)
8 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
css.local | read | |
html.local | read | |
html.url | read | |
links.broken | read | |
report.validation | read | |
schema.markup | read | |
screenshot.capture | read | |
seo.metadata | read |
Trust audit
BLOCKgrade F · trust 59/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (21)
exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null;
exec(cmd: string[], options?: ContainerExecOptions): Promise<ExecProcess>;
exec(query: string): Promise<D1ExecResult>;
"MzQmR8cZEAlkUwQAiBBoHIQMCZSAAkNEkMZZZVwEBIAR9GfXUBgOwG0ObaGJRCBhQEACAwAAEADAQdHd90d0m1NABAJCBAEQAAQAIAAAAEEABAJA8N/f7//+/7u9/++vf//Bc/V2OYf///8P9zvw//9cUCiX/t//9///f/f///////8/nv7//9/Eq6Dn+///7/9////
"MzQmR8cZEAlkUwQAiBBoHIQMCZSAAkNEkMZZZVwEBIAR9GfXUBgOwG0ObaGJRCBhQEACAwAAEADAQdHd90d0m1NABAJCBAEQAAQAIAAAAEEABAJA8N/f7//+/7u9/++vf//Bc/V2OYf///8P9zvw//9cUCiX/t//9///f/f///////8/nv7//9/Eq6Dn+///7/9////
"http://169.254.169.254/",
"http://169.254.169.254/",
headers: { location: "http://169.254.169.254/latest/meta-data" },4. `Audit http://127.0.0.1/admin.` The app must reject loopback, private, reserved, credentialed, custom-port, and other non-public destinations.
"http://127.0.0.1/",
new Response(null, { status: 302, headers: { location: "http://127.0.0.1/private" } }),new Response(null, { status: 302, headers: { location: "http://127.0.0.1/private" } }),'<entry><link href="http://127.0.0.1/private" /></entry>',
atob(PRIMARY_LANGUAGE_SUBTAG_BITS_BASE64),
atob(data: string): string;
declare function atob(data: string): string;
atob(PRIMARY_LANGUAGE_SUBTAG_BITS_BASE64),
@modelcontextprotocol/ext-apps, @modelcontextprotocol/server, agents, cheerio, ipaddr.js, postcss, zod, @cloudflare/vitest-pool-workers
@modelcontextprotocol/sdk, cheerio, undici, zod, @types/node, tsx, typescript
`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, authenticat
Use [GitHub private vulnerability reporting](https://github.com/AKzar1el/mcp-web-validator/security/advisories/new). If that form is unavailable, email `[email protected]` with the subject `Secu
Gates applied: no_behavioural_pass.
377f5b184a6bfull audit observations/trust-audit/mcp-server/akzar1el__mcp-web-validator.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 377f5b184a6b | BLOCK | F | 59 | first audit |
Questions
What is the mcp-web-validator MCP server?
W3C HTML/CSS Validator and Technical SEO Audit MCP Server. Part of the DigestSEO (https://digestseo.com) suite.
What tools does mcp-web-validator expose?
8 in total: 8 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is mcp-web-validator safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (59/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does mcp-web-validator need?
No credential environment variables were found in its source, so it appears to need none.
How does mcp-web-validator run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as mcp-web-validator at 1.3.42.
How current is this page?
The grade is for one exact copy of the source (377f5b184a6b), read on 2026-10-11. The repository is watched and re-audited when it changes.