UNPKG

@bschauer/webtools-mcp-server

Version:

MCP server providing web analysis tools including screenshot, debug, performance, security, accessibility, SEO, and asset optimization capabilities

245 lines (201 loc) 8.94 kB
/** * Analyze Website Prompt Definition * Provides comprehensive website performance analysis */ export const analyzeWebsitePrompt = { name: "analyze-website", description: "Umfassende Analyse einer Website mit Fokus auf Performance, SEO, Accessibility und User Experience für Desktop oder Mobile", arguments: [ { name: "url", description: "Die URL der zu analysierenden Website", required: true, }, { name: "device", description: "Gerättyp für die Analyse (mobile oder desktop)", required: false, options: ["mobile", "desktop"], default: "mobile", }, ], getMessages: (args) => { const deviceType = args.device || "desktop"; const isDesktop = deviceType === "desktop"; return [ { role: "user", content: { type: "text", text: `# Webseiten-Performance-Analyse Plan ## Zu analysierende Bereiche 1. **Ladezeiten und kritischer Rendering-Pfad** 2. **Netzwerk-Performance** 3. **JavaScript-Ausführung und CPU-Auslastung** 4. **Rendering-Performance** 5. **Speichernutzung** 6. **Ressourcen-Optimierung (Bilder, CSS, JS)** 7. **Core Web Vitals** ## Tools und deren Anwendung ### 1. Lighthouse in Headless-Modus - **Analysiert**: Core Web Vitals, Performance-Score, Optimierungsmöglichkeiten - **Detaillevel**: Identifiziert Problembereiche und bietet spezifische Empfehlungen bis auf einzelne Ressourcen-Ebene - **Anwendung**: Programmatische Ausführung über Node.js mit Puppeteer-Integration ### 2. Chrome DevTools Protocol (CDP) mit Puppeteer - **Analysiert**: Netzwerkaktivität, Rendering, JavaScript-Ausführung - **Detaillevel**: Zeigt die genaue Zeitverteilung für jede Ressource und JavaScript-Ausführung - **Anwendung**: Erfassung von Trace-Daten, Performance-Metriken und Ressourcen-Timing-Informationen ### 3. Chrome DevTools Protocol Coverage API - **Analysiert**: Ungenutzte CSS und JavaScript-Ressourcen - **Detaillevel**: Zeigt exakt, welche Teile jeder Datei ungenutzt sind - **Anwendung**: Identifiziert Code-Bloat und Optimierungspotenzial für JavaScript und CSS ### 4. Puppeteer Network Monitor - **Analysiert**: Ladezeiten, Ressourcen-Timing, HTTP-Header, Statuscode - **Detaillevel**: Detaillierte Erfassung aller Netzwerkanfragen mit Metriken - **Anwendung**: Erstellung eigener Wasserfall-Diagramme und Timing-Analysen ohne externe API ### 5. Puppeteer mit Performance Observer - **Analysiert**: Web Vitals Metriken (LCP, CLS, FID/INP) - **Detaillevel**: Identifiziert genau, welche Elemente problematisch sind - **Anwendung**: Präzise Messung der Core Web Vitals und Identifikation der verursachenden Elemente ### 6. Chrome Trace Events Analysis - **Analysiert**: JavaScript-Ausführung, Rendering, Layout, Paint-Events - **Detaillevel**: Millisekunden-genaue Timeline aller Browser-Aktivitäten - **Anwendung**: Identifikation von Bottlenecks in der Renderingpipeline ### 7. Node-based Performance Testing Framework - **Analysiert**: Umfassende Leistungsmetriken, selbst definierte Performance-Tests - **Detaillevel**: Maßgeschneiderte Tests für spezifische Performance-Aspekte - **Anwendung**: Eigenes Test-Framework mit puppeteer-extras und Playwright für erweiterte Funktionen ## Format der detaillierten Auswertung Eine vollständige Auswertung würde folgende Abschnitte enthalten: ### 1. Zusammenfassung - Performance-Score (0-100) - Core Web Vitals Übersicht (LCP, CLS, FID/INP) - Größte identifizierte Probleme - Vergleich mit Branchendurchschnitt oder Wettbewerbern ### 2. Ressourcen-Analyse - Tabelle aller geladenen Ressourcen mit: - URL - Typ (JS, CSS, Bild, etc.) - Größe (komprimiert/unkomprimiert) - Ladezeit - Blockierungszeit des Renderings - Optimierungspotenzial (%) - Priorisierung (hoch/mittel/niedrig) ### 3. JavaScript-Analyse - Ausführungszeiten nach Datei - Coverage-Analyse (ungenutzter Code) - Long Tasks (>50ms) mit Stacktraces - Parse- und Kompilierungszeiten - Event-Handler-Analyse - Hauptthread-Blockierungen ### 4. CSS-Analyse - Selektoren nach Komplexität - Unused CSS - Render-blockierende CSS - Animations-Performance - Layout Shifts und deren Ursachen ### 5. Asset-Optimierung - Bilder mit Optimierungspotenzial - Nicht optimal formatierte Bilder - Nicht optimal dimensionierte Bilder - Fehlende Lazy-Loading-Implementierung - WebFont-Ladezeiten - Unnötige Ressourcen - Ressourcen-Priorisierung ### 6. Serveranalyse - Time to First Byte (TTFB) - HTTP-Header-Optimierungen - Caching-Möglichkeiten - Kompressionsanalyse - CDN-Nutzung und -Optimierung - HTTP/2 oder HTTP/3 Nutzung ### 7. Empfehlungen - Priorisierte Liste von Optimierungen - Geschätztes Verbesserungspotenzial je Maßnahme - Code-Snippets für die Umsetzung - Zeitplan für die Implementierung (Quick Wins vs. langfristige Maßnahmen) ## Workflow für die Analyse 1. **Grundlegende Analyse mit Lighthouse** (automatisierte Prüfung) - Durchführung eines ersten Lighthouse-Scans - Identifikation der Hauptproblembereiche - Festlegung von Benchmark-Metriken 2. **Detaillierte Netzwerk- und Ladeanalyse** (CDP/Puppeteer) - Ressourcen-Waterfall-Analyse - Identifikation von Blocking-Ressourcen - Analyse der Ressourcen-Priorisierung 3. **Code-Coverage und Optimierungspotenzial** (Coverage API) - Identifikation von ungenutztem JavaScript und CSS - Analyse von Third-Party-Code - Empfehlungen für Code-Splitting und Lazy-Loading 4. **Rendering-Performance und Layout-Probleme** (Tracing-Analyse) - Analyse von Layout Shifts - Identifikation rechenintensiver JavaScript-Operationen - Analyse der Rendering-Pipeline-Blockierungen 5. **Core Web Vitals Optimierung** (Performance Observer) - Detaillierte Analyse der LCP-, CLS- und INP-Werte - Identifikation der verursachenden Elemente - A/B-Tests mit optimierten Versionen 6. **Vergleichsanalyse in verschiedenen Szenarien** - Tests auf verschiedenen Geräten (Desktop, Tablet, Mobile) - Tests unter verschiedenen Netzwerkbedingungen (3G, 4G, WiFi) - Tests mit verschiedenen Browsern 7. **Erstellung eines detaillierten Berichts** - Zusammenstellung aller Analyseergebnisse - Priorisierung der Optimierungsmaßnahmen - Entwicklung eines Implementierungsplans --------------------- Bitte führe eine umfassende Analyse der Website ${args.url} für ${isDesktop ? "Desktop" : "Mobile"}-Geräte durch. Der Test wird spezifisch für ${isDesktop ? "Desktop-Computer" : "mobile Geräte"} durchgeführt, daher fokussiere die Analyse auf die relevanten Aspekte für diesen Gerätetyp. Berücksichtige folgende Bereiche: 1. **Performance-Analyse** - Core Web Vitals (LCP, CLS, INP) für ${isDesktop ? "Desktop" : "Mobile"} - Ladegeschwindigkeit und Optimierungsmöglichkeiten - JavaScript- und CSS-Nutzungseffizienz - Ressourcenladung und Netzwerkauslastung${!isDesktop ? "\n - Mobile Netzwerk-Einschränkungen (3G/4G)" : ""} 2. **Technische SEO-Bewertung** - Meta-Tags und strukturierte Daten - Crawlability und Indexierbarkeit - ${isDesktop ? "Desktop" : "Mobile"} Responsivität${!isDesktop ? "\n - Mobile-First Indexierung" : ""} - Seitengeschwindigkeit als Rankingfaktor 3. **Accessibility-Bewertung** - WCAG-Konformitätsniveau - Screenreader-Kompatibilität - Tastaturnavigation - Farbkontrast und Textlesbarkeit${!isDesktop ? "\n - Touch-Ziele und deren Größe" : ""} 4. **User Experience Überprüfung** - ${isDesktop ? "Desktop" : "Mobile"} Usability - Navigationsstruktur und Intuitivität${!isDesktop ? "\n - Touch-freundliche Navigation" : ""} - Lesbarkeit und Struktur des Inhalts - Interaktive Elemente und Formulare 5. **Sicherheitsübersicht** - SSL-Implementierung - Safe-Browsing-Status - Prüfung auf häufige Schwachstellen 6. **Umsetzbare Empfehlungen für ${isDesktop ? "Desktop" : "Mobile"}** - Priorisierte Liste von Verbesserungen speziell für ${isDesktop ? "Desktop" : "Mobile"}-Geräte - Implementierungsvorschläge für kritische Probleme - Schnelle Erfolge vs. langfristige Verbesserungen Bitte liefere spezifische, umsetzbare Erkenntnisse, die die Leistung, Benutzererfahrung und Effektivität der Website auf ${isDesktop ? "Desktop" : "Mobile"}-Geräten messbar verbessern könnten.`, }, }, ]; }, }; /** * Handle analyze-website prompt request * @param {Object} args - Request arguments * @returns {Object} - Prompt response */ export function handleAnalyzeWebsitePrompt(args) { if (!args.url) { throw new Error("URL is required"); } const deviceType = args.device || "desktop"; if (deviceType !== "mobile" && deviceType !== "desktop") { throw new Error("Device type must be 'mobile' or 'desktop'"); } return { description: `Comprehensive ${deviceType} website analysis for ${args.url}`, messages: analyzeWebsitePrompt.getMessages(args), }; }