Skip to main content
Glama

check_pwa_readiness

Audit any URL to evaluate Progressive Web App readiness, assess compliance with PWA standards, and generate actionable insights for optimization. Supports desktop and mobile device emulation.

Instructions

Check Progressive Web App readiness and requirements

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
deviceNoDevice to emulate (default: desktop)desktop
includeDetailsNoInclude detailed metrics and recommendations
urlYesURL to audit

Implementation Reference

  • The MCP tool handler function for 'check_pwa_readiness' that calls the PWA helper, processes results, structures response, and handles errors.
    async ({ url, device, includeDetails }) => { try { const result = await checkPwaReadiness(url, device, includeDetails); const data: Record<string, unknown> = { pwaScore: result.pwaScore, fetchTime: result.fetchTime, includeDetails, }; if (includeDetails && "audits" in result) { data.audits = result.audits.map((audit) => ({ title: audit.title, score: audit.score !== null ? Math.round((audit.score || 0) * 100) : null, description: audit.description, displayValue: audit.displayValue || "N/A", })); } const structuredResult = createStructuredAudit("PWA Readiness Check", result.url, result.device, data, [ "Create a web app manifest file", "Implement service worker for offline functionality", "Ensure HTTPS deployment", "Add app icons for different platforms", "Configure viewport meta tag for mobile", ]); return { content: [ { type: "text" as const, text: JSON.stringify(structuredResult, null, 2), }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [ { type: "text" as const, text: JSON.stringify( { error: "PWA readiness check failed", url, device: device || "desktop", message: errorMessage, }, null, 2, ), }, ], isError: true, }; }
  • Registration of the 'check_pwa_readiness' tool with the MCP server inside registerAuditTools function.
    server.tool( "check_pwa_readiness", "Check Progressive Web App readiness and requirements", detailedAuditSchema, async ({ url, device, includeDetails }) => { try { const result = await checkPwaReadiness(url, device, includeDetails); const data: Record<string, unknown> = { pwaScore: result.pwaScore, fetchTime: result.fetchTime, includeDetails, }; if (includeDetails && "audits" in result) { data.audits = result.audits.map((audit) => ({ title: audit.title, score: audit.score !== null ? Math.round((audit.score || 0) * 100) : null, description: audit.description, displayValue: audit.displayValue || "N/A", })); } const structuredResult = createStructuredAudit("PWA Readiness Check", result.url, result.device, data, [ "Create a web app manifest file", "Implement service worker for offline functionality", "Ensure HTTPS deployment", "Add app icons for different platforms", "Configure viewport meta tag for mobile", ]); return { content: [ { type: "text" as const, text: JSON.stringify(structuredResult, null, 2), }, ], }; } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [ { type: "text" as const, text: JSON.stringify( { error: "PWA readiness check failed", url, device: device || "desktop", message: errorMessage, }, null, 2, ), }, ], isError: true, }; } }, );
  • Input schema (detailedAuditSchema) used for the tool, validating url, device, and includeDetails parameters.
    export const detailedAuditSchema = { url: baseSchemas.url, device: baseSchemas.device, includeDetails: baseSchemas.includeDetails, };
  • Core helper function that executes Lighthouse PWA audit and returns base data or detailed audits.
    export async function checkPwaReadiness(url: string, device: "desktop" | "mobile" = "desktop", includeDetails = false) { const result = await runLighthouseAudit(url, ["pwa"], device); const categoryData = result.categories.pwa; const baseData = { url: result.url, device: result.device, pwaScore: categoryData?.score || 0, fetchTime: result.fetchTime, }; if (includeDetails) { const { audits } = await getDetailedAuditResults(url, "pwa", device); return { ...baseData, audits }; } return baseData;

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/danielsogl/lighthouse-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server