Content
👁️
<p align="center">
<b>Give DeepSeek the ability to see.</b><br>
Screenshot → clipboard → MCP → Qwen-VL → text → your text-only model can "see"
</p>
<p align="center">
<b><i>Give DeepSeek the ability to see.</i></b><br>
<i>Screenshot → clipboard → Qwen-VL → text → your text-only model can "see"</i>
</p>
<p align="center">
<a href="#-one-click-installation">🤖 One-Click Installation</a> ·
<a href="#-quick-start">Quick Start</a> ·
<a href="#-why-needed">Why Needed</a> ·
<a href="#-client-configuration">Client Configuration</a> ·
<a href="README_EN.md">English</a>
</p>
---
## One-Click Installation
Paste the following prompt directly to Claude DeepSeek / ChatGPT the AI will automatically help you cloning, installation, and configuration> Please help me install deepeyes, repository address https.com/290298661-pixelseek-eyes. Follow the README: clone → create venv → pip install -e . → guide me to obtain ModelScope API Key → configure MCP client.
[📋 Full Installation Prompt](docs/INSTALL_PROMPT_EN.md)
---
### ⚡ Manual Installation / Quick Start
```bash
# 1. Clone
git clone https://github.com/290298661-pixel/deepseek-eyes.git
cd deepseek-eyes
# 2. Install
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
pip install -e .
# 3. Get free API Key (2000 times a day, 500 times per model)
# ① Open https://modelscope.cn to register/login
# ② Click the top right avatar → Personal Center → Access Token
# or directly visit: https://modelscope.cn/my/myaccesstoken
# ③ Bind an Aliyun account for the first use (required, follow the page guide)
# ④ Click "New Access Token" → name → generate → copy
# ⑤ The token format is ms-xxxxxxxxxxxx, remove the ms- prefix when using!
# 4. Test clipboard (run after copying an image)
python examples/smoke_test.py
# Expected: ✅ Success: Clipboard image saved to ...\clip_xxx.png
# 5. Configure MCP client (see below)
```
### 🎯 Why Needed?
DeepSeek V4 / GLM text models' APIs **lack visual capabilities** - you paste a screenshot, and it can only tell you "I see a file path".
**deepseek-eyes** fills this gap:
```
You take a screenshot
│
▼
┌─────────────────┐
│ deepseek-eyes │
│ reads clipboard image │
│ → sends to Qwen-VL │
│ → returns text description │
└────────┬────────┘
DeepSeek: "This is a login page with username and password input fields..."
```
**Comparison with similar tools:**
| | deepseek-eyes | Original clipboard-vision-mcp | ErlichLiu/deepseek-vision |
|---|---|---|---|
| Visual backend | Qwen-VL | Groq (requires VPN) | Customizable |
| Free quota | 500 times/day | Groq free tier | Depends on backend |
| Language | English first | English | Chinese |
| Method | MCP | MCP stdio | HTTP proxy |
### 🔧 How it Works
```
┌──────────────────┐ MCP ┌──────────────────┐ HTTPS ───┐
│ / │ ──────▶ │ deepseek- │ ────────▶│ ModelScope API │
│ Opencode │ │ (Python) │ │wen3-VL- │
│ (Deep) │ │ │ (domestic direct connection, free) │
└──────────────────┘ └┘ └───────────────────┘
│
▼
Reads system clipboard (P → base64 → sends → returns Chinese description → deletes temporary file
```
### 📋 Tool| Tool | Function |
|------|------|
| `analyze_clipboard` | Analyze clipboard image |
extract_text_from_clipboard` | OCR extract text from clipboard image |
| `describe_ui_from_clip | Analyze clipboard UI screenshot |
| `diagnose_error_from_clip | Diagnose clipboard error screenshot |
| `code_from_clipboard` code from clipboard code screenshot `analyze_image` | Analyze disk image file |
| `extract_text` | Disk image OCR |
describe_ui` | Analyze screenshot |
| `diagnose_error` | Diagnose disk error screenshot `understand_diagram` | Interpret flowchart/architecture diagram `analyze_chart` | Analyze |
| `codecreenshot Extract code from screenshot |
### 🔌
**Claude Code`.claude/settings.json`):
```json
{
"mcpServers": {
"deepseek-eyes": {
"command": "D:\\GitHub\\deepseek-eyes\\.venv\\Scripts\\python.exe",
"args": ["-m", "deepseek_eyes"],
"env": {
"MODELSCOPE_API_KEY": "your_API_Key"
}
}
}
}
```
> ⚠️ ` must use the absolute path of the Python executable in the venv.
encode** (`%AP%\opencode\opencode.json`):
```json
{
"mcp": {
deepseek-eyes": {
"type": "local",
"command": ["D:\\GitHub\\deepseek-eyes\\.venv\\Scripts\\python.exe", "-m", "deepseek_eyes"],
"enabled": true,
"environment": {
"MODELSCOPE_API_KEY": "your_API_Key"
}
}
}
```
### ❓ FAQ
See [Troubleshooting/TROUBLESHOOTING.md)
###
- Local std runs, no network ports exposed Temporary clipboard files deleted automatically after analysis
- Only accepts image formats (`.png .jpg .jpeg .gif .webp .bmp`), preventing LLM injection and arbitrary file reading
- File size limited to 20MB, with magic number verification
- Images sent to ModelScope API via base64 encoding, see their [Privacy Policy](https://modelscope.cn/privacy)
### 🗺️ Roadmap
- [ ] Support DashScope (official Aliyun) as a backup backend
- [ ] Multiple API Key rotation
- [ ] Video keyframe extraction and analysis
## English
See [README_EN.md](README_EN.md) for the full English version.
## 🙏 Acknowledgements
on [Capetlevrai/clipboard-vision-mhttps://github.com/Capetlevrai/clipboard-mcp) (MIT Visual model: Qwen-VL via [ModelScope](https://modelscope.cn)
##
MIT © Shaohan He