Skip to main content
Glama

mcp-six-eyes

텍스트 전용 AI 에이전트가 이미지를 이해할 수 있게 해주는 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

하나 이상의 이미지에 대한 일반 Q&A

describe_image

상세 장면/UI 설명 (에이전트용 "컨텍스트 덤프"로 유용)

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), 데이터 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)

  • file:// URI

  • http(s) URL

  • 데이터 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-..."
      }
    }
  }
}

환경

MCP 클라이언트 env 블록(권장) 또는 개발용 로컬 .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

서버는 stdio를 통해 MCP를 사용합니다. 애플리케이션 로그를 stdout에 작성하지 마세요.

캐싱

비전 호출은 콘텐츠 기준으로 메모리에서 메모이제이션됩니다. 캐시 키는 소스 문자열이 아닌 실제 이미지 바이트와 작업, 프롬프트, 레이블, 토큰 상한을 해시하므로, 모델이 동일한 이미지에 대해 describe_image(또는 다른 비전 도구)를 다시 호출하면 비전 API에 재청구하지 않고 이전 답변을 즉시 받아 Cached: yes로 표시합니다.

  • 기본값: 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

Quick start with npxnpx 블록을 사용하세요.

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 비용)이 있는 작업이므로 도구로 노출됩니다.

  • 텍스트 전용 출력: 비전이 없는 호스트 모델은 텍스트 콘텐츠 블록만 필요합니다.

  • 레이블이 있는 다중 이미지: 채팅 UI의 에이전트는 "이미지 1/2"에 대해 이야기합니다; 레이블은 그 근거를 안정적으로 유지합니다.

  • 작업별 도구: compare / refer / UI / chart / diagram / extract는 도구 선택에 있어 하나의 거대한 프롬프트보다 우수합니다.

  • 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

빠른 이미지 로더 스모크 스크립트

npm start

stdio에서 MCP 서버 실행

MCP Inspector로 디버그:

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

PR 및 코딩 지침은 CONTRIBUTING.md를 참조하세요.

링크

릴리스 워크플로

로컬 변경 후 관리자 경로:

# 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.

기여

이슈와 풀 리퀘스트를 환영합니다. PR을 열기 전에 npm test를 실행하고 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