mcp-six-eyes
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 предоставляет инструменты, которые агент может вызывать. Агенту не нужно встроенное зрение:
Пользователь загружает или указывает одно или несколько изображений
Агент вызывает инструмент зрения с этими источниками (и необязательными метками)
Сервер загружает изображение(я) и отправляет их мультимодальной модели
Сервер возвращает только текст со стабильными метками изображений
Текстовый агент использует этот текст, как и любой другой результат инструмента
Related MCP server: MCP Vision Server
Инструменты
Инструмент | Назначение |
| Общие вопросы и ответы по одному или нескольким изображениям |
| Подробное описание сцены/интерфейса (отличный «дамп контекста» для агентов) |
| Извлекает видимый текст (разделы по изображениям при нескольких) |
| Сравнение 2+ изображений (до/после, A/B, варианты) |
| Отвечает на вопросы со ссылками на «изображение 1», «обе фигуры» и т.д. |
| Проверка UI/UX-скриншотов и многошаговых сценариев |
| Графики, диаграммы, таблицы, дашборды |
| Объяснение архитектуры / блок-схем / ERD / диаграмм с доски |
| Структурированный JSON из форм, чеков, таблиц, этикеток |
| Показывает настроенного провайдера/модель и лимиты |
Входные изображения
Каждый инструмент для изображений принимает:
Одно изображение:
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.jsonWindows:
%AppData%\Claude\claude_desktop_config.json
Используйте блок npx из Быстрый старт с npx.
Cursor
Добавьте тот же блок сервера в .cursor/mcp.json (проект) или в вашу глобальную конфигурацию Cursor MCP.
Другие stdio MCP-хосты
Любой хост, который может запустить:
npx -y mcp-six-eyesи передать переменные окружения, будет работать.
Провайдеры
Провайдер |
| Переменная окружения для ключа | Модель по умолчанию |
OpenAI |
|
|
|
Anthropic |
|
|
|
Google Gemini |
|
|
|
OpenRouter |
|
|
|
Пользовательский OpenAI-совместимый |
|
| задайте |
Необязательный запасной вариант:
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Скрипт | Назначение |
| Компилирует TypeScript в |
| Только проверка типов |
| Сборка + полный набор модульных тестов |
| Запуск тестов для текущего |
| Быстрый smoke-скрипт загрузчика изображений |
| Запуск MCP-сервера на stdio |
Отлаживайте с помощью MCP Inspector:
npx @modelcontextprotocol/inspector node ./build/index.jsСм. CONTRIBUTING.md с рекомендациями по PR и стилю кода.
Ссылки
npm: mcp-six-eyes
Мейнтейнер: rimunace
Процесс релиза
Действия мейнтейнера после локальных изменений:
# 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.
Лицензия
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that analyzes images with Google's Gemini vision models, allowing agents to describe or ask questions about images without bloating context.1MIT
- FlicenseNot gradedqualityBmaintenanceA versatile MCP server that adds vision capabilities (image analysis, OCR, image/video generation) to AI models lacking native vision, with support for multiple providers and automatic task routing.1
- AlicenseNot gradedqualityCmaintenanceMCP server for analyzing images using multiple vision LLM providers (OpenCode, OpenAI, Anthropic, Google, and custom OpenAI-compatible endpoints). Provides tools to analyze single or multiple images, list providers, and test vision capabilities.MIT
- AlicenseAqualityCmaintenanceEnables non-vision LLMs to analyze images via any OpenAI-compatible vision API. Hardened against truncation, empty responses, and timeouts for reliable analysis.1177MIT
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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