mcp-web-validator 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ViewportConfig {
2
+ name: string;
3
+ width: number;
4
+ height: number;
5
+ }
6
+ export interface ScreenshotResult {
7
+ viewportName: string;
8
+ width: number;
9
+ height: number;
10
+ outputPath: string;
11
+ }
12
+ /**
13
+ * Captures screenshots of a local HTML file or remote URL at different viewport sizes.
14
+ * @param targetPath Local file path or HTTP(S) URL
15
+ * @param outputDirectory Absolute path to save screenshots
16
+ * @param customViewports Optional custom viewport settings
17
+ */
18
+ export declare function captureScreenshots(targetPath: string, outputDirectory: string, customViewports?: ViewportConfig[]): Promise<ScreenshotResult[]>;
@@ -0,0 +1,65 @@
1
+ import puppeteer from "puppeteer";
2
+ import * as path from "path";
3
+ import * as fs from "fs/promises";
4
+ const DEFAULT_VIEWPORTS = [
5
+ { name: "desktop", width: 1440, height: 900 },
6
+ { name: "tablet", width: 768, height: 1024 },
7
+ { name: "mobile", width: 375, height: 812 }
8
+ ];
9
+ /**
10
+ * Captures screenshots of a local HTML file or remote URL at different viewport sizes.
11
+ * @param targetPath Local file path or HTTP(S) URL
12
+ * @param outputDirectory Absolute path to save screenshots
13
+ * @param customViewports Optional custom viewport settings
14
+ */
15
+ export async function captureScreenshots(targetPath, outputDirectory, customViewports) {
16
+ const viewports = customViewports && customViewports.length > 0 ? customViewports : DEFAULT_VIEWPORTS;
17
+ // Resolve target to file:// URL if it is a local file path
18
+ let targetUrl = targetPath;
19
+ if (!targetPath.startsWith("http://") && !targetPath.startsWith("https://")) {
20
+ const absolutePath = path.resolve(targetPath);
21
+ targetUrl = `file://${absolutePath.replace(/\\/g, "/")}`;
22
+ }
23
+ // Ensure output directory exists
24
+ await fs.mkdir(outputDirectory, { recursive: true });
25
+ // Launch browser in headless mode
26
+ const browser = await puppeteer.launch({
27
+ headless: true,
28
+ args: ["--no-sandbox", "--disable-setuid-sandbox"]
29
+ });
30
+ const results = [];
31
+ try {
32
+ const page = await browser.newPage();
33
+ for (const vp of viewports) {
34
+ await page.setViewport({
35
+ width: vp.width,
36
+ height: vp.height,
37
+ deviceScaleFactor: 1
38
+ });
39
+ // Load URL (wait until network is idle or DOM loaded)
40
+ await page.goto(targetUrl, {
41
+ waitUntil: "domcontentloaded",
42
+ timeout: 30000
43
+ });
44
+ // Short wait for any animations or layout adjustments to settle
45
+ await new Promise((resolve) => setTimeout(resolve, 500));
46
+ const fileName = `${vp.name}_${vp.width}x${vp.height}.png`;
47
+ const outputPath = path.join(outputDirectory, fileName);
48
+ await page.screenshot({
49
+ path: outputPath,
50
+ fullPage: false // Captures above the fold viewport
51
+ });
52
+ results.push({
53
+ viewportName: vp.name,
54
+ width: vp.width,
55
+ height: vp.height,
56
+ outputPath: path.resolve(outputPath)
57
+ });
58
+ }
59
+ }
60
+ finally {
61
+ await browser.close();
62
+ }
63
+ return results;
64
+ }
65
+ //# sourceMappingURL=screenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../src/screenshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface SEOIssue {
2
+ severity: "error" | "warning" | "info";
3
+ category: "SEO" | "Schema" | "BrokenLinks" | "Accessibility";
4
+ message: string;
5
+ element?: string;
6
+ }
7
+ export interface LinkStatus {
8
+ url: string;
9
+ status: number | string;
10
+ ok: boolean;
11
+ message?: string;
12
+ }
13
+ /**
14
+ * Audits technical SEO and accessibility basics on HTML content using Cheerio
15
+ */
16
+ export declare function auditSeoMetadata(htmlContent: string): SEOIssue[];
17
+ /**
18
+ * Parses and validates JSON-LD Schema markup
19
+ */
20
+ export declare function validateSchemaMarkup(htmlContent: string): SEOIssue[];
21
+ /**
22
+ * Extracts and tests all links inside the HTML content for broken links (4xx / 5xx)
23
+ */
24
+ export declare function checkBrokenLinks(htmlContent: string, baseUrl?: string): Promise<LinkStatus[]>;
@@ -0,0 +1,233 @@
1
+ import * as cheerio from "cheerio";
2
+ /**
3
+ * Audits technical SEO and accessibility basics on HTML content using Cheerio
4
+ */
5
+ export function auditSeoMetadata(htmlContent) {
6
+ const $ = cheerio.load(htmlContent);
7
+ const issues = [];
8
+ // --- Title Tag Audits ---
9
+ const titleTag = $("title");
10
+ if (titleTag.length === 0) {
11
+ issues.push({
12
+ severity: "error",
13
+ category: "SEO",
14
+ message: "Missing <title> tag. This is critical for search indexing and click-through rates.",
15
+ });
16
+ }
17
+ else {
18
+ const titleText = titleTag.text().trim();
19
+ if (titleText.length === 0) {
20
+ issues.push({
21
+ severity: "error",
22
+ category: "SEO",
23
+ message: "The <title> tag is empty.",
24
+ });
25
+ }
26
+ else if (titleText.length < 30) {
27
+ issues.push({
28
+ severity: "warning",
29
+ category: "SEO",
30
+ message: `Title length (${titleText.length} chars) is too short. Try to make it at least 30-50 characters.`,
31
+ element: `<title>${titleText}</title>`,
32
+ });
33
+ }
34
+ else if (titleText.length > 60) {
35
+ issues.push({
36
+ severity: "warning",
37
+ category: "SEO",
38
+ message: `Title length (${titleText.length} chars) is too long. Search engines will truncate it. Keep it under 60 characters.`,
39
+ element: `<title>${titleText}</title>`,
40
+ });
41
+ }
42
+ }
43
+ // --- Meta Description Audits ---
44
+ const metaDescription = $('meta[name="description"]');
45
+ if (metaDescription.length === 0) {
46
+ issues.push({
47
+ severity: "error",
48
+ category: "SEO",
49
+ message: "Missing <meta name=\"description\">. Search engines will automatically generate snippets, which may lower CTR.",
50
+ });
51
+ }
52
+ else {
53
+ const descText = metaDescription.attr("content")?.trim() || "";
54
+ if (descText.length === 0) {
55
+ issues.push({
56
+ severity: "error",
57
+ category: "SEO",
58
+ message: "Meta description content attribute is empty.",
59
+ });
60
+ }
61
+ else if (descText.length < 120) {
62
+ issues.push({
63
+ severity: "warning",
64
+ category: "SEO",
65
+ message: `Meta description is too short (${descText.length} chars). Aim for 120-160 characters to optimize your search snippet.`,
66
+ element: `<meta name="description" content="${descText}">`,
67
+ });
68
+ }
69
+ else if (descText.length > 160) {
70
+ issues.push({
71
+ severity: "warning",
72
+ category: "SEO",
73
+ message: `Meta description is too long (${descText.length} chars). Search engines will truncate it. Keep it under 160 characters.`,
74
+ element: `<meta name="description" content="${descText}">`,
75
+ });
76
+ }
77
+ }
78
+ // --- Canonical Link ---
79
+ const canonical = $('link[rel="canonical"]');
80
+ if (canonical.length === 0) {
81
+ issues.push({
82
+ severity: "warning",
83
+ category: "SEO",
84
+ message: "Missing canonical tag (<link rel=\"canonical\">). This helps prevent duplicate content issues.",
85
+ });
86
+ }
87
+ // --- Viewport Meta Tag (Mobile Responsiveness) ---
88
+ const viewport = $('meta[name="viewport"]');
89
+ if (viewport.length === 0) {
90
+ issues.push({
91
+ severity: "error",
92
+ category: "SEO",
93
+ message: "Missing <meta name=\"viewport\"> tag. Mobile friendliness is a critical ranking factor.",
94
+ });
95
+ }
96
+ // --- Heading Structure ---
97
+ const h1Tags = $("h1");
98
+ if (h1Tags.length === 0) {
99
+ issues.push({
100
+ severity: "error",
101
+ category: "SEO",
102
+ message: "Missing <h1> tag. Every page must have exactly one <h1> representing the main topic.",
103
+ });
104
+ }
105
+ else if (h1Tags.length > 1) {
106
+ issues.push({
107
+ severity: "warning",
108
+ category: "SEO",
109
+ message: `Found multiple (${h1Tags.length}) <h1> tags. Multiple <h1> tags dilutes topic keyword focus.`,
110
+ });
111
+ }
112
+ // --- Images Alt Tags (SEO + Accessibility) ---
113
+ $("img").each((_, element) => {
114
+ const img = $(element);
115
+ const src = img.attr("src") || "unknown-source";
116
+ const alt = img.attr("alt");
117
+ if (alt === undefined) {
118
+ issues.push({
119
+ severity: "error",
120
+ category: "Accessibility",
121
+ message: "Missing 'alt' attribute on image. This makes it inaccessible to screen readers.",
122
+ element: `<img src="${src}">`,
123
+ });
124
+ }
125
+ else if (alt.trim() === "") {
126
+ // Empty alt is acceptable for purely decorative images, but worth warning
127
+ issues.push({
128
+ severity: "info",
129
+ category: "Accessibility",
130
+ message: "Empty 'alt' attribute found. Ensure this image is purely decorative, otherwise add descriptive text.",
131
+ element: `<img src="${src}" alt="">`,
132
+ });
133
+ }
134
+ });
135
+ // --- Open Graph / Social Tags ---
136
+ const ogTitle = $('meta[property="og:title"]');
137
+ const ogImage = $('meta[property="og:image"]');
138
+ if (ogTitle.length === 0 || ogImage.length === 0) {
139
+ issues.push({
140
+ severity: "info",
141
+ category: "SEO",
142
+ message: "Missing Open Graph social metadata (og:title / og:image). Add these to control preview cards on platforms like LinkedIn and X.",
143
+ });
144
+ }
145
+ return issues;
146
+ }
147
+ /**
148
+ * Parses and validates JSON-LD Schema markup
149
+ */
150
+ export function validateSchemaMarkup(htmlContent) {
151
+ const $ = cheerio.load(htmlContent);
152
+ const issues = [];
153
+ $('script[type="application/ld+json"]').each((index, element) => {
154
+ const scriptText = $(element).html() || "";
155
+ if (scriptText.trim() === "") {
156
+ issues.push({
157
+ severity: "warning",
158
+ category: "Schema",
159
+ message: `JSON-LD block #${index + 1} is empty.`,
160
+ });
161
+ return;
162
+ }
163
+ try {
164
+ JSON.parse(scriptText);
165
+ }
166
+ catch (e) {
167
+ issues.push({
168
+ severity: "error",
169
+ category: "Schema",
170
+ message: `Invalid JSON-LD schema syntax: ${e.message}`,
171
+ element: `<script type="application/ld+json">...</script>`,
172
+ });
173
+ }
174
+ });
175
+ return issues;
176
+ }
177
+ /**
178
+ * Extracts and tests all links inside the HTML content for broken links (4xx / 5xx)
179
+ */
180
+ export async function checkBrokenLinks(htmlContent, baseUrl) {
181
+ const $ = cheerio.load(htmlContent);
182
+ const urls = [];
183
+ $("a").each((_, element) => {
184
+ const href = $(element).attr("href");
185
+ if (href && !href.startsWith("#") && !href.startsWith("mailto:") && !href.startsWith("tel:") && !href.startsWith("javascript:")) {
186
+ let resolvedUrl = href;
187
+ if (href.startsWith("/") && baseUrl) {
188
+ resolvedUrl = new URL(href, baseUrl).toString();
189
+ }
190
+ if (!urls.includes(resolvedUrl)) {
191
+ urls.push(resolvedUrl);
192
+ }
193
+ }
194
+ });
195
+ const results = [];
196
+ // Parallel requests with timeout limits to keep validation fast
197
+ const requests = urls.map(async (url) => {
198
+ try {
199
+ const response = await fetch(url, {
200
+ method: "HEAD",
201
+ // Avoid rejection on self-signed certs or SSL errors commonly found on local testing servers
202
+ signal: AbortSignal.timeout(5000),
203
+ });
204
+ // If HEAD is not allowed (e.g. Cloudflare / 405 Method Not Allowed), retry with GET
205
+ if (response.status === 405 || response.status === 403) {
206
+ const getResponse = await fetch(url, {
207
+ method: "GET",
208
+ signal: AbortSignal.timeout(5000),
209
+ });
210
+ return {
211
+ url,
212
+ status: getResponse.status,
213
+ ok: getResponse.ok,
214
+ };
215
+ }
216
+ return {
217
+ url,
218
+ status: response.status,
219
+ ok: response.ok,
220
+ };
221
+ }
222
+ catch (error) {
223
+ return {
224
+ url,
225
+ status: "FAILED",
226
+ ok: false,
227
+ message: error.name === "TimeoutError" ? "Timeout" : error.message,
228
+ };
229
+ }
230
+ });
231
+ return Promise.all(requests);
232
+ }
233
+ //# sourceMappingURL=seo-auditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-auditor.js","sourceRoot":"","sources":["../src/seo-auditor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAgBnC;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAmB;IAClD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,oFAAoF;SAC9F,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,2BAA2B;aACrC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,iBAAiB,SAAS,CAAC,MAAM,iEAAiE;gBAC3G,OAAO,EAAE,UAAU,SAAS,UAAU;aACvC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,iBAAiB,SAAS,CAAC,MAAM,oFAAoF;gBAC9H,OAAO,EAAE,UAAU,SAAS,UAAU;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,eAAe,GAAG,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACtD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,gHAAgH;SAC1H,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,8CAA8C;aACxD,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,kCAAkC,QAAQ,CAAC,MAAM,sEAAsE;gBAChI,OAAO,EAAE,qCAAqC,QAAQ,IAAI;aAC3D,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,iCAAiC,QAAQ,CAAC,MAAM,yEAAyE;gBAClI,OAAO,EAAE,qCAAqC,QAAQ,IAAI;aAC3D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,gGAAgG;SAC1G,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,yFAAyF;SACnG,CAAC,CAAC;IACL,CAAC;IAED,4BAA4B;IAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,sFAAsF;SAChG,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,mBAAmB,MAAM,CAAC,MAAM,8DAA8D;SACxG,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC;QAChD,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,iFAAiF;gBAC1F,OAAO,EAAE,aAAa,GAAG,IAAI;aAC9B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7B,0EAA0E;YAC1E,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,eAAe;gBACzB,OAAO,EAAE,sGAAsG;gBAC/G,OAAO,EAAE,aAAa,GAAG,WAAW;aACrC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mCAAmC;IACnC,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,gIAAgI;SAC1I,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,CAAC,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9D,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3C,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,kBAAkB,KAAK,GAAG,CAAC,YAAY;aACjD,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,kCAAkC,CAAC,CAAC,OAAO,EAAE;gBACtD,OAAO,EAAE,iDAAiD;aAC3D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,OAAgB;IAEhB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAChI,IAAI,WAAW,GAAG,IAAI,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;gBACpC,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,gEAAgE;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,6FAA6F;gBAC7F,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YAEH,oFAAoF;YACpF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvD,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBACnC,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;iBAClC,CAAC,CAAC;gBACH,OAAO;oBACL,GAAG;oBACH,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,EAAE,EAAE,WAAW,CAAC,EAAE;iBACnB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG;gBACH,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,EAAE,EAAE,QAAQ,CAAC,EAAE;aAChB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO;gBACL,GAAG;gBACH,MAAM,EAAE,QAAQ;gBAChB,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;aACnE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,23 @@
1
+ export interface W3CMessage {
2
+ type: string;
3
+ lastLine?: number;
4
+ lastColumn?: number;
5
+ firstLine?: number;
6
+ firstColumn?: number;
7
+ message: string;
8
+ extract?: string;
9
+ }
10
+ export interface CSSMessage {
11
+ line: number;
12
+ type: string;
13
+ message: string;
14
+ context?: string;
15
+ }
16
+ /**
17
+ * Validates HTML using the W3C Nu HTML Checker API
18
+ */
19
+ export declare function validateHtmlContent(htmlContent: string): Promise<W3CMessage[]>;
20
+ /**
21
+ * Validates CSS using the W3C Jigsaw CSS Validator API
22
+ */
23
+ export declare function validateCssContent(cssContent: string): Promise<CSSMessage[]>;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Validates HTML using the W3C Nu HTML Checker API
3
+ */
4
+ export async function validateHtmlContent(htmlContent) {
5
+ const url = "https://validator.w3.org/nu/?out=json";
6
+ try {
7
+ const response = await fetch(url, {
8
+ method: "POST",
9
+ headers: {
10
+ "Content-Type": "text/html; charset=utf-8",
11
+ "User-Agent": "Mozilla/5.0 (MCP Web Validator)",
12
+ },
13
+ body: htmlContent,
14
+ });
15
+ if (!response.ok) {
16
+ throw new Error(`W3C HTML validator returned HTTP status ${response.status}`);
17
+ }
18
+ const data = (await response.json());
19
+ return data.messages || [];
20
+ }
21
+ catch (error) {
22
+ throw new Error(`Failed to contact W3C HTML Validator: ${error.message}`);
23
+ }
24
+ }
25
+ /**
26
+ * Validates CSS using the W3C Jigsaw CSS Validator API
27
+ */
28
+ export async function validateCssContent(cssContent) {
29
+ const url = "https://jigsaw.w3.org/css-validator/validator";
30
+ try {
31
+ const params = new URLSearchParams();
32
+ params.append("text", cssContent);
33
+ params.append("output", "json");
34
+ params.append("warning", "0"); // Hide warnings to focus on errors
35
+ params.append("profile", "css3svg");
36
+ const response = await fetch(`${url}?${params.toString()}`, {
37
+ headers: {
38
+ "User-Agent": "Mozilla/5.0 (MCP Web Validator)",
39
+ },
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error(`W3C CSS validator returned HTTP status ${response.status}`);
43
+ }
44
+ const text = await response.text();
45
+ // W3C Jigsaw API sometimes returns invalid JSON or empty responses if there are network issues
46
+ if (!text || text.trim() === "") {
47
+ return [];
48
+ }
49
+ const data = JSON.parse(text);
50
+ const errors = data.cssvalidation?.errors || [];
51
+ return errors.map(err => ({
52
+ line: err.line || 0,
53
+ type: "error",
54
+ message: err.message ? err.message.trim() : "Unknown CSS validation error",
55
+ context: err.context || undefined
56
+ }));
57
+ }
58
+ catch (error) {
59
+ throw new Error(`Failed to contact W3C CSS Validator: ${error.message}`);
60
+ }
61
+ }
62
+ //# sourceMappingURL=w3c-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"w3c-validator.js","sourceRoot":"","sources":["../src/w3c-validator.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,GAAG,GAAG,uCAAuC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,YAAY,EAAE,iCAAiC;aAChD;YACD,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgC,CAAC;QACpE,OAAO,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,MAAM,GAAG,GAAG,+CAA+C,CAAC;IAE5D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,mCAAmC;QAClE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE;YAC1D,OAAO,EAAE;gBACP,YAAY,EAAE,iCAAiC;aAChD;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,+FAA+F;QAC/F,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAe3B,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,8BAA8B;YAC1E,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;SAClC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "mcp-web-validator",
3
+ "version": "1.0.0",
4
+ "description": "W3C HTML/CSS Validator and Technical SEO Audit MCP Server for AI coding assistants.",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "mcp-web-validator": "dist/index.js"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/AKzar1el/mcp-web-validator.git"
12
+ },
13
+ "homepage": "https://digestseo.com/validator-mcp/",
14
+ "bugs": {
15
+ "url": "https://github.com/AKzar1el/mcp-web-validator/issues"
16
+ },
17
+ "type": "module",
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "start": "node dist/index.js",
21
+ "dev": "tsx src/index.ts",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "README.md",
27
+ "LICENSE"
28
+ ],
29
+ "keywords": [
30
+ "mcp",
31
+ "model-context-protocol",
32
+ "w3c",
33
+ "validator",
34
+ "html-validator",
35
+ "seo",
36
+ "seo-audit",
37
+ "accessibility"
38
+ ],
39
+ "author": "AKzar1el",
40
+ "license": "MIT",
41
+ "dependencies": {
42
+ "@modelcontextprotocol/sdk": "^1.0.1",
43
+ "cheerio": "^1.0.0",
44
+ "puppeteer": "^25.3.0"
45
+ },
46
+ "devDependencies": {
47
+ "@types/node": "^20.11.0",
48
+ "tsx": "^4.7.1",
49
+ "typescript": "^5.3.3"
50
+ }
51
+ }