vision-bridge-mcp
vision-bridge-mcp
Vision 사이드카 MCP 서버 — 텍스트 전용 LLM이 이미지를 볼 수 있게 해줍니다. OpenAI 및 Anthropic API 형식을 기본 지원합니다. 모델 기능 기반 라우팅 스킬을 포함합니다.
왜?
대부분의 LLM은 텍스트 전용입니다 — 이미지를 볼 수 없습니다. 이 MCP 서버는 이미지를 비전 가능 모델로 전달하고 텍스트 결과를 반환하여 그 격차를 해소합니다. OpenAI 호환 또는 Anthropic 호환 API 엔드포인트와 함께 작동합니다.
vision-sidecar 스킬과 함께 사용하면 호스트 모델의 기능에 따라 자동으로 라우팅됩니다:
호스트 모델 | 이미지 경로 |
텍스트 전용 (멀티모달 없음) | 이 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및 Anthropicmessages형식✅ 클립보드 지원: Windows (PowerShell) + macOS (Swift)
✅ SHA256 파일 캐시 (설정 가능한 TTL)
✅ URL 다운로드 재시도: 통과 실패 시 원격 URL을 자동으로 base64로 다운로드
✅ 추론 모델 폴백:
content가 null일 때reasoning_content추출✅ 전체 체인 타임아웃: 연결 + 헤더 + 본문 읽기
✅ 안전 제한: 16MB 응답 / 20MB 이미지 / 1MB 오류 세부 정보
✅ 타입화된 오류:
VisionInputError/VisionApiError/VisionTimeoutError✅ 포괄적인 테스트: 30개 이상의 단위 테스트 + 종단 간 스모크 테스트
✅ 새로운 npm 종속성 없음 (워크스페이스
node_modules사용)
빠른 시작
node≥ 18이 PATH에 있는지 확인하세요.환경 변수를 설정하세요:
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 anthropicMCP 클라이언트 설정에 등록하세요:
{
"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
}설정
변수 | 설명 | 예시 |
| 비전 모델 API 기본 URL. OpenAI: 보통 |
|
| API 키 |
|
| 비전 모델 이름 |
|
| (선택 사항) 요청 프로토콜: |
|
| (선택 사항) 호출당 최대 출력 토큰, 기본값 2048 |
|
| (선택 사항) 캐시 TTL(초), 기본값 3600; |
|
| (선택 사항) 캐시 디렉터리, 기본값 |
|
| (선택 사항) Windows IPv6 라우팅 문제를 위한 |
|
시작 시 처음 세 변수를 검증합니다. 누락된 경우 읽기 쉬운 오류를 표시하고 종료합니다(코드 1).
도구
analyze_image
전제 조건: 호스트 모델에 멀티모달 비전이 없는 경우에만 호출하세요. 호스트 모델이 멀티모달인 경우 네이티브 이미지 이해를 사용하세요.
image(필수, 문자열): 로컬 파일 경로 / http(s) URL / base64 dataURL /clipboard.로컬 경로: 확장자에서 MIME 유형 추론(png/jpg/jpeg/gif/webp/bmp), base64 dataURL로 변환.
http(s) URL:
image_url로 직접 전달.dataURL:
image/*base64 인코딩만 허용.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 응답 16MB, 이미지 다운로드 20MB (content-length 사전 확인 + 실제 크기 재확인).
동작 참고 사항 (실제 모델 테스트 기반):
추론 모델은
content: null을 반환하고 답변이reasoning_content에 있을 수 있음 — 자동으로 폴백.http(s) URL 통과 실패 시 미디어/다운로드 오류 → 자동으로 base64로 다운로드하고 한 번 재시도.
ocr_image
image(필수, 문자열):analyze_image와 동일한 정규화.languages(선택 사항, 문자열): 언어 힌트 (예:zh,en).format(선택 사항, 열거형):plain(기본값, 레이아웃을 유지한 일반 텍스트) /markdown(제목/목록/표 유지) /json(text+type이 있는blocks배열 반환).내부적으로
image_url.detail = "high"사용; 형식별로 프롬프트 주입.
compare_images
images(필수, 배열, 2–4개): 각각 로컬 경로 / http(s) URL / dataURL / 클립보드 지원.prompt(선택 사항, 문자열): 사용자 정의 비교 지침. 기본값: "이 이미지들을 비교하고 차이점과 유사점을 설명해 주세요."텍스트 + 여러
image_url부분 (detail = "auto")이 포함된 단일 사용자 메시지.URL이 미디어/다운로드 오류로 실패하면 모든 URL을 base64로 다운로드하고 한 번 재시도.
Vision Sidecar 스킬
vision-sidecar 스킬은 모델 기능 기반 라우팅을 제공합니다. MCP 클라이언트에서 활성화하면:
호스트 모델이 멀티모달 → 네이티브 이미지 이해 사용 (MCP 호출 없음)
호스트 모델이 텍스트 전용 → 이 MCP의
analyze_image호출예외: 멀티모달 호스트 모델에서 클립보드 읽기 가능
스킬이 없으면 호스트 모델의 동작은 완전히 변경되지 않습니다 — 침입 제로.
스킬 파일은 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 --testtest/vision.test.js: 핵심 라이브러리 단위 테스트 (입력 정규화 / 메시지 본문 / API 호출 / 오류 매핑 / 타임아웃 / 캐시 / URL 재시도 / OCR / 클립보드).test/cache.test.js: 캐시 모듈 테스트 (키 안정성 / 적중 / 만료 / 손상된 JSON / 하위 호환성).test/smoke.test.mjs: 종단 간 스모크 테스트 — stdio를 통해 실제server.js를 실행하고, 로컬 HTTP 스텁을 사용하여 비전 모델을 시뮬레이션하며, tools/list 및 도구 호출을 검증합니다.
다른 Vision MCP와의 비교
다른 비전 MCP 프로젝트와의 자세한 비교는 docs/COMPARISON.md를 참조하세요.
라이선스
MIT
This server cannot be installed
Maintenance
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
- Alicense-qualityDmaintenanceEnables text-only LLMs to analyze images by routing them to an OpenAI-compatible vision backend, supporting local files, URLs, and data URLs.34MIT
- AlicenseAqualityDmaintenanceEnables AI agents to analyze images, extract text, compare images, and analyze video through any OpenAI-compatible vision model.455019MIT
- Flicense-qualityCmaintenanceEnables text-only language models to 'see' and describe images by calling multimodal APIs (OpenAI, Anthropic) for image analysis.
- Flicense-qualityCmaintenanceEnables text-only LLMs to process images by describing them through a configurable vision model.
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
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/Catapult291/vision-bridge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server