Odel
lo-eyes

lo-eyes

Local
@sophiacavePythonMITUpdated 2mo ago

Visual accessibility inspector. WCAG contrast, touch targets, heading audits, screenshots.

lo-eyes

CI

License: MIT Python 3.10+ MCP Compatible

Visual frontend accessibility inspector MCP server. WCAG contrast checking, touch target validation, heading hierarchy audits, responsive screenshots, and S+ grading across mobile and desktop viewports.

Built by Like One Foundation (501(c)(3) nonprofit). Works with any site by changing BASE_URL.

Tools

ToolDescription
eyes_screenshotViewport-sized screenshot at any device preset
eyes_scanAuto-chunk full page into readable viewport pieces with RAG manifest
eyes_auditResponsive + accessibility audit with S+ grading
eyes_devicesList available device presets

Device Presets

NameViewportType
iphone-se375x667Mobile
iphone-14390x844Mobile
ipad768x1024Tablet
laptop1280x800Desktop
desktop1440x900Desktop

Audit Checks

  • Overflow: Elements exceeding viewport width (respects scroll parents)
  • Font size: Text below 12px minimum
  • Touch targets: Interactive elements below Apple HIG 44px minimum
  • Heading hierarchy: Skipped heading levels (h1 -> h3)

Grading

GradeCriteria
S+Zero issues
A1-5 medium, zero high
B6+ medium, zero high
C1-2 high
D3-5 high
F6+ high

Setup

cd lo-eyes
python3 -m venv .venv
source .venv/bin/activate
pip install playwright mcp
python3 -m playwright install chromium

Usage

As MCP Server (Claude Code)

Add to .mcp.json:

{
  "mcpServers": {
    "lo-eyes": {
      "command": "/path/to/lo-eyes/.venv/bin/python3",
      "args": ["/path/to/lo-eyes/server.py"]
    }
  }
}

As CLI

./lo-eyes audit /                           # Audit homepage
./lo-eyes screenshot /blog/ --device ipad   # iPad screenshot
./lo-eyes scan / --device iphone-14         # Full-page chunked scan
./lo-eyes responsive /academy/              # All 5 viewports

Stack

License

MIT


Built with love by Like One.