# lo-eyes [Health: Active]

**Category:** 📂 Browser Automation  
**Repository:** https://github.com/sophiacave/lo-eyes  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/lo-eyes

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

## Tools
Capabilities this server exposes over MCP:

- **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

## Claude Desktop Quick Installation
No generated config for this server: it installs through its own setup steps.

The project's own setup steps (from https://github.com/sophiacave/lo-eyes), copied verbatim. Run them in order; they are not an mcpServers config.

1. Run:

```sh
cd lo-eyes
```

2. Configure:

```sh
python3 -m venv .venv
```

3. Install:

```sh
pip install playwright mcp
```

4. Install:

```sh
python3 -m playwright install chromium
```

## Documentation

## What the lo-eyes MCP server does

The lo-eyes MCP server evaluates web pages as rendered in a browser rather than inspecting source files alone. It can capture a viewport-sized image, examine a complete page in smaller readable sections, and report responsive or accessibility findings. The server works with any site when its base URL is changed, so it can be used against different web applications or environments.

Audit results cover several concrete checks: content that extends beyond the viewport, text smaller than 12px, interactive controls below the 44px Apple HIG touch-target minimum, and skipped heading levels such as a jump from h1 to h3. Accessibility and responsive results receive an S+ through F grade based on the number and severity of findings.

## How it works

The implementation is written in Python and uses Playwright with headless Chromium to load and render pages. MCP communication uses the Python MCP SDK and FastMCP with stdio transport. Device presets determine the viewport used for screenshots and audits.

Available presets are iphone-se at 375x667, iphone-14 at 390x844, ipad at 768x1024, laptop at 1280x800, and desktop at 1440x900. The scan operation can divide a long page into viewport-sized pieces and produce a RAG manifest, which gives an agent smaller visual sections to process.

The grading scale is based on issue counts: S+ means no issues; A allows one to five medium issues with no high issues; B means six or more medium issues with no high issues; C, D, and F represent increasing counts of high-severity issues.

## Setup and configuration

The lo-eyes MCP server requires Python 3.10 or newer. A documented setup creates a virtual environment, installs the `playwright` and `mcp` packages, and downloads the Chromium browser through Playwright:

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install playwright mcp
python3 -m playwright install chromium
```

For Claude Code, add an `lo-eyes` entry to `.mcp.json` with the Python executable from the virtual environment as the command and `server.py` as its argument.

## Tools and capabilities

The lo-eyes MCP server exposes four MCP tools:

- `eyes_screenshot` captures a viewport-sized screenshot using a device preset.
- `eyes_scan` chunks a full page into readable viewport sections and returns a RAG manifest.
- `eyes_audit` runs responsive and accessibility checks and assigns an S+ grading result.
- `eyes_devices` lists the available device presets.

The tool set supports both focused inspection of one route and broader checks across responsive breakpoints. Screenshots can provide visual context while audit output identifies specific classes of layout and accessibility problems.

## Limitations and notes

The documented audit checks are limited to overflow, minimum font size, touch-target dimensions, and skipped heading levels. The material does not describe broader WCAG coverage, browser support beyond headless Chromium, authentication workflows, JavaScript configuration, or result persistence. It also does not document a client-specific setup beyond Claude Code.

The server uses stdio transport, and browser installation is a separate setup step. Pages must be reachable by the configured base URL and route supplied to the server or CLI. Device presets are fixed to the five sizes listed above; custom viewport dimensions are not documented.

_Full upstream README: https://allmcps.com/mcp/lo-eyes/readme_

