eyes-mcp
eyes-mcp
Дайте любому текстовому LLM глаза. Локальное зрение для вашего кодинг-агента.
Одна команда · ноль API-ключей · ничего не покидает вашу машину
DeepSeek, GLM, Qwen-Coder, Llama… отличные модели, но все слепые.
❌ Без глаз
Вы вставляете скриншот в своего агента (работающего на текстовой модели через Claude Code / Codex / Cursor):
> Here's the error in my UI, fix it [screenshot.png]
I'm sorry — I cannot see images. Please describe the error in text.Related MCP server: OpenSight MCP
✅ С глазами
Агент вместо этого обращается к локальной VLM + OCR и сам читает скриншот:
> Here's the error in my UI, fix it [screenshot.png]
I see a React hydration error in `CartDrawer.tsx:142`. The OCR shows:
"Hydration failed because the server rendered HTML didn't match the client." …Быстрый старт
git clone https://github.com/JamesbbBriz/eyes-mcp
cd eyes-mcp && ./scripts/install.shВот и всё. Установщик:
спрашивает, какую модель вы хотите, с рекомендацией на основе вашей RAM и GPU (пропустите вопрос с помощью
EYES_PRESETили--yes),устанавливает зависимости и загружает модель (~0.3–3.5GB, с докачкой),
определяет, какие из ваших агентов работают на текстовых моделях, читая конфиги Claude Code / Codex / Cursor и проверяя каждую модель по базе модальностей,
регистрирует eyes-mcp только там, где это нужно. Мультимодальные агенты пропускаются автоматически.
# options:
EYES_PRESET=fast ./scripts/install.sh # Qwen3.5-0.8B, natively multimodal
HF_ENDPOINT=https://hf-mirror.com ./install.sh # mainland-CN mirror
./install.sh --yes # accept all recommendations, no prompts
./install.sh --dry-run # preview without changing anythingНужна только проверка модальности? python3 scripts/detect_modality.py
Требования: Python ≥3.11, llama.cpp (brew install llama.cpp), ~1GB RAM.
Ручная регистрация
Пропустили автоматическую установку или используете агента, которого установщик не знает? Добавьте его вручную.
Claude Code (~/.claude.json → mcpServers):
"eyes-mcp": {
"command": "uv",
"args": ["--directory", "/ABS/PATH/eyes-mcp", "run", "eyes-mcp"],
"env": { "EYES_PRESET": "lfm-450m" }
}Codex (~/.codex/config.toml):
[mcp_servers.eyes-mcp]
command = "uv"
args = ["--directory", "/ABS/PATH/eyes-mcp", "run", "eyes-mcp"]
env = { EYES_PRESET = "lfm-450m" }Cursor (.cursor/mcp.json): та же структура, что и у Claude Code.
Перезапустите агента и спросите: "что на этом скриншоте?"
Инструменты
Инструмент | Движок | Назначение |
| VLM via llama.cpp | Описания, понимание UI, визуальные вопросы и ответы |
| RapidOCR (onnx) | Плотный текст: терминалы, документы, таблицы; быстро и точно |
Пресеты моделей
Пресет | Модель | Загрузка | RAM | Лицензия | Примечания |
| SmolVLM2-256M | ~0.3GB | ~1GB | Apache-2.0 | самая маленькая полезная VLM |
| LFM2.5-VL-450M | ~0.4GB | ~1.2GB | проверена; самый быстрый запуск | |
| Qwen3.5-0.8B | ~0.7GB | ~1.8GB | Apache-2.0 | нативно мультимодальная (изображение + видео) |
| GLM-OCR | ~1.4GB | ~3.5GB | MIT | лучшая для плотного текста и документов (3M+ загрузок/мес) |
| Qwen3.5-2B | ~2GB | ~3.5GB | Apache-2.0 | лучший баланс качества и размера |
| Qwen3.5-4B | ~3GB | ~6GB | Apache-2.0 | максимальный уровень (рекомендуется GPU) |
Скрытые дополнения (всё ещё одна команда): smol500 (SmolVLM2-500M), paddle (PaddleOCR-VL-1.6), qwen3-2b (Qwen3-VL-2B).
Подойдёт любой другой GGUF. Укажите на него через env и полностью пропустите пресеты:
EYES_MODEL_DIR=~/models/my-vlm VLM_MODEL_FILE=model-Q4.gguf VLM_MMPROJ_FILE=mmproj.ggufХорошие кандидаты, не входящие в пресеты: LFM2.5-VL-1.6B/3B, InternVL3.5-2B/4B, MiniCPM-V-4.6, DeepSeek-OCR, dots.ocr, gemma-3n-E2B, moondream2. Подойдёт всё, что llama.cpp поддерживает с файлом mmproj.
Переключайтесь в любой момент: задайте EYES_PRESET и снова запустите ./scripts/download_models.sh. Не уверены, какую выбрать? python3 scripts/choose_model.py покажет ваши RAM/GPU и отметит рекомендацию.
Как это работает
Claude Code / Codex / Cursor
│ MCP stdio
▼
eyes-mcp (stateless, mcp SDK 2.x)
├─ analyze_image → llama.cpp llama-server (local VLM) "understand"
└─ ocr_image → RapidOCR (onnx, ~20MB) "extract text"Жизненный цикл следует за вашим агентом: VLM-сервер запускается при старте MCP и завершается при выходе агента, так что у вас не остаётся осиротевших процессов или демона, за которым нужно следить.
Плавающий порт: VLM никогда не привязывается к фиксированному порту (прощай, "порт 8080 уже занят"), поэтому она сосуществует с вашими другими локальными сервисами.
Переиспользование внешней VLM: если у вас уже запущена VLM на
VLM_BASE_URL, eyes-mcp использует её вместо запуска собственной.
Зачем
Самые дешёвые и лучшие кодинг-модели сейчас (DeepSeek-V4-Flash, GLM-5.x, Qwen-Coder) — текстовые. Каждая платформа предполагает, что вы можете вставить скриншот, и каждая из этих моделей молча с этим проваливается. eyes-mcp — недостающий сайдкар: небольшая локальная VLM плюс OCR, обёрнутая в жизненный цикл, который ваш агент уже понимает.
Дорожная карта
Ленивый запуск VLM (запуск при первом вызове инструмента, а не при старте MCP)
screenshot_analyze(захват экрана без файла)PDF-страницы → зрение
npx eyes-mcp— установка одной командойШаблоны промптов для каждой модели (OCR-модели llama.cpp требуют конкретных промптов)
FAQ
Имеет ли значение модель моего агента?
Только в том смысле, что она должна быть текстовой, чтобы это было полезно. Мультимодальные модели (GPT, Claude, GLM-V) уже видят изображения, так что не заморачивайтесь.
Нужен GPU?
Нет. Всё отлично работает на CPU, а llama.cpp автоматически подхватывает Apple Metal или CUDA, если они есть.
Где хранятся модели?
~/.eyes-mcp/models/<preset>/. Удалите их для сброса.
Лицензия
MIT. У весов моделей свои лицензии (см. таблицу пресетов); они загружаются при установке и здесь не распространяются.
This server cannot be deployed
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Grabbit gives AI agents eyes on the web through a hosted MCP server. Send a public URL and get a pixel-perfect hosted image back, without maintaining Chromium, Playwright, or a browser fleet. Capture a full page, exact viewport, or single CSS selector as PNG, JPEG, or WebP. Grabbit handles cookie and consent banners, waits for JavaScript-heavy pages, blocks private and internal URLs, supports safe retries with idempotency keys, and delivers async results through signed webhooks. Completed captures include a CDN URL. Connect with OAuth 2.1 or an API key. Grabbit works with Claude, Cursor, Codex, and any MCP client. Live captures cost $0.002 each. The $50 annual plan includes 25,000 prepaid credits that never reset or expire. Free test keys return placeholder images, so you can wire up the integration before paying. Home: https://grabbit.live Docs: https://grabbit.live/screenshot-api Built by BrainGrid.
- mcpOAuthcom.screenshotink
Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.
Scrape, crawl and search the web for AI agents via MCP.
Related MCP Servers
- AlicenseAqualityBmaintenanceBridges vision models to text-only coding models using Florence-2, enabling non-vision LLMs to describe images, extract text, and analyze screenshots via MCP tools.6MIT
- AlicenseNot gradedqualityBmaintenanceMulti-backend AI vision for MCP agents. Analyze images, screenshots, and documents using local Ollama models or cloud APIs like OpenAI, Google Gemini, and OpenRouter.MIT
- AlicenseNot gradedqualityAmaintenanceLocal vision-capable MCP server that lets AI agents describe screenshots, UI, charts, and photos via vision and OCR tools, with support for multiple providers and automatic fallback.6MIT
- AlicenseNot gradedqualityCmaintenanceAdds image recognition and UI grounding capabilities to text-only LLMs through MCP tools, supporting local and cloud vision backends.40 npmMIT