Skip to main content
Glama

vision-bridge-mcp

Vision sidecar MCP сервер — даёт текстовым LLM возможность видеть изображения. Нативно поддерживает форматы API OpenAI И Anthropic. Включает навык маршрутизации на основе возможностей модели.

Зачем?

Большинство LLM работают только с текстом — они не могут видеть изображения. Этот MCP сервер устраняет этот пробел, передавая изображения модели, способной работать с визуальной информацией, и возвращая текстовые результаты. Он работает с любым API-эндпоинтом, совместимым с OpenAI или Anthropic.

В паре с навыком vision-sidecar он автоматически выполняет маршрутизацию на основе возможностей хост-модели:

Хост-модель

Путь к изображению

Только текст (без мультимодальности)

Вызывает analyze_image этого MCP, использует результат как текст

Мультимодальная (gpt-4o / claude vision / gemini / grok и т.д.)

Использует встроенное понимание изображений, не вызывает этот MCP

Исключение: когда в системном буфере обмена есть изображение, а в разговоре нет пути/URL/вложения, даже мультимодальные хост-модели могут передать image="clipboard".

Related MCP server: Vision MCP Server

Возможности

  • Три инструмента: analyze_image, ocr_image, compare_images

  • Двойной протокол: формат OpenAI chat/completions И Anthropic messages

  • Поддержка буфера обмена: Windows (PowerShell) + macOS (Swift)

  • Файловый кеш SHA256 с настраиваемым TTL

  • Повторная загрузка URL: автоматическая загрузка удалённых URL в base64 при неудаче сквозной передачи

  • Резервный вариант для моделей рассуждения: извлекает reasoning_content, когда content равен null

  • Таймаут полной цепочки: соединение + заголовки + чтение тела

  • Ограничения безопасности: 16 МБ ответ / 20 МБ изображение / 1 МБ детали ошибки

  • Типизированные ошибки: VisionInputError / VisionApiError / VisionTimeoutError

  • Комплексные тесты: 30+ модульных тестов + сквозные smoke-тесты

  • Ноль новых npm-зависимостей (использует workspace node_modules)

Быстрый старт

  1. Убедитесь, что node ≥ 18 находится в вашем PATH.

  2. Установите переменные окружения:

export VISION_API_BASE_URL=https://api.example.com/v1   # OpenAI: ends with /v1; Anthropic: base without /v1
export VISION_API_KEY=sk-...                             # API key
export VISION_MODEL=gpt-4o                               # Vision model name
# Optional: export VISION_API_FORMAT=anthropic            # openai (default) or anthropic
  1. Зарегистрируйте в конфигурации вашего MCP-клиента:

{
  "id": "vision-bridge-mcp",
  "transport": "stdio",
  "command": "node",
  "args": ["server.js"],
  "cwd": "/path/to/vision-bridge-mcp",
  "env": {
    "VISION_API_BASE_URL": "https://api.example.com/v1",
    "VISION_API_KEY": "your-key",
    "VISION_MODEL": "gpt-4o"
  },
  "enabled": true
}

Конфигурация

Переменная

Описание

Пример

VISION_API_BASE_URL

Базовый URL API модели зрения. OpenAI: обычно заканчивается на /v1; Anthropic: база без /v1 (автоматически добавляет /v1/messages)

https://api.openai.com/v1 или https://api.anthropic.com/

VISION_API_KEY

Ключ API

sk-...

VISION_MODEL

Имя модели зрения

gpt-4o

VISION_API_FORMAT

(Опционально) Протокол запроса: openai (по умолчанию) или anthropic

anthropic

VISION_MAX_TOKENS

(Опционально) Максимальное количество токенов в ответе на вызов, по умолчанию 2048

4096

VISION_CACHE_TTL

(Опционально) Время жизни кеша в секундах, по умолчанию 3600; 0 или отрицательное значение отключает

3600

VISION_CACHE_DIR

(Опционально) Директория кеша, по умолчанию ./.cache

/tmp/vision-cache

NODE_OPTIONS

(Опционально) --dns-result-order=ipv4first для решения проблем маршрутизации IPv6 в Windows

--dns-result-order=ipv4first

При запуске проверяются первые три переменные; отсутствующие вызывают понятную ошибку и завершение работы (код 1).

Инструменты

analyze_image

Предварительное условие: Вызывайте только тогда, когда хост-модель не обладает мультимодальным зрением. Если хост-модель мультимодальна, используйте её встроенное понимание изображений.

  • image (обязательно, строка): Локальный путь к файлу / http(s) URL / dataURL в base64 / clipboard.

    • Локальный путь: определяет MIME по расширению (png/jpg/jpeg/gif/webp/bmp), преобразует в dataURL base64.

    • http(s) URL: передаётся напрямую как image_url.

    • dataURL: принимается только кодировка base64 для image/*.

    • clipboard / clip / pasteboard: читает текущее изображение из системного буфера обмена (Windows: scripts/clipboard.ps1, macOS: scripts/clipboard.swift), записывает во временный PNG, затем нормализует. Linux не поддерживается.

  • prompt (опционально, строка): Пользовательская инструкция для распознавания. По умолчанию: "Опишите это изображение подробно."

  • Возвращает: успех { content: [{ type: "text", text }] }; неудача { content: [{ type: "text", text: "[vision_error] ..." }], isError: true }.

Внутренний запрос (разделяется по VISION_API_FORMAT):

  • OpenAI: POST {base}/chat/completions, изображение как часть image_url, аутентификация Authorization: Bearer.

  • Anthropic: POST {base}/v1/messages, изображение как блок image (source: {type: base64, media_type, data} или {type: url, url}), аутентификация x-api-key + anthropic-version: 2023-06-01 (также отправляет Authorization: Bearer для совместимости).

Таймаут по умолчанию: 60 с (охватывает соединение + чтение тела).

Ограничения безопасности: ответ API 16 МБ, загрузка изображения 20 МБ (предварительная проверка content-length + повторная проверка фактического размера).

Примечания к поведению (из реального тестирования моделей):

  • Модели рассуждения могут возвращать content: null с ответом в reasoning_content — автоматически используется резервный вариант.

  • Неудача сквозной передачи http(s) URL с ошибкой медиа/загрузки → автоматическая загрузка в base64 и повторная попытка один раз.

ocr_image

  • image (обязательно, строка): Та же нормализация, что и для analyze_image.

  • languages (опционально, строка): Подсказки по языкам (например, zh,en).

  • format (опционально, перечисление): plain (по умолчанию, обычный текст с сохранением макета) / markdown (сохраняет заголовки/списки/таблицы) / json (возвращает массив blocks с text + type).

  • Внутренне использует image_url.detail = "high"; подсказка внедряется в зависимости от формата.

compare_images

  • images (обязательно, массив, 2–4): Каждый поддерживает локальный путь / http(s) URL / dataURL / clipboard.

  • prompt (опционально, строка): Пользовательская инструкция для сравнения. По умолчанию: "Сравните эти изображения и опишите их различия и сходства."

  • Одно сообщение пользователя с текстом + несколько частей image_url (detail = "auto").

  • Если какой-либо URL завершается ошибкой медиа/загрузки, все URL загружаются в base64 и повторяется попытка один раз.

Навык Vision Sidecar

Навык vision-sidecar обеспечивает маршрутизацию на основе возможностей модели. При включении в вашем MCP-клиенте:

  • Хост-модель имеет мультимодальность → использует встроенное понимание изображений (без вызова MCP)

  • Хост-модель только текстовая → вызывает analyze_image этого MCP

  • Исключение: чтение буфера обмена доступно для мультимодальных хост-моделей

Без навыка поведение хост-модели полностью неизменно — нулевое вторжение.

См. файл навыка skill/vision-sidecar.md.

Кеширование

Включено по умолчанию. Кеширует результаты API зрения для одинаковых комбинаций "изображение + подсказка".

  • Ключ: SHA256(идентификатор изображения + "::" + подсказка). Локальные файлы/dataURL хешируются по содержимому base64; http(s) URL хешируются по строке URL.

  • Хранение: Один JSON-файл на ключ ({ result, cachedAt }), хранится в директории кеша.

  • TTL: По умолчанию 1 час. Просроченные записи автоматически удаляются при следующем обращении.

  • Отключение: VISION_CACHE_TTL=0 (или отрицательное значение).

  • Примечание: Ключ не включает имя модели. После переключения VISION_MODEL в течение периода TTL могут возвращаться кешированные результаты от старой модели — очищайте директорию кеша при переключении моделей.

Тестирование

cd vision-bridge-mcp
node --test
  • test/vision.test.js: Модульные тесты основной библиотеки (нормализация ввода / тело сообщения / вызовы API / сопоставление ошибок / таймаут / кеш / повтор URL / OCR / буфер обмена).

  • test/cache.test.js: Тесты модуля кеша (стабильность ключа / попадание / истечение / повреждённый JSON / обратная совместимость).

  • test/smoke.test.mjs: Сквозной smoke-тест — запускает реальный server.js через stdio, использует локальный HTTP-заглушку для имитации модели зрения, проверяет tools/list и вызовы инструментов.

Сравнение с другими Vision MCP

См. docs/COMPARISON.md для подробного сравнения с другими проектами Vision MCP.

Лицензия

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • LLM chat, text summarization and AI image generation

  • Image/video analysis: NSFW detection, object detection, thumbnails

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Catapult291/vision-bridge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server