fovea-web
Supports installing the Fovea Web extension in Brave to perform mobile-first responsive audits, capture screenshot matrices, and automate the active tab through CDP-based actions such as navigation, clicking, typing, scrolling, and JavaScript evaluation.
Supports loading the Fovea Web extension in Firefox via the Firefox-specific manifest to provide responsive layout auditing, viewport and media query introspection, touch swipes, and browser automation on the active tab.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fovea-webrun a responsive audit on this page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fovea Web
A browser extension plus a small local server that lets an AI assistant see and control your actual browser tab — not a throwaway automation profile, your real, already-logged-in tab — and specifically check whether a page's mobile layout is broken (overflowing content, unreadable text, tiny tap targets) rather than just clicking around it.
Under the hood it's a cross-browser MCP server + Manifest V3 extension for mobile-first layout auditing and browser automation. Most MCP browser tools treat the browser as a robot to click through; this one is built to think like a responsive-QA engineer first.
Architecture
AI Harness <--(Stdio/MCP)--> MCP Server <--(WebSocket :8080)--> Extension Background Worker <--(CDP/DOM)--> Web Page
keeps login (extension) vs disposable profile (Playwright)Related MCP server: visual-review-workbench
Why Fovea Web vs Playwright / chrome-devtools-mcp / BrowserTools
Feature | Fovea Web | Playwright MCP (52 tools) | chrome-devtools-mcp (57) | BrowserTools (16) |
Mobile audit (overflow, viewport, tap targets) | ✅ | ❌ only | ❌ only | ❌ |
Touch | ✅ | ❌ mouse only | ❌ | ❌ |
VisualViewport + safe-area | ✅ | ❌ | ❌ | ❌ |
Media query introspection | ✅ | ❌ | ❌ | ❌ |
Keeps logged-in session | ✅ extension | ❌ isolated profile | ❌ | ✅ read-only |
Quick Start
1. Build
npm install
npm run build2. Load Extension
Chrome / Brave / Edge:
chrome://extensions→ Developer Mode → Load unpacked →dist/extensionFirefox:
about:debugging#/runtime/this-firefox→ Load Temporary Add-on →dist/extension/manifest.firefox.json
Popup shows ● Connected / ○ Disconnected, active tabs, and a one-click Audit This Page checker.
3. Connect to AI Harness
Add to mcp.json:
{
"mcpServers": {
"fovea-web": {
"command": "node",
"args": ["/path/to/fovea-web/dist/server/index.js"],
"env": { "WS_PORT": "8080" }
}
}
}Or use the included .mcp.json.
Tools (16)
Tool | Description |
| Emulate 8 presets (SE/14/Pro Max/Pixel/iPad/Desktop/HD/Custom) + DPR/touch/UA, full-page screenshot or |
| Chrome a11y tree via CDP |
| CSS/XPath click |
| up/down/top/bottom |
| Navigate active tab, wait for load |
| Real keystrokes into inputs (clear/submit/delay) |
|
|
| Hover to open menus |
| Run JS in page, return JSON |
| Buffered console (log/warn/error) |
| inner/outer/visualViewport/DPR/scrollWidth/safeArea/meta viewport |
| List media queries + |
| ⭐ Cycle 5 viewports, detect |
| ⭐ One-call screenshots across |
| Touch swipe (up/down/left/right) |
| list/create/close tabs |
Example — responsive audit
Ask your LLM: "audit responsive layout for this page, include screenshots" → calls audit_responsive{devices:[iPhone_SE, Pixel_7, Desktop], includeScreenshots:true} → returns:
# Responsive Audit — https://example.com
_2025-08-20_ — ❌ FAIL — 2 errors, 1 warnings
| Viewport | Overflow | Issues |
| iPhone_SE (375px) | ⚠️ YES | 2 |
## iPhone_SE — 2 issue(s)
- 🔴 HORIZONTAL_OVERFLOW document — scrollWidth 412px > viewport 375px
- 🔴 FIXED_WIDTH_OVERFLOW div.hero — width 400px > viewport 375pxProject Structure
fovea-web/
├── src/
│ ├── protocol.ts # WS wire + 8 device presets + ViewportMetrics/AuditResult
│ ├── tools.ts # Zod schemas for 16 tools
│ ├── ws-bridge.ts # WS server :8080 with req_id timeout map
│ ├── layout-analyzer.ts # analyzeLayout + auditBreakpoint + formatAuditAsMarkdown
│ └── mcp-server.ts # 16 MCP tools via stdio
├── extension/
│ ├── manifest.json # MV3 + alarms keep-alive (Fovea Web)
│ ├── background.ts # CDP + scripting + audit orchestration + badge
│ ├── content.ts # console hook + viewport/media/audit snapshot
│ ├── popup.html/ts # status + tabs + quick audit
│ └── manifest.firefox.json
└── tests/
├── mcp-server.test.ts
└── layout-analyzer.test.tsTesting
npm test # vitest
npm run lint # tsc --noEmit
npm run build # esbuild -> dist/Env
See .env.example. WS_PORT defaults to 8080. Extension uses chrome.alarms keep-alive to survive MV3 idle.
Roadmap
Device matrix + touch + viewport + media introspection
Audit + matrix (differentiators)
Network throttling (
slow4g/cpu4x), Lighthouse-mobileVisual regression store + diff threshold
This server cannot be deployed
Maintenance
Related MCP Connectors
Browserless MCP — wraps the Browserless headless-Chromium REST API (browserless.io)
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Clean PNG/JPEG screenshots via REST or MCP, with goal-driven multi-step navigation.
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceVisual frontend accessibility inspector MCP server. WCAG contrast checking, touch target validation, heading hierarchy audits, responsive screenshots, and S+ grading across mobile and desktop viewports.25 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceEnables visual review of frontend UI variants by providing an MCP tool that opens, refreshes, verifies, captures, and closes review surfaces.MIT
- AlicenseAqualityCmaintenanceEnables MCP clients to open websites, capture screenshots at multiple breakpoints, and run automated design audits for issues like overflow, small tap targets, low contrast, missing alt text, tiny text, and clipped content.91MIT
- AlicenseBqualityCmaintenanceEnables mobile device automation on Android and iOS via MCP, including native UI operations, WebView CDP debugging, and reusable JSON flow replay.35Apache 2.0