Skip to main content
Glama

analyze-image-mcp

Минимальный MCP-сервер (пример подключения ниже — для OpenCode, но подойдёт любому MCP-клиенту), который даёт text-only модели доступ к отдельной vision-модели через один инструмент — analyze_image. Работает с любым OpenAI-compatible vision API (включая провайдеров с ограниченной поддержкой tool calling), так как обращается к нему напрямую, минуя механизм tools/tool_choice самого OpenCode.

Зачем это нужно

Если у тебя:

  • основная модель — только текстовая;

  • вторая модель — с поддержкой изображений, но у провайдера не включён --enable-auto-tool-choice (частая ошибка "auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set);

то стандартная отправка картинки напрямую в OpenCode ломается. Этот MCP-сервер решает проблему: он вызывает vision-модель отдельным чистым HTTP-запросом без полей tools/tool_choice, а результат (текстовое описание) отдаёт основной модели как обычный текст.

Related MCP server: vision-bridge-mcp

Как это работает

Пользователь прикладывает изображение
        │
        ▼
Основная (text-only) модель видит инструкцию:
"если есть изображение — вызови analyze_image"
        │
        ▼
MCP-сервер (analyze_image):
  1. читает файл / URL / data-URI
  2. кодирует в data:image/...;base64,...
  3. отправляет чистый OpenAI-compatible запрос
     (без tools, без tool_choice) в vision-провайдера
        │
        ▼
Текстовое описание возвращается основной модели
        │
        ▼
Основная модель отвечает пользователю

Установка

Нужен Node.js 18+ (используется встроенный fetch) и git. Пакет в npm не публикуется — ставится из GitHub. Выбери один из вариантов.

Вариант 1. Клонирование (рекомендуется)

git clone https://github.com/iljyxa/analyze-image-mcp.git ~/analyze-image-mcp
cd ~/analyze-image-mcp
npm install --omit=dev

npm install скачивает @modelcontextprotocol/sdk — официальную библиотеку протокола MCP (JSON-RPC через stdio). Папка node_modules/ должна оставаться рядом с index.js, иначе OpenCode не сможет запустить сервер.

Обновление:

cd ~/analyze-image-mcp && git pull && npm install --omit=dev

Вариант 2. Без клонирования, через npx

Ничего ставить заранее не нужно: npx сам скачает репозиторий из GitHub и зависимости при первом запуске (кэшируется). Команда для конфига приведена ниже. Чтобы зафиксировать версию, добавь тег или коммит: github:iljyxa/analyze-image-mcp#v1.0.0.

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

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

Переменная

Описание

VISION_BASE_URL

Базовый URL OpenAI-compatible API, например https://your-provider.com/v1

VISION_API_KEY

API-ключ провайдера

VISION_MODEL

ID vision-модели

Сервер сам не читает .env — значения передаются через блок environment в конфиге OpenCode (см. ниже).

Подключение к OpenCode

В opencode.json (глобальный конфиг OpenCode — ~/.config/opencode/opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vision": {
      "type": "local",
      "command": ["node", "/home/<пользователь>/analyze-image-mcp/index.js"],
      "environment": {
        "VISION_BASE_URL": "https://твой-провайдер.com/v1",
        "VISION_API_KEY": "твой-ключ",
        "VISION_MODEL": "твоя-vision-модель"
      }
    }
  }
}

Путь в command — абсолютный (~ в конфиге не раскрывается). Для варианта 2 (npx) замени command на:

"command": ["npx", "-y", "github:iljyxa/analyze-image-mcp"]

Инструкция для агента

Чтобы основная модель сама вызывала инструмент при появлении изображения, добавь правило в системный промпт / AGENTS.md / настройки агента:

Если пользователь прикладывает изображение, а активная модель не может видеть изображения напрямую, всегда сначала вызывай инструмент analyze_image с путём к изображению, затем формируй ответ на основе полученного описания.

Проверка работы

  1. Перезапусти OpenCode после изменения конфига.

  2. Спроси у агента: "есть ли у тебя инструмент analyze_image?"

  3. Приложи изображение и задай вопрос по нему — модель должна вызвать analyze_image и ответить на основе полученного описания.

Известные ограничения

  • MCP-инструмент не перехватывает изображение автоматически — модель должна сама решить вызвать analyze_image. Надёжность зависит от инструкции в системном промпте и от того, насколько хорошо основная модель следует правилам вызова инструментов.

  • Поддерживаемые форматы изображений: PNG, JPEG, GIF, WebP.

  • Максимальный размер ответа vision-модели ограничен max_tokens: 2048 — при необходимости увеличь в index.js.

Лицензия

MIT

Available Tools

1 tool
analyze_imageA

Analyzes an image using a dedicated vision model and returns a detailed text description. Use this whenever the user attaches or references an image and the active model cannot see images itself. Accepts a local file path, file:// URI, http(s) URL, or data: URL.

Inputs: image_path (required), question.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.3/5.0

    Scored across 1 tool

    Disambiguation5/5

    There is only one tool, so there is no possibility of confusing it with another. Its purpose—analyze an image and return a text description—is unambiguous, and the description clearly scopes when to use it.

    Naming Consistency5/5

    The single tool name 'analyze_image' follows a clean verb_noun snake_case convention. With no other names to conflict with, consistency is trivially perfect.

    Tool Count4/5

    The server's scope is narrowly a single capability—image analysis—so one tool is largely justified and each tool earns its place. It sits below the typical 3-15 range, and optional additions like batch analysis or multi-image comparison could be argued for, keeping it just short of ideal.

    Completeness4/5

    The tool covers the core lifecycle for its purpose: it accepts local paths, file URIs, http(s) URLs, and data URLs, so most image-referencing workflows are reachable. Minor gaps exist around batch/multiple-image handling and structured output options, but no dead ends for the primary use case.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      C
      maintenance
      Provides an MCP tool that analyzes images from local paths, URLs, or data URLs via a vision language model, returning structured descriptions (brief, detailed, summary) so text-only LLMs can understand image content.
      -
    • A
      license
      A
      quality
      D
      maintenance
      Gives text-only LLMs vision capabilities via MCP, using vision models like Xiaomi MiMo-V2.5 to analyze images, describe content, and extract text through tools such as analyze_image, describe_image, and extract_text_from_image.
      3
      1
      MIT