Debug PWAs in your real browser via MCP: service-worker, cache, installability & framework state.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by PWA Debug Layer.
host_statusInstall/liveness state: registered IDs, manifest paths, launcher path, active connections. Cheap, idempotent. **Always call first.
host_list_registrationsRead registered IDs; destructive cleanup to re-bootstrap.
session_pingFull MCP β IPC β NMH β SW β page-world round-trip with typed `pageWorldError` codes + self-heal.
pdl_check_setupDiagnose setup β `{ ok, gaps[], recommendations[] }` (CDP reachable, manifest installed, extension present, ID registered).
pdl_browser_statusManaged launches (browser, profile mode, port, pid) with live debug-port re-probe + extension SW heartbeat.
console_tailCursor-paginated, filterable tails of the persistent capture ring buffers (memory + disk spill).
An AI-native debugging layer for PWAs and modern web apps. It lets an AI agent (e.g. Claude Code via MCP) see and act on your live, logged-in browser the way a developer with full DevTools open would β DOM, console, network, framework state, store state, service workers, caches, and direct interaction β as structured data the model consumes natively.
It's built for the questions developers actually search for and that Chrome DevTools makes you assemble by hand: why won't my service worker update? why is my cache stale? why won't my PWA install? why does this component have the wrong state? β answered by an agent reading the runtime directly, against your real browser profile (extensions, auth, and all), not a sterile automated tab.
The PWA failures developers actually search for, read straight from your live runtime:
All read from your real, logged-in profile β service-worker, cache, and extension state included β which chrome-devtools-mcp's sterile automated Chrome can't see.
The goal is to eliminate the "user is the AI's eyes and hands" loop. Today, debugging a PWA with AI usually means the human copy/pastes DOM snippets, describes console errors, screenshots UI state, and hand-executes clicks. This project replaces that with direct, structured access.
Status: working on Linux. The full MCPβIPCβnative-hostβservice-workerβpage-world round-trip is live, and a broad debugging surface is shipped:
- Capture β console / network / error / DOM-mutation / lifecycle, with persistent ring buffers + disk spill.
- Framework introspection β React, Vue, Svelte, and Solid (component/element trees, state, find-by-text/role).
- Store introspection β Redux, Zustand, Pinia, and Jotai (read, subscribe, dispatch).
- Interaction + touch gestures β click, fill, submit, hover, focus/blur, select, key/type, drag, scroll, swipe, tap, double-tap, long-press, pinch.
- Library-popup capture/replay β WalletConnect / SDK modals: record, replay, tail, failure correlation.
- Replay & source maps β rrweb
session_record/session_replay,source_map_resolve.- Browser launcher β one-call
pdl_launch_browserwithchrome-devtools-mcpcoexistence.- PWA Runtime Diagnostics β service-worker lifecycle + versions, CacheStorage contents + age, installability gaps, a live capability matrix, IndexedDB/web-storage inspection, update-propagation / version-skew analysis, and a one-shot runtime-state snapshot.
Verified on Linux (the full suite live-tested against a real PWA). macOS/Windows code paths are implemented with unit coverage but still need real-machine retest (help wanted). Firefox is not supported (it doesn't speak CDP).
β οΈ macOS / Windows users, beware: these platforms have never been run on real hardware β only unit-tested with injected fakes. Expect rough edges (browser detection, profile paths, native-messaging registration, system-default resolution). Please open an issue with the failing command and its output β bug reports from real macOS/Windows machines are the single most useful contribution right now. See Help wanted for the specific things to try.
chrome-devtools-mcpGoogle's chrome-devtools-mcp gives an AI Chrome DevTools Protocol access (DOM, console, network, screenshots). That covers a lot.
pwa-debug-layer is complementary β it targets the things CDP can't reach:
chrome-devtools-mcp spawns a fresh automated Chrome β which shows "controlled by automated test software," blocks extension loading, and has none of your auth/session state, so authenticated apps are hard to debug (the extensions/auth gap, #265). pwa-debug-layer's default existing mode attaches to your normal profile, with its real cookies, extensions, and service-worker state β exactly the real-profile SW/extension visibility people keep asking Google for (#1173, #96).__REACT_DEVTOOLS_GLOBAL_HOOK__, __vue_app__, _vnode, etc.). CDP can't see these.initScript-on-next-nav.The two are designed to coexist: install both, the AI uses each for what it does best, with zero tool-surface duplication.
Three components, one installable unit:
Each does what only it can. See docs/PLAN.md for the full design.
Chromium-family only, sideloaded. Tested against:
.deb / .rpm).deb)macOS Application Support paths and Windows HKCU-registry registration are implemented and have unit-test coverage; the manual round-trip retest currently runs on Linux.
If you installed your browser via snap (e.g. snap install chromium on Ubuntu), it will not work with pwa-debug-layer.
Why: snap's home interface allows the browser to read files in $HOME but blocks exec of any binary whose resolved path crosses a hidden directory (~/.nvm/..., ~/.config/...). The native messaging host launcher and the node binary it invokes both live under hidden paths in a normal install, so spawn fails with Permission denied and the service worker reports Native host has exited. There is no fix on the extension/host side that doesn't require copying ~125 MB of node into a non-hidden install dir per registration; not worth the install bloat for a setup most distros let you avoid.
What to do: install your Chromium-family browser from a native package source instead:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/pwa-debug-layer)<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>