What is the uisight MCP server?
uisight is an MCP server for web and responsive UIs. It runs live mobile and desktop sessions side by side, and its inspect tool returns measured findings as text, such as a 1.04:1 contrast ratio with the selector, so your AI coding agent fixes that element.
uisight is an MCP server for web and responsive UIs. It runs live mobile and desktop sessions side by side, measures what it finds, and puts you and the agent in front of the exact same screen.
A screenshot makes an agent guess that a heading looks a little washed out. uisight returns a measurement with a selector attached, such as INVISIBLE TEXT 1.04:1 on a named span, so the agent fixes that element.
What inspect measures
- Invisible text under 1.6:1 contrast and WCAG AA contrast failures, including alpha-composited backgrounds, gradient text and oklab or oklch colors.
- Touch targets below 44px on mobile profiles, text below 12px and images without alt.
- Horizontal overflow with the offending elements, and controls painted over by something else.
- Theme drift, where elements identical in light and dark likely point to hard-coded colors.
- Console and JS errors and failed network requests per device.
The shared live panel
Running uisight-panel with a URL opens a page at localhost:5055 with mobile and desktop sessions side by side, both live and URL-synced. The Inspect button runs the measurement engine on every screen.
When you spot a bug, you pin it with a note. Your agent reads the note plus that exact frame through the marks tool, so nobody has to describe a bug in words.
Cost and where it runs
On a Pixel 7 session, running uisight with a URL and reading REPORT.md takes about 800 tokens once. MCP inspect takes about 570 per call, and see_screen about 260 per call at the default 0.75 scale. Everything runs locally.
Who uisight is for
Best for
- Agents that need measured contrast, touch target and overflow findings as text instead of guesses from a screenshot.
- Checking one site on several devices and both themes, with a one-shot audit across iPhone, Pixel and desktop in light and dark.
- Auditing pages behind a login with uisight-audit across every configured role.
Not for
- Native iOS or Android app control, since uisight covers web and responsive UIs only.
- Visual polish audits of spacing, type, colour and consistency on a live page, which the Jezweb design-review skill covers.
- Scoring a screenshot for color, layout and type, which the Design Critique MCP server covers.
- Auditing iOS app accessibility for VoiceOver and Dynamic Type, which the axiom-accessibility skill covers.
- Lighthouse-style audits across performance, SEO and best practices, which the web-quality-audit skill covers.
Connect uisight MCP Server: Measured UI Findings for AI Coding Agents to your AI client
claude mcp add --scope user uisight -- npx -y -p uisight@latest uisight-mcpAdd the server
Run the command above for Claude Code. For Cursor, Antigravity and other MCP hosts, add the JSON block above to your MCP config.
Install the browser
Playwright downloads browsers separately, so run
npx playwright install chromiumonce. Chromium is about 700 MB on disk, and you can add webkit for the real iOS Safari engine.Ask your agent to look
Tell your agent to look at your app with uisight. The panel server starts automatically when needed.
Use the Claude Desktop bundle
Download the uisight .mcpb file from the latest release and open it. Claude Desktop asks for the page to open, the tool set (all or core) and whether to download the browser on first use.
Client configuration
{ "mcpServers": { "uisight": { "command": "npx", "args": ["-y", "-p", "uisight@latest", "uisight-mcp"] } } }Endpoints and ports
https://github.com/sololabstr/uisightSource and READMEhttp://localhost:5055Opened by uisight-panel with a URLWhat you can do with it
- Measured findings as textinspect returns findings such as a contrast ratio or a touch target size with the element selector attached, so the agent fixes a named element.
- Live mobile and desktop sessionsBoth sessions stay live and URL-synced, with a per-pane device switcher and a shared light and dark toggle.
- Device profilesset_device switches between iphone-15, iphone-se, pixel, galaxy, ipad, desktop and laptop, or between the light and dark theme.
- Pinned notesPin a note in the panel and the agent reads it together with the screenshot from that moment through marks.
- One-shot audit
npx uisight <url> --theme bothwrites PNGs, a gallery and a report for iPhone, Pixel and desktop in light and dark. - Offline and back checksThe offline check drops the connection and reloads to see what the person is looking at. The back check follows an internal link, presses back and confirms the screen is not empty.
- Login auditsuisight-audit covers every configured role, 10 pages each, with accounts stored in ~/.uisight/accounts.json.
- Smaller tool setSetting UISIGHT_TOOLS to core keeps goto, inspect, see_screen and status, about 419 tokens of tool definitions against about 1,065 for all nine tools.
Tools it exposes
see_screen
Returns the current screen as an image, the exact frame the human sees in the panel.
inspect
Runs contrast, touch target, overflow and theme checks and returns measured findings as text.
goto
Navigates all sessions to a URL, localhost included.
tap
Drives the page while the human watches it happen live.
type_text
Types into the page while the human watches it happen live.
scroll
Scrolls the page while the human watches it happen live.
set_device
Switches the device profile (iphone-15, iphone-se, pixel, galaxy, ipad, desktop, laptop) or the light and dark theme.
status
Returns the open URL, sessions and recent console and network errors, the first stop when hunting a bug.
marks
Reads the notes the human pinned in the panel, each with a screenshot from that moment.
Frequently asked questions
What is the uisight MCP server?
It is an MCP server for web and responsive UIs. It runs live mobile and desktop sessions side by side, measures contrast, touch targets, overflow and theme drift, and returns the findings as text with a selector, while you and your AI coding agent watch the same screen in a shared panel.
How do I install uisight?
For Claude Code, run claude mcp add --scope user uisight -- npx -y -p uisight@latest uisight-mcp. For Cursor, Antigravity and other MCP hosts, add the mcpServers JSON block with npx and the same arguments. Then run npx playwright install chromium once, because Playwright downloads browsers separately.
Which tools does uisight expose?
It exposes see_screen, inspect, goto, tap, type_text, scroll, set_device, status and marks. inspect returns measured findings as text, see_screen returns the current frame as an image, set_device switches device profile or theme, and marks reads the notes a human pinned in the panel.
What does uisight inspect check?
It checks invisible text and WCAG AA contrast, text below 12px, images without alt, touch targets below 44px on mobile profiles, controls painted over by something else, horizontal overflow, light patches in dark mode and theme drift. It also reports console errors and failed network requests per device.
Does uisight work for native iOS or Android apps?
No. uisight is for web and responsive UIs only. Its iPhone profiles run on real WebKit, the engine behind Safari, which is close to iOS but not an iOS Simulator. For native iOS or Android app control, the project points to a different tool built for that job.
How many tokens does uisight use?
On a Pixel 7 session, running uisight with a URL and reading REPORT.md takes about 800 tokens once. MCP inspect takes about 570 per call, see_screen about 260 per call at the default 0.75 scale, and the nine tool definitions about 1,065 per request. UISIGHT_TOOLS=core cuts that to about 419.
Does uisight need a cloud service or an account?
No. Everything runs locally, with no cloud and no account, and your screens stay on your machine. The first run downloads a browser once through Playwright. Where nobody can answer, such as CI or a panel started by an editor or agent host, uisight never asks and never downloads, and it names the exact command instead.


