PWA Debug Layer logo

PWA Debug Layer

Debug live PWAs through a real browser profile, with page interaction, DevTools data, framework state, and PWA diagnostics.

Install PWA Debug Layer

Run the project’s own setup commands, in order.

Setup steps from the project

PWA Debug Layer installs with its own commands rather than a config we can generate, so these are copied as-is. Run them in order in a terminal. Source: github.com

  1. 1. Add to Claude Code
    claude mcp add pwa-debug --scope user -- node /absolute/path/to/pwa-debug-layer/packages/host/dist/main.js
    
  2. 2. Start the server
    npx -y @aryanduntley/pwa-debug@latest
    

Overview

PWA Debug Layer MCP server connects an AI client to a live browser through a native messaging host and browser extension. It exposes structured access to pages, DOM snapshots, console and network activity, CSS, screenshots, JavaScript evaluation, performance traces, and user interactions. Its broader PWA-focused surface covers service workers, CacheStorage, installability, browser capabilities, web storage, framework state, and supported client stores. Reach for it when debugging an authenticated PWA or investigating runtime behavior that a fresh automated browser cannot reproduce.

Use cases

  • Inspect service-worker versions and update propagation
  • Diagnose stale caches and cached-HTML-to-JavaScript skew
  • Debug installability and browser capability gaps
  • Trace authenticated PWA behavior in a real browser profile
  • Inspect framework, store, console, network, and layout state

Key features

  • Live browser-profile debugging over MCP
  • Service-worker, cache, installability, and storage diagnostics
  • React, Vue, Svelte, Solid, Redux, Zustand, Pinia, and Jotai introspection
  • DOM interaction, screenshots, CSS inspection, and JavaScript evaluation
  • Console, network, Lighthouse, performance, and heap analysis
  • Persistent capture, replay, and responsive layout inspection

Tools32

What PWA Debug Layer lets your agent do. Expand a tool for its parameters.

Verified live~6.6k tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked Today

Recent health check succeeded.

19/23 checks healthy over the last 90d

What it can do

From the 32 tools this server returned when we ran it; 32 declare their own safety hints.

Writes files · 1Handles credentials · 2Makes network requests · 3Read-only tools · 31
Network at startup3 connections
Files written at startup1
Install scriptsprepare
npm provenanceSigned build
Package age528 days
Maintainers3

Observed 2026-10-23 in an isolated sandbox. A description of reach, not a security audit.

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 2Low 0

Scanned 6d ago via OSV.dev

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

Last commit6d agoMost recent push to the default branch.
Tools exposed32Callable tools this server registers over MCP.
Directory activity2 viewsConfig copies, upvotes, and views on AllMCPs.

How PWA Debug Layer works

What PWA Debug Layer does

PWA Debug Layer gives MCP clients access to a live browser session rather than a newly created, isolated tab. That makes it suitable for debugging applications whose behavior depends on logged-in state, browser extensions, existing cookies, service workers, caches, or other profile data.

Its focus extends beyond ordinary page automation. The project is designed to inspect PWA runtime problems such as service workers that remain on an older version, stale cached assets, failed installation checks, browser capability gaps, and inconsistent application state. It also supports introspection for React, Vue, Svelte, and Solid applications, along with Redux, Zustand, Pinia, and Jotai stores.

How it works

An MCP client communicates over stdio with a native messaging host. The host coordinates persistent buffers and replay or snapshot storage, then communicates with a browser extension through native messaging. The extension uses the Chrome DevTools Protocol and routes requests to the selected tab, while content scripts handle DOM observation and actions. A page-world script provides access to framework hooks and page-level activity that isolated content scripts cannot reach.

The default operating model attaches to an existing browser profile. This preserves the page's authentication, extensions, cookies, service-worker state, and other runtime conditions. The project also describes Android support through adb for driving Android Chrome tabs and installed PWAs.

Setup and configuration

The full MCP-to-browser path is verified on Linux. macOS and Windows paths have unit coverage but have not been verified on physical machines, so browser discovery, profile paths, native-messaging registration, and system-default handling may require troubleshooting there.

Firefox is not supported because the implementation depends on Chrome DevTools Protocol support. The architecture is intended to coexist with chrome-devtools-mcp: the two can be used together, with this project providing real-profile, framework, store, service-worker, cache, and page-world access.

Tools and capabilities

The exposed browser tools cover:

  • Opening, closing, selecting, listing, navigating, resizing, and capturing pages.
  • Taking accessibility-tree snapshots and screenshots.
  • Clicking, dragging, hovering, filling controls and forms, typing text, pressing keys, and handling dialogs.
  • Evaluating JSON-serializable JavaScript in the target page.
  • Reading console messages, network requests, CSS rules, and matched styles.
  • Running Lighthouse audits, starting and analyzing performance traces, and capturing heap snapshots.
  • Recording and stopping page screencasts.

The wider debugging surface includes persistent console, network, error, DOM-mutation, and lifecycle capture; framework and store inspection; touch gestures; library-popup capture and replay; rrweb session replay; source-map resolution; responsive layout sweeps; and PWA runtime diagnostics. These diagnostics include service-worker versions and lifecycle, CacheStorage contents and age, installability gaps, capability checks, IndexedDB and web-storage inspection, and version-skew analysis.

Limitations and notes

The implementation is currently centered on Chromium-based browsers and has been tested most extensively on Linux. Performance auditing is handled through trace tools rather than the Lighthouse audit tool, whose documented audit areas are accessibility, SEO, best practices, and agentic browsing. JavaScript evaluation returns JSON, so values returned from scripts must be JSON-serializable. CSS inspection requires a UID from the latest page snapshot and returns paginated rules.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about PWA Debug Layer

PWA Debug Layer is an MCP server that connects AI clients to a live Chromium browser profile through a native host and extension. Its main tools inspect and interact with pages, read console, network, CSS, and DOM data, evaluate scripts, capture performance information, and diagnose service workers, caches, installability, storage, and framework state.

Install it using the project's native-host and browser-extension setup, then connect an MCP client over stdio. The architecture uses a native messaging host, an extension service worker, and page-side scripts. Linux is the verified platform; browser and native-messaging setup may need additional troubleshooting on macOS or Windows.

Yes, PWA Debug Layer is designed to work with Claude Code through MCP over stdio. Claude Code communicates with the native messaging host, which routes requests through the browser extension to live pages and the selected browser profile.

Yes, it can attach to an existing browser profile and inspect the authenticated page state available there. This preserves profile-specific cookies, extensions, service workers, and other runtime conditions instead of using a sterile automated browser.

No, Firefox is not supported. The browser integration depends on the Chrome DevTools Protocol, so the documented implementation targets Chromium-based browsers.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewPWA Debug Layer AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/pwa-debug-layer?style=directory)](https://allmcps.com/mcp/pwa-debug-layer)
HTML Embed
<a href="https://allmcps.com/mcp/pwa-debug-layer"><img src="https://allmcps.com/api/badge/pwa-debug-layer?style=directory" alt="PWA Debug Layer on AllMCPs" /></a>