Facet

io.github.chndr-prkshPublished by GitHub account chndr-prkshv0.1.0Updated Oct 24, 2026

Check web pages for responsive design problems and screenshot them on phone, tablet and desktop.

The publisher's own server: Facet UCP Shopping

Overview

AI-generated overview

Facet checks a web page for responsive design problems and screenshots it across emulated phone, tablet and desktop devices.

What you can do
Check a URL across many emulated devices and get per-device errors and warnings with selectors and suggested fixes, including horizontal scrolling, small tap targets, tiny text, form field zoom, viewport meta, image and fixed-header issues, plus console errors and failed requests. Capture labelled screenshots per device, viewport or full page. Measure a single element on every device: size, visibility, font size, display, flex and grid. Run an axe-core accessibility audit on one device and list WCAG violations with fixes. List the device catalogue and presets.
When to use it
Useful when an assistant edits CSS or layouts and needs to verify the result on real-world screen sizes, or when you want a quick responsive and accessibility pass over a local dev server or public page before shipping.
Requirements
Runs locally over stdio via npx from the npm package. Needs Node 20 or later and a Chromium-based browser, found in order from FACET_CHROME, Playwright's Chromium, Google Chrome, then Microsoft Edge. The target page must be reachable from the machine.
Before you install
It loads the given URL in a headless browser, so the page and its requests reach whatever hosts it references. It only sees the page as loaded; content behind a login or a click is not checked. Emulation is Chromium only, so Safari-specific bugs are not caught. Screenshots written to a directory may capture sensitive page content.

Installation

In SourceWeft

  1. Open Facet in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

facet-check

Check a web page for responsive design problems on real phone, tablet and desktop viewports. It runs from the command line, in CI, or as an MCP server that AI coding agents (Claude Code, Cursor, Codex, VS Code) can call.

bash
npx @chandra14/facet-check localhost:3000

Or install it once with npm install -g @chandra14/facet-check, then run facet-check localhost:3000.

Output for a test page with a price table that is too wide for phones (shortened):

Facet check http://localhost:30006 devices · 14 errors · 14 warnings
✗ iPhone 16 393×852 @3x  error Page scrolls sideways by 267px — The document is 660px wide in a 393px viewport.  error Extends 267px past the viewport — <table.prices> “SizeWhole beanGroundSubscriptionWholesal”        html > body > main > table        fix: Constrain it with max-width: 100%, min-width: 0 on a flex child, overflow-wrap: anywhere, or let it scroll inside its own container.  error Tap target is 13 × 13px — <input#weekly>        #weekly        fix: Targets must be at least 24 × 24px (WCAG 2.5.8); 44 × 44px is comfortable.  warn  Field text is 14px, so iOS zooms in on focus — <input#email>        #email        fix: Give form controls font-size: 16px or larger.  console Carousel failed to initialise at 393px
! Full HD laptop at 125% (most common) 1536×864 @1.25x  warn  Text is only 10px — <p#terms> “Prices include tax. Orders placed after ”

Each device is a real emulation in headless Chromium, not a resized window. It uses the device's viewport, pixel ratio, touch support, mobile viewport behaviour and user agent. A page with no viewport meta tag lays out at 980px on a phone, as it would on the real device.

It is the command-line and agent side of Facet, an open-source browser for responsive web development. Facet's device catalogue has 290+ profiles, from the iPhone SE to 2026 flagships, foldables, tablets, laptops and 4K monitors.

What it finds

On every device:

  • Horizontal scrolling, and the element that causes it (the table, not each of its cells)
  • Tap targets smaller than 24 × 24px on touch devices (WCAG 2.5.8)
  • Text smaller than 12px, and text that is cut off without an ellipsis
  • Form fields under 16px, which make iOS zoom in when focused
  • Viewport meta problems: missing, not device-width, or zoom disabled
  • Images that are far larger than needed, blurry on high-density screens, or missing dimensions
  • Fixed headers and banners that cover too much of a small screen
  • Console errors, uncaught exceptions and failed requests, per device. An error that only one device logs is a viewport-specific bug.

Command line

bash
npx @chandra14/facet-check <url> [options]
Option
-d, --devices <list>Device ids, names, sizes like 1024x768, or a preset (default: popular)
-s, --screenshots <dir>Save a PNG of each device
--full-pageCapture the whole page, not only the first screen
--jsonPrint the full report as JSON
--allAlso list info-level notes
--fail-on <level>Exit 1 when a finding is at least error (default), warn or info; never always exits 0
--timeout <ms>Page load timeout (default 30000)
--list-devices [query]Show presets and the device catalogue

The URL can be a full URL, a bare host (example.com), a local dev server (localhost:3000, :5173) or a path to an HTML file.

Presets: popular (the six most common real-world sizes), default (phone, tablet, laptop), phones, latest, tablets, desktops, apple, foldables, extremes.

bash
npx @chandra14/facet-check localhost:3000 -d phones --screenshots shotsnpx @chandra14/facet-check https://example.com -d iphone-17,"Galaxy S26",ipad,1440x900 --json

In CI

The exit code is 1 when errors are found, so it can gate a pull request:

yaml
- run: npx @chandra14/facet-check http://localhost:4173 --fail-on error

MCP server for AI agents

facet-check mcp runs a Model Context Protocol server over stdio. An agent can then check its own CSS changes on many screen sizes and look at the result.

Claude Code

bash
claude mcp add facet -- npx -y @chandra14/facet-check mcp

Cursor, VS Code, Claude Desktop and other clients

json
{  "mcpServers": {    "facet": { "command": "npx", "args": ["-y", "@chandra14/facet-check", "mcp"] }  }}
ToolWhat it does
check_responsiveLoads a URL on several devices and returns the problems on each, with selectors and fixes
screenshotReturns one labelled image per device (viewport or full page)
compare_elementMeasures one element on every device: size, visibility, font size, display, flex and grid
audit_accessibilityRuns axe-core on one device and returns WCAG violations with fixes
list_devicesLists the device catalogue and presets

Then ask, for example: "Check localhost:3000 on phones and fix anything that scrolls sideways."

Requirements

Node 20 or later and a Chromium-based browser. facet-check uses, in order: the browser at FACET_CHROME, Playwright's Chromium (npx playwright install chromium), Google Chrome, then Microsoft Edge. Most machines already have one of these.

Limits

  • Chromium only. An iPhone profile emulates the iPhone's screen, not Safari's WebKit engine. Safari-specific bugs still need Safari.
  • It checks the page as it is after load. Content behind a login or a click is out of reach from the command line.

License

MIT

Source: cli/README.md at commit 815822c

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestOct 14, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.

Other Facet integrations