Skip to main content
Glama

eyes-mcp

Дайте любому текстовому LLM глаза. Локальное зрение для вашего кодинг-агента.

Одна команда · ноль API-ключей · ничего не покидает вашу машину

License: MIT MCP llama.cpp 简体中文

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

Вот и всё. Установщик:

  1. спрашивает, какую модель вы хотите, с рекомендацией на основе вашей RAM и GPU (пропустите вопрос с помощью EYES_PRESET или --yes),

  2. устанавливает зависимости и загружает модель (~0.3–3.5GB, с докачкой),

  3. определяет, какие из ваших агентов работают на текстовых моделях, читая конфиги Claude Code / Codex / Cursor и проверяя каждую модель по базе модальностей,

  4. регистрирует 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.

Перезапустите агента и спросите: "что на этом скриншоте?"

Инструменты

Инструмент

Движок

Назначение

analyze_image(path, question?)

VLM via llama.cpp

Описания, понимание UI, визуальные вопросы и ответы

ocr_image(path)

RapidOCR (onnx)

Плотный текст: терминалы, документы, таблицы; быстро и точно

Пресеты моделей

Пресет

Модель

Загрузка

RAM

Лицензия

Примечания

nano

SmolVLM2-256M

~0.3GB

~1GB

Apache-2.0

самая маленькая полезная VLM

lfm-450m (default)

LFM2.5-VL-450M

~0.4GB

~1.2GB

Liquid

проверена; самый быстрый запуск

fast

Qwen3.5-0.8B

~0.7GB

~1.8GB

Apache-2.0

нативно мультимодальная (изображение + видео)

ocr

GLM-OCR

~1.4GB

~3.5GB

MIT

лучшая для плотного текста и документов (3M+ загрузок/мес)

strong

Qwen3.5-2B

~2GB

~3.5GB

Apache-2.0

лучший баланс качества и размера

xstrong

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. У весов моделей свои лицензии (см. таблицу пресетов); они загружаются при установке и здесь не распространяются.


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.

  • 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