eyeshot-mcp
Provides screenshot capture and vision analysis tools that enable AI to see and analyze screen content on Windows, forming an automated capture-analyze pipeline.
README
eyeshot-mcp
Built by DeepSeek
No telemetry, no external calls, no data exfiltration. Screenshots never leave your machine unless you explicitly send them to the vision API endpoint you configured.
Eyeshot (Screenshot + Vision) — two MCP tools that give your AI the ability to see, forming an automated capture → analyze pipeline on Windows.
If your AI already has vision (GPT-4V, Claude, etc.), you only need the screenshot MCP. The vision MCP is for AIs without built-in vision support.
Compatibility
Works with any MCP-compatible client: opencode, Claude Desktop, Cursor, VS Code (via extensions), or any other MCP host. These are standard MCP tools — not tied to any specific platform.
Use Cases
- Automated UI testing — After writing frontend code, let AI launch the browser, screenshot, and verify the page
- OCR text recognition — Capture a window or full screen, read text via vision model
- App UI verification — Launch a desktop app, screenshot, and check if UI renders correctly
- AI-assisted debugging — Program crashes? Take a screenshot and let AI look at it
Installation
Option 1: Let AI install it (Recommended)
Send this prompt to your AI assistant, it will handle everything:
"Clone https://github.com/yourname/eyeshot-mcp to my machine, install its dependencies, then configure it as an MCP server in my opencode config file."
Option 2: Manual install
git clone https://github.com/yourname/eyeshot-mcp.git
pip install -r requirements.txt
Configuration
opencode
Add to ~\.config\opencode\opencode.jsonc:
{
"mcp": {
"screenshot": {
"type": "local",
"command": ["python", "C:\\path\\to\\eyeshot-mcp\\screenshot_mcp.py"],
"enabled": true
},
"vision": {
"type": "local",
"command": ["python", "C:\\path\\to\\eyeshot-mcp\\vision_mcp.py"],
"enabled": true
}
}
}
Environment Variables
| Variable | Default | Description |
|---|---|---|
VISION_API_KEY |
(required) | Vision API key |
VISION_API_URL |
https://api.openai.com/v1/chat/completions |
Any OpenAI-compatible endpoint. Example: OpenRouter https://openrouter.ai/api/v1/chat/completions |
VISION_MODEL |
qwen/qwen2.5-vl-32b-instruct |
Any VL model |
VISION_MAX_WIDTH |
2048 |
Max image width sent to API (0 = no resize) |
VISION_MAX_TOKENS |
512 |
Max tokens in API response |
SCREENSHOT_BROWSER_CLASSES |
(optional) | Comma-separated extra browser window classes |
Tool Reference
screenshot_capture_to_file
Capture an existing window or full screen, save to screenshot.png, return path.
| Parameter | Type | Default | Description |
|---|---|---|---|
window_title |
str | "" |
Window title, empty = full screen |
resize_width |
int | 0 |
Screenshot resize width, 0 = auto based on display resolution |
Auto-resolution logic:
- 4K (3840) → resize to 1920
- 1440p (2560) → resize to 1280
- 1080p (1920) → resize to 960
- Below 1920 → no resize, keep original
screenshot_test_window
Launch program → Wait → Capture → Close (fully automatic).
| Parameter | Type | Default | Description |
|---|---|---|---|
command |
str | required | Launch command, browsers must include --new-window |
wait_seconds |
int | required | Wait seconds after launch |
maximized |
bool | required | Whether to maximize the window |
window_title |
str | "" |
Which window to capture; empty = full screen, no close |
resize_width |
int | 0 |
Same as capture_to_file |
Browser tab protection: When a browser is detected without --new-window, closing is skipped to protect other tabs. With --new-window, the exclusive window is closed normally.
vision_analyze_image
Analyze an image with a vision model, return text result.
| Parameter | Type | Default | Description |
|---|---|---|---|
file_path |
str | required | Image path, e.g. screenshot.png |
prompt |
str | "描述这张图片的内容" |
Your question, supports any language |
Browser Support
| Window Class | Browser |
|---|---|
Chrome_WidgetWin_1 |
Chrome, Edge (Chromium), Brave, Opera, Vivaldi |
MozillaWindowClass |
Firefox |
MSEdgeWindowClass |
Edge (UWP / legacy) |
ApplicationFrameWindow |
UWP apps & WebView |
Add custom classes: SCREENSHOT_BROWSER_CLASSES=MyClass1,MyClass2
FAQ
Q: Screenshot text is blurry?
A: Increase resize_width (e.g. 4096) to keep original resolution.
Q: Don't know the window title?
A: Use tasklist to list running processes, or capture full screen and let the vision model identify it.
Q: Why didn't the browser window close?
A: Closing is skipped without --new-window to protect other tabs. Add --new-window to your launch command.
Q: Can I use a different vision model?
A: Yes. Set VISION_API_URL and VISION_MODEL env vars. Compatible with any OpenAI-compatible API.
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。