vision-bridge-mcp
vision-bridge-mcp
Servidor MCP sidecar para visión: permite que los LLM solo de texto puedan ver imágenes. Soporta de forma nativa los formatos de API de OpenAI y Anthropic. Incluye habilidad de enrutamiento según capacidades del modelo.
¿Por qué?
La mayoría de los LLM son solo de texto: no pueden ver imágenes. Este servidor MCP cierra esa brecha enviando imágenes a un modelo con capacidad de visión y devolviendo resultados de texto. Funciona con cualquier endpoint de API compatible con OpenAI o Anthropic.
Cuando se combina con la habilidad vision-sidecar, enruta automáticamente según las capacidades del modelo anfitrión:
Modelo anfitrión | Ruta de imagen |
Solo texto (sin multimodal) | Llama a |
Multimodal (gpt-4o / claude vision / gemini / grok, etc.) | Usa la comprensión nativa de imágenes, no llama a este MCP |
Excepción: cuando el portapapeles del sistema tiene una imagen y la conversación no tiene ruta/URL/adjunto, incluso los modelos anfitriones multimodales pueden pasar image="clipboard".
Related MCP server: Vision MCP Server
Características
✅ Tres herramientas:
analyze_image,ocr_image,compare_images✅ Protocolo dual: formato
chat/completionsde OpenAI Ymessagesde Anthropic✅ Soporte de portapapeles: Windows (PowerShell) + macOS (Swift)
✅ Caché de archivos SHA256 con TTL configurable
✅ Reintento de descarga de URL: descarga automáticamente URLs remotas a base64 cuando falla el paso directo
✅ Fallback para modelos de razonamiento: extrae
reasoning_contentcuandocontentes nulo✅ Tiempo de espera completo de la cadena: conexión + cabeceras + lectura del cuerpo
✅ Límites de seguridad: 16 MB de respuesta / 20 MB de imagen / 1 MB de detalle de error
✅ Errores tipados:
VisionInputError/VisionApiError/VisionTimeoutError✅ Pruebas exhaustivas: más de 30 pruebas unitarias + pruebas de humo de extremo a extremo
✅ Cero nuevas dependencias npm (usa
node_modulesdel espacio de trabajo)
Inicio rápido
Asegúrate de que
node≥ 18 esté en tu PATH.Establece las variables de entorno:
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 anthropicRegístrate en la configuración de tu cliente MCP:
{
"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
}Configuración
Variable | Descripción | Ejemplo |
| URL base de la API del modelo de visión. OpenAI: normalmente termina en |
|
| Clave de API |
|
| Nombre del modelo de visión |
|
| (Opcional) Protocolo de solicitud: |
|
| (Opcional) Máximo de tokens de salida por llamada, por defecto 2048 |
|
| (Opcional) TTL de caché en segundos, por defecto 3600; |
|
| (Opcional) Directorio de caché, por defecto |
|
| (Opcional) |
|
El inicio valida las tres primeras variables; si faltan, se muestra un error legible y se sale (código 1).
Herramientas
analyze_image
Requisito previo: Solo llamar cuando el modelo anfitrión carece de visión multimodal. Si el modelo anfitrión es multimodal, usa su comprensión nativa de imágenes.
image(obligatorio, cadena): Ruta de archivo local / URL http(s) / dataURL base64 /clipboard.Ruta local: infiere el tipo MIME de la extensión (png/jpg/jpeg/gif/webp/bmp), convierte a dataURL base64.
URL http(s): se pasa directamente como
image_url.dataURL: solo se acepta codificación base64 de
image/*.clipboard/clip/pasteboard: lee la imagen actual del portapapeles del sistema (Windows:scripts/clipboard.ps1, macOS:scripts/clipboard.swift), escribe a un PNG temporal y luego normaliza. Linux no soportado.
prompt(opcional, cadena): Instrucción de reconocimiento personalizada. Por defecto: "Describe esta imagen en detalle."Devuelve: éxito
{ content: [{ type: "text", text }] }; fallo{ content: [{ type: "text", text: "[vision_error] ..." }], isError: true }.
Solicitud interna (dividida por VISION_API_FORMAT):
OpenAI:
POST {base}/chat/completions, imagen como parteimage_url, autenticaciónAuthorization: Bearer.Anthropic:
POST {base}/v1/messages, imagen como bloqueimage(source: {type: base64, media_type, data}o{type: url, url}), autenticaciónx-api-key+anthropic-version: 2023-06-01(también envíaAuthorization: Bearerpor compatibilidad).
Tiempo de espera por defecto: 60 s (cubre conexión + lectura del cuerpo).
Límites de seguridad: respuesta de API 16 MB, descarga de imagen 20 MB (precomprobación de content-length + nueva comprobación de tamaño real).
Notas de comportamiento (de pruebas con modelos reales):
Los modelos de razonamiento pueden devolver
content: nullcon la respuesta enreasoning_content— se hace fallback automáticamente.Fallo de paso directo de URL http(s) con error de medios/descarga → descarga automática a base64 y reintento una vez.
ocr_image
image(obligatorio, cadena): Misma normalización queanalyze_image.languages(opcional, cadena): Sugerencias de idioma (ej.zh,en).format(opcional, enumerado):plain(por defecto, texto plano conservando el diseño) /markdown(conserva encabezados/listas/tablas) /json(devuelve un arrayblockscontext+type).Usa internamente
image_url.detail = "high"; el prompt se inyecta según el formato.
compare_images
images(obligatorio, array, 2–4): Cada uno admite ruta local / URL http(s) / dataURL / portapapeles.prompt(opcional, cadena): Instrucción de comparación personalizada. Por defecto: "Compara estas imágenes y describe sus diferencias y similitudes."Un único mensaje de usuario con texto + múltiples partes
image_url(detail = "auto").Si alguna URL falla con error de medios/descarga, todas las URLs se descargan a base64 y se reintentan una vez.
Habilidad Vision Sidecar
La habilidad vision-sidecar proporciona enrutamiento según capacidades del modelo. Cuando está habilitada en tu cliente MCP:
El modelo anfitrión tiene capacidad multimodal → usa comprensión nativa de imágenes (sin llamada MCP)
El modelo anfitrión es solo texto → llama a
analyze_imagede este MCPExcepción: lectura de portapapeles disponible para modelos anfitriones multimodales
Sin la habilidad, el comportamiento del modelo anfitrión no cambia en absoluto — cero intrusión.
Consulta skill/vision-sidecar.md para el archivo de la habilidad.
Caché
Habilitada por defecto. Almacena en caché los resultados de la API de visión para combinaciones idénticas de "imagen + prompt".
Clave:
SHA256(identificador de imagen + "::" + prompt). Los archivos locales/dataURLs se hashean por el contenido base64; las URLs http(s) se hashean por la cadena de la URL.Almacenamiento: Un archivo JSON por clave (
{ result, cachedAt }), almacenado en el directorio de caché.TTL: Por defecto 1 hora. Las entradas caducadas se eliminan automáticamente en el próximo acceso.
Desactivar:
VISION_CACHE_TTL=0(o negativo).Nota: La clave no incluye el nombre del modelo. Después de cambiar
VISION_MODEL, el período TTL puede devolver resultados en caché del modelo anterior — limpia el directorio de caché al cambiar de modelo.
Pruebas
cd vision-bridge-mcp
node --testtest/vision.test.js: Pruebas unitarias de la biblioteca principal (normalización de entrada / cuerpo del mensaje / llamadas a la API / mapeo de errores / tiempo de espera / caché / reintento de URL / OCR / portapapeles).test/cache.test.js: Pruebas del módulo de caché (estabilidad de clave / acierto / caducidad / JSON corrupto / compatibilidad hacia atrás).test/smoke.test.mjs: Prueba de humo de extremo a extremo — iniciaserver.jsreal a través de stdio, usa un stub HTTP local para simular el modelo de visión, valida tools/list y llamadas a herramientas.
Comparación con otros MCP de visión
Consulta docs/COMPARISON.md para una comparación detallada con otros proyectos MCP de visión.
Licencia
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Image & PDF tools for AI agents: compress, convert, resize, PDF, AI vision, pipeline.
Generate images from Claude, ChatGPT, Cursor and Codex with 12 top AI image models. Up to 4 images per call, SVG vectorization, background removal, upscaling and image-to-video. Remote MCP with OAuth, no API keys.
Generate images from Claude, ChatGPT, Cursor and Codex with 12 top AI image models and 10 tools: up to 4 images per call, SVG vectorization, editing and more. Remote MCP with OAuth, no API keys. Pay per image, no subscription.
Turn any LLM multimodal; generate images, voices, videos, 3D models, music, and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables text-only LLMs to analyze images by routing them to an OpenAI-compatible vision backend, supporting local files, URLs, and data URLs.11 npmMIT
- AlicenseAqualityDmaintenanceEnables AI agents to analyze images, extract text, compare images, and analyze video through any OpenAI-compatible vision model.4154 npm20MIT
- FlicenseNot gradedqualityDmaintenanceEnables text-only language models to 'see' and describe images by calling multimodal APIs (OpenAI, Anthropic) for image analysis.-
- AlicenseNot gradedqualityBmaintenanceEnables text-only LLMs to understand images by converting them into text descriptions, supporting multiple vision backends like cloud APIs, local models, and OCR engines.1MIT