Skip to main content
Glama

vision-bridge-mcp

Vision-Sidecar-MCP-Server – ermöglicht textbasierten LLMs das Sehen von Bildern. Unterstützt nativ OpenAI- UND Anthropic-API-Formate. Inklusive Modell-Fähigkeits-Routing-Funktion.

Warum?

Die meisten LLMs sind reine Textmodelle – sie können keine Bilder sehen. Dieser MCP-Server schließt diese Lücke, indem er Bilder an ein visionsfähiges Modell weiterleitet und Textergebnisse zurückgibt. Er funktioniert mit jedem OpenAI-kompatiblen oder Anthropic-kompatiblen API-Endpunkt.

In Kombination mit der vision-sidecar-Fähigkeit erfolgt das Routing automatisch basierend auf den Fähigkeiten des Hostmodells:

Hostmodell

Bildpfad

Rein textbasiert (nicht multimodal)

Ruft die analyze_image-Methode dieses MCP auf, verwendet das Ergebnis als Text

Multimodal (gpt-4o / claude vision / gemini / grok, etc.)

Verwendet natives Bildverständnis, ruft dieses MCP nicht auf

Ausnahme: Wenn die Systemzwischenablage ein Bild enthält und die Konversation keinen Pfad/URL/Anhang hat, können auch multimodale Hostmodelle image="clipboard" übergeben.

Related MCP server: Vision MCP Server

Funktionen

  • Drei Werkzeuge: analyze_image, ocr_image, compare_images

  • Duales Protokoll: OpenAI chat/completions UND Anthropic messages-Format

  • Zwischenablage-Unterstützung: Windows (PowerShell) + macOS (Swift)

  • SHA256-Dateicache mit konfigurierbarer TTL

  • URL-Download-Wiederholung: Lädt Remote-URLs automatisch als Base64 herunter, wenn die direkte Übergabe fehlschlägt

  • Reasoning-Modell-Fallback: Extrahiert reasoning_content, wenn content null ist

  • Full-Chain-Timeout: Verbindung + Header + Body-Lesen

  • Sicherheitsgrenzen: 16MB Antwort / 20MB Bild / 1MB Fehlerdetails

  • Typisierte Fehler: VisionInputError / VisionApiError / VisionTimeoutError

  • Umfassende Tests: 30+ Unit-Tests + End-to-End-Smoke-Tests

  • Keine neuen npm-Abhängigkeiten (verwendet workspace node_modules)

Schnellstart

  1. Stellen Sie sicher, dass sich node ≥ 18 in Ihrem PATH befindet.

  2. Setzen Sie Umgebungsvariablen:

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 anthropic
  1. Registrieren Sie in Ihrer MCP-Client-Konfiguration:

{
  "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
}

Konfiguration

Variable

Beschreibung

Beispiel

VISION_API_BASE_URL

Basis-URL der Vision-Modell-API. OpenAI: endet normalerweise mit /v1; Anthropic: Basis ohne /v1 (hängt automatisch /v1/messages an)

https://api.openai.com/v1 oder https://api.anthropic.com/

VISION_API_KEY

API-Schlüssel

sk-...

VISION_MODEL

Name des Vision-Modells

gpt-4o

VISION_API_FORMAT

(Optional) Request-Protokoll: openai (Standard) oder anthropic

anthropic

VISION_MAX_TOKENS

(Optional) Maximale Ausgabetoken pro Aufruf, Standard 2048

4096

VISION_CACHE_TTL

(Optional) Cache-TTL in Sekunden, Standard 3600; 0 oder negativ deaktiviert

3600

VISION_CACHE_DIR

(Optional) Cache-Verzeichnis, Standard ./.cache

/tmp/vision-cache

NODE_OPTIONS

(Optional) --dns-result-order=ipv4first für Windows-IPv6-Routing-Probleme

--dns-result-order=ipv4first

Der Start validiert die ersten drei Variablen; fehlende Variablen führen zu einem lesbaren Fehler und Beenden (Code 1).

Werkzeuge

analyze_image

Voraussetzung: Nur aufrufen, wenn das Hostmodell nicht über multimodales Sehen verfügt. Wenn das Hostmodell multimodal ist, verwenden Sie dessen natives Bildverständnis.

  • image (erforderlich, string): Lokaler Dateipfad / http(s)-URL / base64-dataURL / clipboard.

    • Lokaler Pfad: Leitet MIME aus der Erweiterung ab (png/jpg/jpeg/gif/webp/bmp), konvertiert in base64-dataURL.

    • http(s)-URL: Wird direkt als image_url übergeben.

    • dataURL: Nur image/* base64-Kodierung akzeptiert.

    • clipboard / clip / pasteboard: Liest aktuelles Systemzwischenablage-Bild (Windows: scripts/clipboard.ps1, macOS: scripts/clipboard.swift), schreibt in temporäres PNG, normalisiert dann. Linux nicht unterstützt.

  • prompt (optional, string): Benutzerdefinierte Erkennungsanweisung. Standard: "Describe this image in detail."

  • Rückgabe: Erfolg { content: [{ type: "text", text }] }; Fehler { content: [{ type: "text", text: "[vision_error] ..." }], isError: true }.

Interne Anfrage (aufgeteilt nach VISION_API_FORMAT):

  • OpenAI: POST {base}/chat/completions, Bild als image_url-Teil, Auth Authorization: Bearer.

  • Anthropic: POST {base}/v1/messages, Bild als image-Block (source: {type: base64, media_type, data} oder {type: url, url}), Auth x-api-key + anthropic-version: 2023-06-01 (sendet auch Authorization: Bearer aus Kompatibilitätsgründen).

Standard-Timeout: 60s (umfasst Verbindung + Body-Lesen).

Sicherheitsgrenzen: API-Antwort 16MB, Bild-Download 20MB (Vorabprüfung des Content-Length + erneute Größenprüfung).

Verhaltensnotizen (aus Tests mit echten Modellen):

  • Reasoning-Modelle können content: null mit der Antwort in reasoning_content zurückgeben – automatischer Fallback.

  • Fehlgeschlagene http(s)-URL-Direktübergabe mit Medien-/Download-Fehler → automatischer Download als base64 und einmaliger Wiederholungsversuch.

ocr_image

  • image (erforderlich, string): Gleiche Normalisierung wie bei analyze_image.

  • languages (optional, string): Sprachhinweise (z. B. zh,en).

  • format (optional, enum): plain (Standard, Klartext unter Beibehaltung des Layouts) / markdown (behält Überschriften/Listen/Tabellen bei) / json (gibt blocks-Array mit text + type zurück).

  • Verwendet intern image_url.detail = "high"; Prompt wird pro Format eingefügt.

compare_images

  • images (erforderlich, array, 2–4): Jedes unterstützt lokalen Pfad / http(s)-URL / dataURL / clipboard.

  • prompt (optional, string): Benutzerdefinierte Vergleichsanweisung. Standard: "Compare these images and describe their differences and similarities."

  • Einzelne Benutzernachricht mit Text + mehreren image_url-Teilen (detail = "auto").

  • Wenn eine URL mit einem Medien-/Download-Fehler fehlschlägt, werden alle URLs als base64 heruntergeladen und einmal wiederholt.

Vision-Sidecar-Fähigkeit

Die vision-sidecar-Fähigkeit bietet ein Modell-Fähigkeits-Routing. Wenn sie in Ihrem MCP-Client aktiviert ist:

  • Hostmodell hat multimodale Fähigkeiten → verwendet natives Bildverständnis (kein MCP-Aufruf)

  • Hostmodell ist rein textbasiert → ruft analyze_image dieses MCP auf

  • Ausnahme: Zwischenablage-Lesen ist für multimodale Hostmodelle verfügbar

Ohne diese Fähigkeit bleibt das Verhalten des Hostmodells völlig unverändert – null Eingriff.

Siehe skill/vision-sidecar.md für die Fähigkeitsdatei.

Caching

Standardmäßig aktiviert. Zwischenspeichert Vision-API-Ergebnisse für identische "Bild + Prompt"-Kombinationen.

  • Schlüssel: SHA256(Bildkennung + "::" + Prompt). Lokale Dateien/dataURLs werden nach base64-Inhalt gehasht; http(s)-URLs werden nach URL-String gehasht.

  • Speicherung: Eine JSON-Datei pro Schlüssel ({ result, cachedAt }), gespeichert im Cache-Verzeichnis.

  • TTL: Standard 1 Stunde. Abgelaufene Einträge werden beim nächsten Zugriff automatisch gelöscht.

  • Deaktivieren: VISION_CACHE_TTL=0 (oder negativ).

  • Hinweis: Der Schlüssel enthält nicht den Modellnamen. Nach dem Wechsel von VISION_MODEL können innerhalb der TTL-Periode zwischengespeicherte Ergebnisse des alten Modells zurückgegeben werden – leeren Sie das Cache-Verzeichnis beim Wechseln der Modelle.

Testen

cd vision-bridge-mcp
node --test
  • test/vision.test.js: Unit-Tests der Kernbibliothek (Eingabenormalisierung / Nachrichtenrumpf / API-Aufrufe / Fehlerzuordnung / Timeout / Cache / URL-Wiederholung / OCR / Zwischenablage).

  • test/cache.test.js: Cache-Modultests (Schlüsselstabilität / Treffer / Ablauf / beschädigtes JSON / Abwärtskompatibilität).

  • test/smoke.test.mjs: End-to-End-Smoke-Test – startet echten server.js über stdio, verwendet lokalen HTTP-Stub zur Simulation des Vision-Modells, validiert tools/list und Werkzeugaufrufe.

Vergleich mit anderen Vision-MCPs

Siehe docs/COMPARISON.md für einen detaillierten Vergleich mit anderen Vision-MCP-Projekten.

Lizenz

MIT

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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

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/Catapult291/vision-bridge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server