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