Skip to main content

Squint

Squint is an MCP server that examines a rendered web page by crossing what the browser reports (DOM/CSS) with what is actually painted (pixels), and reports the visual problems it finds without needing a baseline.

It is built for coding agents that have just produced UI and need to know whether the page actually looks right: which element is broken, and what the evidence is.

Install

Requires uv. uv installs Python 3.12 for you if it is missing. Two steps:

uvx --from squint-mcp playwright install chromium   # the browser Squint drives
uvx squint-mcp                                       # the server

The first step goes through squint-mcp so the Chromium downloaded is the one its Playwright expects; uv warns that playwright comes from a dependency, which is expected. On Linux, add --with-deps to also install the system libraries Chromium needs.

The server speaks MCP over stdio, so started by hand it just waits for a client. Register it in your MCP client instead:

{
  "mcpServers": {
    "squint": {
      "command": "uvx",
      "args": ["squint-mcp"]
    }
  }
}

In Claude Code: claude mcp add squint -- uvx squint-mcp.

Then call ping to confirm the connection.

Tools

The server exposes three tools:

Tool Input Output
ping message (optional string) server name, version, and the echoed message
inspect_element url, selector, viewport (optional) one element's computed styles, box model, sampled colours, stabilized, and a crop
detect_visual_bugs url, viewports (optional), checks (optional) Findings ordered by severity, stabilized per viewport, and up to five crops

detect_visual_bugs runs two Checks: text-clipped (text cut off by its own box) and low-contrast-real (text whose contrast against the background sampled from the pixels is below WCAG 2.2 SC 1.4.3, so it is right over images and gradients). See docs/SPEC.md for the v0.1 specification and CHANGELOG.md for what each release contains.

Development

Run from a checkout:

git clone https://github.com/sh4wty1/squint-mcp.git
cd squint-mcp
uv sync
uv run playwright install chromium   # the tests drive a real Chromium
uv run squint-mcp

To point an MCP client at the checkout, use "command": "uv" with "args": ["run", "--directory", "/path/to/squint-mcp", "squint-mcp"].

One command each:

uv run pyright              # typecheck (strict)
uv run ruff check           # lint
uv run ruff format --check  # format check
uv run pytest               # tests

Tests drive the server through an in-memory MCP client, the same surface a real client uses. See CONTRIBUTING.md.

Documentation

License

MIT

Metadata

Release files for squint-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for squint-mcp 0.1.0
File Size Uploaded
squint_mcp-0.1.0.tar.gz 49.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for squint-mcp 0.1.0
File Interpreter ABI Platform
squint_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 77.5 kB

Release files / squint_mcp-0.1.0.tar.gz

Download URL squint_mcp-0.1.0.tar.gz
Size 49.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d7a2803e468a50c8a7a3d386297eb35f7375184b43305310671b93d1b3729520
BLAKE2b-256 checksum
How to use checksums
d8f3c9d3783cac77313dfb6c1d7a2e1297436203fd2383bd0e0a19701fa66745
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / squint_mcp-0.1.0-py3-none-any.whl

Download URL squint_mcp-0.1.0-py3-none-any.whl
Size 27.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6834e60e5c131d607680d68762086f6c90f26b1c2a1eb195a00eebf5c2fff2f1
BLAKE2b-256 checksum
How to use checksums
b77c00b7d23ef53c759187703c4695c96a473fb60c1135fc2872d9af414f8b44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page