lo-eyes
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
| Tool | Description |
|---|---|
eyes_screenshot |
Viewport-sized screenshot at any device preset |
eyes_scan |
Auto-chunk full page into readable viewport pieces with RAG manifest |
eyes_audit |
Responsive + accessibility audit with S+ grading |
eyes_devices |
List available device presets |
Device Presets
| Name | Viewport | Type |
|---|---|---|
iphone-se |
375x667 | Mobile |
iphone-14 |
390x844 | Mobile |
ipad |
768x1024 | Tablet |
laptop |
1280x800 | Desktop |
desktop |
1440x900 | Desktop |
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
| Grade | Criteria |
|---|---|
| S+ | Zero issues |
| A | 1-5 medium, zero high |
| B | 6+ medium, zero high |
| C | 1-2 high |
| D | 3-5 high |
| F | 6+ 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
- Python 3
- Playwright (headless Chromium)
- MCP SDK (FastMCP, stdio transport)
License
MIT
Built with love by Like One.
Metadata
Release files for lo-eyes 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| lo_eyes-1.1.0.tar.gz | 13.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lo_eyes-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.6 kB
Release files / lo_eyes-1.1.0.tar.gz
| Download URL | lo_eyes-1.1.0.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
142fc86854cae5236f7dbdd8124bbf1cd54f713902e511ae0a9315b43226e38c
|
|
BLAKE2b-256 checksum How to use checksums |
312758aa6666bfcc97ffad82b8add988d12c8aa371b6f847fd2acbcc38dff3ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.
Transparency logRelease files / lo_eyes-1.1.0-py3-none-any.whl
| Download URL | lo_eyes-1.1.0-py3-none-any.whl |
|---|---|
| Size | 10.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f14874c3fef176f9a90cb3b3fcac6aabcce0bcf44346cbd20d8f42abc7b329a
|
|
BLAKE2b-256 checksum How to use checksums |
879c6a767271875bec46f7f4c4b8f56369bfcedeeeaee9025175fd7ae28d39f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.
Transparency logSecurity for lo-eyes 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for lo_eyes-1.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 10, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.