Skip to main content
Glama

mcp-six-eyes

MCP-сервер, который дает текстовым ИИ-агентам возможность понимать изображения, включая диалоги с несколькими изображениями вроде «обратись к изображению 1 и 2» или «сравни эти скриншоты».

Текстовые модели не видят пиксели. Этот сервер заполняет этот пробел: агенты вызывают инструменты зрения, сервер общается с мультимодальным API, и агент получает обратно обычный текст.

Agent (text-only)
   │  tool call: analyze / compare / refer / ocr / …
   ▼
mcp-six-eyes (this server)
   │  1..N images: path | URL | base64  (labels: 1, 2, before, …)
   ▼
Vision API (OpenAI / Anthropic / Gemini / OpenRouter / custom)
   │
   ▼
Plain-text description / OCR / comparison / structured extract
   │
   ▼
Agent continues reasoning with text

Почему это работает

MCP предоставляет инструменты, которые агент может вызывать. Агенту не нужно встроенное зрение:

  1. Пользователь загружает или указывает одно или несколько изображений

  2. Агент вызывает инструмент зрения с этими источниками (и необязательными метками)

  3. Сервер загружает изображение(я) и отправляет их мультимодальной модели

  4. Сервер возвращает только текст со стабильными метками изображений

  5. Текстовый агент использует этот текст, как и любой другой результат инструмента

Related MCP server: MCP Vision Server

Инструменты

Инструмент

Назначение

analyze_image

Общие вопросы и ответы по одному или нескольким изображениям

describe_image

Подробное описание сцены/интерфейса (отличный «дамп контекста» для агентов)

ocr_image

Извлекает видимый текст (разделы по изображениям при нескольких)

compare_images

Сравнение 2+ изображений (до/после, A/B, варианты)

refer_images

Отвечает на вопросы со ссылками на «изображение 1», «обе фигуры» и т.д.

inspect_ui

Проверка UI/UX-скриншотов и многошаговых сценариев

read_chart

Графики, диаграммы, таблицы, дашборды

explain_diagram

Объяснение архитектуры / блок-схем / ERD / диаграмм с доски

extract_from_images

Структурированный JSON из форм, чеков, таблиц, этикеток

vision_status

Показывает настроенного провайдера/модель и лимиты

Входные изображения

Каждый инструмент для изображений принимает:

  • Одно изображение: image: локальный путь, file://, http(s), data URL или base64

  • Несколько изображений: images: массив источников или объектов { source, label?, mimeType? }

  • Можно передавать и то, и другое; они объединяются

Метки по умолчанию — "1", "2", … поэтому промпты агента вроде «сравни изображение 1 и 2» работают четко. Пользовательские метки тоже поддерживаются ("before", "after", "fig-a").

# one image
analyze_image({ image: "./shot.png", prompt: "What failed?" })

# multi-image with default labels 1..n
compare_images({
  images: ["./a.png", "./b.png"],
  prompt: "What changed in the error state?"
})

# multi-image with explicit labels (best for long threads)
refer_images({
  images: [
    { source: "./login.png", label: "1" },
    { source: "./dashboard.png", label: "2" }
  ],
  prompt: "Using image 1 and image 2, is the user authenticated?"
})

Поддерживаемые формы источника:

  • локальный путь к файлу (/path/to/image.png или C:\path\to\image.png)

  • URI file://

  • URL http(s)

  • data URL (data:image/png;base64,...)

  • сырой base64 (передайте mimeType, когда это возможно)

Требования

  • Node.js 20+

  • Ключ API для модели со зрением (OpenAI, Anthropic, Google, OpenRouter или любая OpenAI-совместимая конечная точка)

Установка

Опубликован на npm как mcp-six-eyes.

npx -y mcp-six-eyes

Или установите глобально / как зависимость проекта:

npm install -g mcp-six-eyes
# or
npm install mcp-six-eyes

Большинство людей подключают его к MCP-клиенту, а не запускают вручную. Пример конфигурации Claude Desktop / Cursor:

{
  "mcpServers": {
    "mcp-six-eyes": {
      "command": "npx",
      "args": ["-y", "mcp-six-eyes"],
      "env": {
        "VISION_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Почему npx здесь популярен:

  • не нужна глобальная установка

  • клиент запускает сервер по требованию

  • -y пропускает запрос установки при первом запуске

  • npm кэширует пакет для последующих запусков

Локальная разработка

npm install
npm run build

Затем либо:

{
  "mcpServers": {
    "mcp-six-eyes": {
      "command": "npx",
      "args": ["-y", "."],
      "env": {
        "VISION_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

или укажите Node на собранную точку входа:

{
  "mcpServers": {
    "mcp-six-eyes": {
      "command": "node",
      "args": ["./build/index.js"],
      "env": {
        "VISION_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Переменные окружения

Задайте ключи провайдера в блоке env MCP-клиента (рекомендуется) или в локальном .env для разработки.

Минимальная настройка OpenAI:

VISION_PROVIDER=openai
OPENAI_API_KEY=sk-...

Необязательные модель / лимиты:

VISION_MODEL=gpt-4o-mini
VISION_MAX_IMAGES=10
VISION_MAX_IMAGE_BYTES=20971520
VISION_CACHE_MAX_ENTRIES=200

Сервер общается по MCP через stdio. Не пишите журналы приложения в stdout.

Кэширование

Вызовы моделей зрения мемоизируются по содержимому, в памяти. Ключ кэша хэширует фактические байты изображения плюс задачу, промпт, метки и лимит токенов (а не строку источника), поэтому модель, повторно вызывающая describe_image (или любой другой инструмент зрения) для того же изображения, мгновенно получает предыдущий ответ с пометкой Cached: yes, без повторной оплаты API зрения.

  • По умолчанию: VISION_CACHE_MAX_ENTRIES=200 (ограниченный, первыми удаляются самые старые)

  • Установите VISION_CACHE_MAX_ENTRIES=0, чтобы отключить

  • Для данного ключа выигрывает первый ответ; измененный файл или URL создает новый ключ

  • Неудачные и резервные ответы никогда не кэшируются

  • Кэш живет только в течение жизни процесса (без сохранения на диск)

Заметки по клиентам

Claude Desktop

Файл конфигурации:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %AppData%\Claude\claude_desktop_config.json

Используйте блок npx из Быстрый старт с npx.

Cursor

Добавьте тот же блок сервера в .cursor/mcp.json (проект) или в вашу глобальную конфигурацию Cursor MCP.

Другие stdio MCP-хосты

Любой хост, который может запустить:

npx -y mcp-six-eyes

и передать переменные окружения, будет работать.

Провайдеры

Провайдер

VISION_PROVIDER

Переменная окружения для ключа

Модель по умолчанию

OpenAI

openai

OPENAI_API_KEY

gpt-4o-mini

Anthropic

anthropic

ANTHROPIC_API_KEY

claude-sonnet-4-5

Google Gemini

google

GOOGLE_API_KEY

gemini-2.0-flash

OpenRouter

openrouter

OPENROUTER_API_KEY

openai/gpt-4o-mini

Пользовательский OpenAI-совместимый

custom

VISION_API_KEY + VISION_BASE_URL

задайте VISION_MODEL

Необязательный запасной вариант:

VISION_FALLBACK_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...

Пример использования агентом

Один скриншот

User: What's wrong in this screenshot? ./screenshots/build-error.png

Agent → ocr_image({ image: "./screenshots/build-error.png" })
Agent → analyze_image({
  image: "./screenshots/build-error.png",
  prompt: "Explain the error and suggest a fix"
})
Agent → answers in plain text

Несколько изображений: ссылки / сравнение

User: I uploaded two shots. Compare image 1 and 2. Did the fix work?

Agent → compare_images({
  images: [
    { source: "./before.png", label: "1" },
    { source: "./after.png", label: "2" }
  ],
  prompt: "Did the red error banner disappear after the fix?"
})
User: Refer image 1 and image 2. Which CTA is primary?

Agent → refer_images({
  images: [
    { source: "./landing-a.png", label: "1" },
    { source: "./landing-b.png", label: "2" }
  ],
  prompt: "Which image has the stronger primary CTA and why?"
})

UI-сценарий, график, диаграмма, структурированное извлечение

inspect_ui({
  images: ["./step1.png", "./step2.png", "./step3.png"],
  prompt: "Describe the checkout flow and any friction"
})

read_chart({
  image: "https://example.com/revenue.png",
  prompt: "Summarize the trend and call out outliers"
})

explain_diagram({
  image: "./architecture.png",
  prompt: "List services and data flow"
})

extract_from_images({
  image: "./receipt.jpg",
  schema: "{\"merchant\":string,\"date\":string,\"total\":number,\"items\":[{\"name\":string,\"price\":number}]}"
})

Архитектура

src/
  index.ts                 MCP server + tools
  config.ts                env/provider config
  image.ts                 path/URL/base64 loader + multi-image labels
  prompts.ts               task prompts (analyze/describe/ocr/compare/...)
  providers/
    index.ts               provider router + fallback
    openai-compatible.ts   OpenAI / OpenRouter / custom (multi-image)
    anthropic.ts           Claude vision (multi-image)
    google.ts              Gemini vision (multi-image)
    types.ts               shared contracts
test/                      unit tests (node:test, mocked providers)
assets/
  logo.png                 project logo

Заметки по дизайну

  • Инструменты, а не ресурсы: понимание изображений — это действие с побочными эффектами (стоимость API), поэтому оно предоставляется в виде инструментов.

  • Текстовый вывод: хост-моделям без зрения нужны только текстовые блоки содержимого.

  • Метки для нескольких изображений: агенты в чат-интерфейсах говорят об «изображении 1/2»; метки сохраняют эту привязку стабильной.

  • Специализированные инструменты: сравнение / отсылка / UI / график / диаграмма / извлечение лучше одного мега-промпта для выбора инструмента.

  • Транспорт stdio: самая простая локальная интеграция для десктопных агентов.

  • Без логов в stdout: stdout зарезервирован для JSON-RPC; диагностика идет в stderr.

  • Абстракция провайдера: меняйте бэкенды, не меняя имена инструментов, которые изучил агент.

Разработка

npm install
npm test
npm start

Скрипт

Назначение

npm run build

Компилирует TypeScript в build/

npm run typecheck

Только проверка типов

npm test

Сборка + полный набор модульных тестов

npm run test:unit

Запуск тестов для текущего build/

npm run smoke

Быстрый smoke-скрипт загрузчика изображений

npm start

Запуск MCP-сервера на stdio

Отлаживайте с помощью MCP Inspector:

npx @modelcontextprotocol/inspector node ./build/index.js

См. CONTRIBUTING.md с рекомендациями по PR и стилю кода.

Ссылки

Процесс релиза

Действия мейнтейнера после локальных изменений:

# one-time
npm login

# bump version + CHANGELOG, then ship
npm test
npm publish --access public

Необязательный помощник (тесты, затем npm publish):

npm run release

Безопасность

  • Ключи API остаются в переменных окружения / конфигурации клиента и никогда не попадают в ответы инструментов

  • Загрузка удаленных URL — это явные входные данные инструментов; осторожно обращайтесь с недоверенными URL

  • Большие изображения отклоняются через VISION_MAX_IMAGE_BYTES (по умолчанию 20MB)

  • Количество изображений на вызов ограничено через VISION_MAX_IMAGES (по умолчанию 10)

  • Кэш ответов хранит в памяти только хэши содержимого и текст результатов; ничего не сохраняется на диск

Полная политика: SECURITY.md.

Участие в разработке

Приветствуются issue и pull request. Пожалуйста, запустите npm test перед открытием PR и прочитайте CONTRIBUTING.md.

Лицензия

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

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

  • MCP server for Flux AI image generation

  • MCP server for NanoBanana AI image generation and editing

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/RimunAce/mcp-six-eyes'

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