PluginWorld
Be

Bezlo MCP

MCP✓ SPEC VERIFIED

Enables AI agents to load web pages in true-to-size iPhone, iPad, and Android device frames, capture screenshots, inspect interactive elements and layout diagnostics, and automate tap/type/scroll flows with network mocks, console errors, and test evidence.

@gba3124 · v0.1.0 · MIT License · updated today

SECURITY

A

SCORE

80

STARS

▲ 0

PLUG IN

claude mcp add bezlo-mcp -- npx -y bezlo-mcp

README

Bezlo — open agent layer

Bezlo puts any web page inside a true-to-size iPhone / iPad / Android frame and lets an AI agent see it and act on it: screenshots, interactive-element lists, layout diagnostics (overflow, safe-area, touch identity), console/page errors, network mocks, tap/type/scroll flows, device matrix runs — and report.json / JUnit / mp4 evidence.

This repository is the MIT-licensed agent layer:

  • mcp/ — MCP stdio server + CLI + session/capture engine (also on npm as bezlo-mcp)
  • action.yml + examples/ — composite GitHub Action (PR screenshots + JUnit + video)
  • skill/ — the bezlo-preview skill for Claude Code / skills-compatible agents
  • server.json — official MCP registry manifest
  • docs/MCP.md — full tool reference

The Chrome extension itself is proprietary and lives in a separate private repo (extension/, store art, brand). This repository contains no extension code, store assets or brand artwork. The name Bezlo and its logo are not licensed for reuse.

Install

# MCP (Claude Code / Claude Desktop / Cursor)
npm install -g bezlo-mcp
claude mcp add bezlo -- npx -y bezlo-mcp

# or run from a checkout
node mcp/cli.mjs --list

The package bundles no browser: install Chrome/Chromium (or set RP_CHROME). Chrome for Testing is recommended; WebKit mode additionally needs npx playwright install webkit.

Quick CLI

node mcp/cli.mjs --url http://localhost:3000 --device iphone16 --out shot.png
node mcp/cli.mjs --url http://localhost:3000 --matrix --devices iphone16,ipadpro11,px10 --out ./matrix
node mcp/cli.mjs --url http://localhost:3000 \
  --actions '[{"type":"click","text":"Sign in"},{"type":"type","selector":"#email","value":"a@b.c","submit":true}]' \
  --record --assert '[{"type":"noOverflow"},{"type":"noConsoleErrors"}]' --out after.png

GitHub Action

- uses: gba3124/bezlo@main
  id: bezlo
  with:
    url: http://localhost:3000
    device: iphone16
    steps: '[{"type":"click","text":"Sign in"}]'
    asserts: '[{"type":"noOverflow"},{"type":"noConsoleErrors"}]'
    record: 'true'

Artifacts: final screenshot, report.json, junit.xml, optional mp4/gif. Outputs: pass, report, junit, video, gif, screenshot, artifacts.

Engines

  • chromium (default) — Chrome's own emulation engine (same as the extension's frames): real touch, mobile UA and client hints, DPR; full recording and CDP accessibility.
  • webkit — Playwright WebKit, a Safari-flavoured approximation (not real iOS Safari; no recording / CDP a11y).

License

MIT — see LICENSE. The Chrome extension, store assets and the Bezlo brand are not covered by this license and are not part of this repository.

SIMILAR PLUGINS