Screenshot Analyzer MCP
Analyzes app screenshots to identify UI/UX issues, compare designs with implementations, and provide actionable fixes using GPT-4o/GPT-5.2 vision capabilities. Supports single/batch analysis, design comparison, and automated report generation for iOS, Android, web, and desktop platforms.
README
Screenshot Analyzer MCP
AI-powered screenshot analysis for UI/UX issues using GPT-5.2
A Model Context Protocol (MCP) server that acts as "eyes" for AI coding assistants, analyzing app screenshots to identify UI/UX problems, compare designs with implementations, and provide actionable fixes.
Features
- Single/Multi Screenshot Analysis - Analyze 1-10 screenshots at once
- Batch Analysis - Process entire folders with automatic batching
- Design Comparison - Compare design mockups vs actual screenshots
- Fast Mode - Quick scans with gpt-4o-mini at lower cost
- Report History - Store and retrieve past analysis reports
- Concurrent Loading - Parallel URL fetching (10x faster)
- Auto Retry - Exponential backoff for rate limits
Requirements
- Python 3.10+
- OpenAI API key (with GPT-5.2 or GPT-4o access)
- Claude Code CLI (for MCP integration)
Installation
1. Clone the Repository
git clone https://github.com/YOUR_USERNAME/screenshot-mcp.git
cd screenshot-mcp
2. Install Dependencies
pip install mcp httpx pillow
Or with requirements.txt:
pip install -r requirements.txt
3. Add to Claude Code
Add to your global settings (~/.claude/settings.json):
{
"mcpServers": {
"screenshot-analyzer": {
"command": "python3",
"args": ["/path/to/screenshot-mcp/server.py"]
}
}
}
Or use Claude CLI:
claude mcp add screenshot-analyzer python3 /path/to/screenshot-mcp/server.py
4. Set Your API Key
In Claude Code, run:
Use set_api_key tool with your OpenAI API key
Or create config.json in the same directory:
{
"api_key": "sk-proj-your-api-key-here",
"default_reasoning_effort": "high"
}
Available Tools
| Tool | Description |
|---|---|
analyze_screenshots |
Analyze screenshots for UI/UX issues |
batch_analyze |
Batch analyze folder or multiple files |
compare_designs |
Compare design mockup vs implementation |
set_fast_mode |
Toggle fast/precise mode |
get_report_history |
List recent analysis reports |
get_report_by_id |
Retrieve a specific report |
get_last_report |
Get the most recent report |
set_api_key |
Configure OpenAI API key |
set_reasoning_effort |
Set reasoning level (none/low/medium/high/xhigh) |
get_config |
View current configuration |
Usage Examples
Basic Analysis
analyze_screenshots(
platform="ios",
image_paths=["/path/to/screenshot.png"],
app_description="E-commerce app for fashion retail"
)
Batch Analysis
batch_analyze(
platform="android",
folder_path="/path/to/screenshots",
batch_size=5,
generate_summary=True
)
Design Comparison
compare_designs(
design_path="/path/to/figma-export.png",
screenshot_path="/path/to/actual-screenshot.png",
platform="ios",
tolerance="normal" # strict | normal | relaxed
)
Fast Mode (Lower Cost)
# Enable fast mode (uses gpt-4o-mini)
set_fast_mode(enabled=True)
# Run analysis at ~80% lower cost
analyze_screenshots(platform="web", image_paths=[...])
# Disable for detailed analysis
set_fast_mode(enabled=False)
Output Format
Analysis Report
## Summary
[X critical, Y major, Z minor issues found]
## Critical Issues (Must Fix)
- [Location]: [Problem] → [Fix]
## Major Issues
- [Location]: [Problem] → [Fix]
## Minor Issues
- [Location]: [Problem] → [Fix]
## Suggestions
- [Enhancement idea]
Comparison Report
## Consistency Score: XX/100
## Critical Differences (Design Intent Broken)
- [Element]: Design [value] → Actual [value]
## Major Differences (Noticeable)
- [Element]: Design [value] → Actual [value]
## Minor Differences (Acceptable)
- [Element]: Design [value] → Actual [value]
Configuration Options
| Option | Default | Description |
|---|---|---|
api_key |
(required) | OpenAI API key |
default_model |
gpt-5.2 |
Model for analysis |
default_reasoning_effort |
high |
Reasoning level |
max_image_size |
1024 |
Max dimension in pixels |
jpeg_quality |
85 |
Compression quality |
fast_mode |
false |
Use faster/cheaper model |
fast_mode_model |
gpt-4o-mini |
Model for fast mode |
fast_mode_reasoning |
low |
Reasoning in fast mode |
Tolerance Levels (Design Comparison)
| Level | Description |
|---|---|
strict |
Flag all differences, even 1px variations |
normal |
Flag noticeable differences (2-4px, visible color mismatches) |
relaxed |
Only flag significant differences affecting UX |
Technical Details
- Uses OpenAI GPT-5.2 Responses API (
/v1/responses) - Automatic image compression (max 1024px, JPEG 85%)
- Concurrent URL loading with
asyncio.gather() - Exponential backoff retry (429/5xx errors)
- Report history cache (last 20 reports)
- Supports PNG, JPEG, GIF, WebP, BMP formats
- Auto-repair corrupted images (e.g., Android screencap with text header)
Platform Support
| Platform | Guidelines |
|---|---|
ios |
Human Interface Guidelines (HIG) |
android |
Material Design |
web |
WCAG, modern web standards |
desktop |
Platform-specific guidelines |
Troubleshooting
"API key not configured"
Run set_api_key tool or create config.json with your key.
"Request timed out"
- Reduce number of images per request
- Enable fast mode for quicker responses
- Use
batch_analyzefor many images
"429 Rate Limit"
The server automatically retries with exponential backoff. If persistent, wait a few minutes or upgrade your OpenAI plan.
Corrupted Images (Android screencap)
If your screenshots have text/warnings embedded at the beginning (common with Android adb exec-out screencap), the MCP will automatically repair them by finding the actual image data.
To prevent this in your capture scripts:
# Redirect stderr to suppress warnings
adb exec-out screencap -p 2>/dev/null > screenshot.png
# Or specify display ID explicitly
adb exec-out screencap -d 0 -p > screenshot.png
License
MIT License - see LICENSE file for details.
Contributing
Pull requests welcome! Please ensure:
- Code follows existing style
- Add tests for new features
- Update README for new tools
Made with Claude Code
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.