Skip to main content
Glama

Vision MCP Server

Ein Model Context Protocol (MCP)-Server, der Agenten, die mit nicht-multimodalen Modellen verbunden sind, Bildverständnis verleiht (DeepSeek, ältere GPT-4, lokale kleine Modelle usw.): Der Agent übergibt ein Bild an das MCP-Tool, der Server ruft ein Vision-Modell auf und gibt Text zurück.

Unterstützt große Anbieter in China und den USA sowie jeden OpenAI-kompatiblen Endpunkt. Offizielle SDKs zuerst, Abstraktion vor Implementierung, nicht-invasive Anbietererweiterungen.

中文文档见 README.zh-CN.md

Funktionen

  • 4 Tools: analyze_image / describe_image / ocr_image / list_providers, alle geben reinen Markdown-Text zurück

  • 13 integrierte Anbieter: OpenAI / Anthropic / Google Gemini / Qwen (DashScope) / Zhipu / Doubao (Volcengine) / ERNIE (Qianfan) / StepFun / Ollama / Alibaba Bailian / SiliconFlow / OpenRouter / benutzerdefinierter OpenAI-kompatibler Endpunkt

  • Drei Bildeingaben: lokaler Pfad / http(s)-URL / base64 (data-URI oder rohes base64), automatisch erkannt

  • Dreistufige Fallback-Kette: offizielles SDK → OpenAI-kompatibler Endpunkt → natives fetch (siehe SPEC §1)

  • Zustandslos: Jeder Aufruf ist unabhängig; Bilder und Ergebnisse werden nie gecacht; Schlüssel werden nur aus Umgebungsvariablen gelesen

Related MCP server: vision-mcp

Schnellstart

Option A: npx (auf npm veröffentlicht, kein Repo nötig)

npx -y @inferai/vision-mcp

Option B: lokaler Build

git clone <repo> && cd vision-mcp
pnpm install
pnpm build
node dist/index.js

MCP-Konfigurationsbeispiele (stdio)

Der Server spricht den stdio-Transport: Der MCP-Client startet den Prozess und tauscht JSON-RPC-Nachrichten über stdin/stdout aus. Konfigurieren Sie ihn dort, wo Ihr Client MCP-Server definiert:

  • Claude Code: projektweite .mcp.json oder benutzerweite ~/.claude.json (mcpServers-Schlüssel)

  • Claude Desktop: claude_desktop_config.json

  • Jeder MCP-Client (Cursor, selbstgebaute Agenten usw.): gleiche Struktur

npx-Version (verfügbar, nachdem das Paket veröffentlicht wurde):

{
  "mcpServers": {
    "vision-mcp": {
      "command": "npx",
      "args": ["-y", "@inferai/vision-mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-...",
        "DASHSCOPE_API_KEY": "sk-..."
      }
    }
  }
}

Lokale Entwicklung (Pfad anpassen; --env-file-if-exists=.env lädt .env nativ):

{
  "mcpServers": {
    "vision-mcp": {
      "command": "node",
      "args": ["--env-file-if-exists=.env", "/absolute/path/to/vision-mcp/dist/index.js"],
      "env": {
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Mit Startargumenten (Anbieter-Standardwerte per argv überschreiben, siehe unten):

{
  "mcpServers": {
    "vision-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@inferai/vision-mcp",
        "--default-provider=dashscope",
        "--siliconflow-api-key=sk-...",
        "--siliconflow-model=Qwen/Qwen2.5-VL-7B-Instruct"
      ],
      "env": {
        "DASHSCOPE_API_KEY": "sk-..."
      }
    }
  }
}

stdio-Hinweise:

  • stdout transportiert nur das MCP-Protokoll — der Server gibt dort nie Logs aus; Diagnosen gehen an stderr

  • der Client verwaltet den Prozesslebenszyklus (Start beim Start, Beenden beim Exit); kein Daemon nötig

  • der erste npx-Lauf lädt das Paket herunter und kann einige Sekunden dauern

  • Umgebungsvariablen können auch aus der Shell-Umgebung stammen, wenn der Client diese erbt (kein env-Block nötig)

Debuggen mit MCP Inspector:

pnpm dlx @modelcontextprotocol/inspector node dist/index.js --xxx-api-key=xxx --xxx2-api-key=xxx

Variablen setzen

  1. env-Block in der MCP-Konfiguration (empfohlen, am zuverlässigsten plattformübergreifend) — schreiben Sie die Variablen in das env-Objekt oben

  2. .env-Datei (lokale Entwicklung) — kopieren Sie .env.example nach .env, füllen Sie sie aus, dann node --env-file-if-exists=.env dist/index.js (Node 22 nativ, kein dotenv nötig)

  3. Shell-Exportexport OPENAI_API_KEY=sk-xxx und dann ausführen

Anbieter ohne Schlüssel erscheinen in list_providers als nicht verfügbar und melden die fehlende Variable beim Aufruf.

Veröffentlichung (bevor npx funktioniert)

pnpm publish          # or pnpm release (changeset flow)

Umgebungsvariablen

API_KEY, BASE_URL und MODEL jedes Anbieters unterstützen Umgebungs-Overrides (Konvention: <PROVIDER_PREFIX>_API_KEY / <PROVIDER_PREFIX>_BASE_URL / <PROVIDER_PREFIX>_MODEL):

Anbieter

Umgebungsvariablen

Standardmodell

OpenAI

OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MODEL

gpt-4o

Anthropic

ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL, ANTHROPIC_MODEL

claude-sonnet-4-5

Google Gemini

GEMINI_API_KEY, GEMINI_BASE_URL, GEMINI_MODEL

gemini-2.5-flash

Alibaba DashScope

DASHSCOPE_API_KEY, DASHSCOPE_BASE_URL, DASHSCOPE_MODEL

qwen-vl-max

Zhipu

ZHIPU_API_KEY, ZHIPU_BASE_URL, ZHIPU_MODEL

glm-4v-flash (kostenlos)

Volcengine Doubao

VOLCENGINE_ARK_API_KEY, VOLCENGINE_ARK_BASE_URL, VOLCENGINE_ARK_MODEL

doubao-1.5-vision-pro

Baidu Qianfan

QIANFAN_API_KEY, QIANFAN_SECRET_KEY, QIANFAN_BASE_URL, QIANFAN_MODEL

ernie-4.5-vl-8k

StepFun

STEPFUN_API_KEY, STEPFUN_BASE_URL, STEPFUN_MODEL

step-1v

Ollama (lokal)

OLLAMA_BASE_URL, OLLAMA_MODEL

— (kein integrierter Standard; Endpunkt und Modell müssen gesetzt werden)

Alibaba Bailian

BAILIAN_API_KEY, BAILIAN_BASE_URL (Standard: DashScope-kompatibler Modus), BAILIAN_MODEL

qwen-vl-max

SiliconFlow

SILICONFLOW_API_KEY, SILICONFLOW_BASE_URL (Standard: https://api.siliconflow.cn/v1), SILICONFLOW_MODEL

Qwen/Qwen2.5-VL-72B-Instruct

OpenRouter

OPENROUTER_API_KEY, OPENROUTER_BASE_URL (Standard: https://openrouter.ai/api/v1), OPENROUTER_MODEL

openai/gpt-4o

Benutzerdefiniert kompatibel

OPENAI_COMPAT_BASE_URL, OPENAI_COMPAT_API_KEY?, OPENAI_COMPAT_MODEL

? = optional (hat einen integrierten Standard); * = erforderlich.

Globale Konfiguration:

Umgebungsvariable

Standard

Beschreibung

VISION_MCP_DEFAULT_PROVIDER

erster verfügbarer

Standard-Anbieter

VISION_MCP_DEFAULT_MODEL

Anbieter-Standard

Standardmodell

VISION_MCP_PROVIDER_PRIORITY

Tabellenreihenfolge

Anbieter-Priorität (kommagetrennt, hohe zuerst, z. B. openai,dashscope,zhipu)

VISION_MCP_MAX_RETRIES

0 (aus)

Wiederholungsanzahl pro Anbieter vor dem Fallback

VISION_MCP_MAX_FALLBACKS

0 (aus)

Maximale Anbieter-Fallbacks, bevor aufgegeben wird

VISION_MCP_MAX_IMAGE_BYTES

20 MB

Bildgrößenlimit

VISION_MCP_TIMEOUT_MS

60000

Download- und Anfrage-Timeout (ms)

Fallback-Kette

Wenn mehrere Anbieter verfügbar sind, durchlaufen Aufrufe die Prioritätskette: konfigurierter Standard → VISION_MCP_PROVIDER_PRIORITY-Liste → Tabellenreihenfolge (nicht verfügbare Anbieter werden übersprungen).

  • jeder Anbieter wird bei Anbieterfehlern (Upstream-Fehler, Timeouts) bis zu VISION_MCP_MAX_RETRIES-mal erneut versucht

  • nachdem ein Anbieter seine Wiederholungen erschöpft hat, wird der nächste verfügbare Anbieter in der Kette versucht, bis zu VISION_MCP_MAX_FALLBACKS Fallbacks

  • nur Anbieterfehler lösen Wiederholung/Fallback aus; Konfigurations- oder Bildfehler schlagen sofort fehl

  • ein explizit angefordertes provider-Argument wird allein versucht (kein Fallback)

  • wenn alles fehlschlägt, listet der Fehler jeden versuchten Anbieter und dessen letzten Fehler auf

Auch als argv verfügbar: --provider-priority=..., --max-retries=N, --max-fallbacks=N (überschreiben Umgebungsvariablen).

MCP-Startargumente (argv)

apiKey / baseUrl / model jedes Anbieters können über Startargumente überschrieben werden (höhere Priorität als Umgebungsvariablen), Format --<provider>-<field>:

node dist/index.js \
  --openai-api-key=sk-xxx \
  --openai-base-url=https://my-gateway.example.com/v1 \
  --openai-model=gpt-4o-mini \
  --dashscope-api-key=sk-xxx \
  --default-provider=dashscope
  • Global: --default-provider <name> / --default-model <name>

  • Pro Anbieter: --<provider>-api-key, --<provider>-base-url, --<provider>-model (Gleichheits- oder Leerzeichenform funktionieren beide)

  • Jeder OpenAI-kompatible Drittanbieterdienst: in einer Zeile mit --openai-compat-base-url + --openai-compat-api-key + --openai-compat-model verbinden; oder base-url eines beliebigen integrierten Anbieters auf einen Mirror/Proxy zeigen lassen

Priorität: Tool-Argumente provider/model > Startargumente (pro Anbieter > globaler Standard) > Umgebungsvariablen > integrierte Anbieter-Standardwerte.

Tools

Tool

Argumente

Beschreibung

analyze_image

image*, prompt?, provider?, model?

Allgemeine Bildanalyse

describe_image

image*, provider?, model?

Bildinhalt beschreiben (Standardanweisung)

ocr_image

image*, language? (auto/zh/en/zh-en), provider?, model?

OCR, Layout erhaltend

list_providers

Anbieterliste und Konfigurationsstatus

image akzeptiert: lokalen Pfad / http(s)://-URL / data:-URI / rohes base64, automatisch erkannt.

Sicherheitshinweis: URL-Downloads sind SSRF-geschützt — jeder Hop (einschließlich Weiterleitungen) wird validiert und URLs, die auf Loopback-, private oder Link-Local-Adressen auflösen, werden blockiert (ein Hinweis im Fehler erklärt warum).

Anbieterintegration (dreistufige Fallback-Kette)

provider

Integration

Hinweise

openai / stepfun / ollama / bailian / siliconflow / openrouter / openai-compat

OpenAI-kompatibler Adapter (openai SDK)

Ein Adapter, konfigurierbare baseURL

anthropic

Offizielles SDK @anthropic-ai/sdk

messages + Bild-Content-Block

gemini

Offizielles SDK @google/generative-ai

generateContent + inlineData

dashscope

Natives fetch

Offizielles npm-Paket ohne Vision; direkte multimodale Generierungs-API

zhipu

Natives fetch

Offizielles SDK akzeptiert nur String-Content; direkte v4-API

volcengine

Natives fetch

Offizielle openapi ist eine Managementebene; direkte Ark-API

qianfan

Natives fetch

Offizielles SDK ist nur für Strings; AK/SK → Token → v2-API

Einen Anbieter hinzufügen: Für OpenAI-kompatible Endpunkte fügen Sie eine Zeile zu RULES in src/core/config.ts hinzu plus ein Mapping in der Factory-Tabelle in src/index.ts — kein neuer Code. Für Implementierungen mit offiziellem SDK oder nativem fetch: siehe SPEC §1.

Entwicklung

pnpm check        # biome checks
pnpm test         # rstest unit tests (injected mocks, no network)
pnpm build        # rslib build

Echtaufruf-Smoke-Tests (werden nur gegen Anbieter ausgeführt, deren Schlüssel konfiguriert sind; andernfalls übersprungen):

OPENAI_API_KEY=sk-... pnpm exec rstest tests/e2e

Architektur

src/
├── index.ts            # Entry: composition root, stdio startup
├── core/               # Abstraction: interfaces / image loading / config / registry
├── providers/          # Adapters: official SDK or compatible endpoints, protocol conversion only
└── server/tools.ts     # MCP tool layer: zod validation + error mapping

Vollständige Spezifikation: SPEC.md.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (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

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for analyzing images using multiple vision LLM providers (OpenCode, OpenAI, Anthropic, Google, and custom OpenAI-compatible endpoints). Provides tools to analyze single or multiple images, list providers, and test vision capabilities.
    MIT

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • Free public MCP for AI agents — 193 tools, 44 workflows. No API key.

  • Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.

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

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