Skip to main content
Glama

Vision MCP Server

Un servidor de Model Context Protocol (MCP) que aporta capacidad de visión a agentes conectados a modelos no multimodales (DeepSeek, GPT-4 antiguo, modelos locales pequeños, etc.): el agente entrega una imagen a la herramienta MCP, el servidor llama a un modelo de visión y devuelve texto.

Compatible con los principales proveedores de China y EE. UU., además de cualquier endpoint compatible con OpenAI. SDK oficiales primero, abstracción antes que implementación, incorporación de proveedores sin fricción.

Documentación en chino en README.zh-CN.md

Características

  • 4 herramientas: analyze_image / describe_image / ocr_image / list_providers, todas devuelven texto Markdown plano

  • 13 proveedores integrados: OpenAI / Anthropic / Google Gemini / Qwen (DashScope) / Zhipu / Doubao (Volcengine) / ERNIE (Qianfan) / StepFun / Ollama / Alibaba Bailian / SiliconFlow / OpenRouter / endpoint personalizado compatible con OpenAI

  • Tres formatos de imagen: ruta local / URL http(s) / base64 (URI de datos o base64 sin procesar), detectados automáticamente

  • Cadena de respaldo de tres niveles: SDK oficial → endpoint compatible con OpenAI → fetch nativo (ver SPEC §1)

  • Sin estado: cada llamada es independiente; las imágenes y los resultados nunca se almacenan en caché; las claves solo se leen de variables de entorno

Related MCP server: vision-mcp

Inicio rápido

Opción A: npx (publicado en npm, sin necesidad de repositorio)

npx -y @inferai/vision-mcp

Opción B: compilación local

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

Ejemplos de configuración de MCP (stdio)

El servidor utiliza el transporte stdio: el cliente MCP inicia el proceso e intercambia mensajes JSON-RPC a través de stdin/stdout. Configúralo donde tu cliente defina los servidores MCP:

  • Claude Code: .mcp.json a nivel de proyecto o ~/.claude.json a nivel de usuario (clave mcpServers)

  • Claude Desktop: claude_desktop_config.json

  • Cualquier cliente MCP (Cursor, agentes propios, etc.): misma estructura

Versión npx (disponible después de publicar el paquete):

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

Desarrollo local (ajusta la ruta; --env-file-if-exists=.env carga .env de forma nativa):

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

Con argumentos de inicio (anula los valores predeterminados del proveedor mediante argv, ver más abajo):

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

Notas sobre stdio:

  • stdout solo transporta el protocolo MCP — el servidor nunca imprime registros ahí; los diagnósticos van a stderr

  • el cliente gestiona el ciclo de vida del proceso (inicio al arrancar, terminación al salir); no se necesita demonio

  • la primera ejecución de npx descarga el paquete y puede tardar unos segundos

  • las variables de entorno también pueden provenir del shell si el cliente las hereda (sin necesidad de bloque env)

Depura con MCP Inspector:

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

Configuración de variables

  1. Bloque env de la configuración MCP (recomendado, el más fiable entre plataformas) — escribe las variables en el objeto env anterior

  2. Archivo .env (desarrollo local) — copia .env.example a .env, complétalo y luego ejecuta node --env-file-if-exists=.env dist/index.js (nativo en Node 22, sin necesidad de dotenv)

  3. Exportación en el shellexport OPENAI_API_KEY=sk-xxx y luego ejecuta

Los proveedores sin claves aparecen como no disponibles en list_providers e informan de la variable que falta al ser llamados.

Publicación (antes de que funcione npx)

pnpm publish          # or pnpm release (changeset flow)

Variables de entorno

El API_KEY, BASE_URL y MODEL de cada proveedor admiten anulaciones mediante variables de entorno (convención: <PROVIDER_PREFIX>_API_KEY / <PROVIDER_PREFIX>_BASE_URL / <PROVIDER_PREFIX>_MODEL):

Proveedor

Variables de entorno

Modelo predeterminado

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 (gratuito)

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 (local)

OLLAMA_BASE_URL, OLLAMA_MODEL

— (sin valor predeterminado integrado; deben configurarse endpoint y modelo)

Alibaba Bailian

BAILIAN_API_KEY, BAILIAN_BASE_URL (modo compatible con DashScope por defecto), BAILIAN_MODEL

qwen-vl-max

SiliconFlow

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

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

OpenRouter

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

openai/gpt-4o

Compatible personalizado

OPENAI_COMPAT_BASE_URL, OPENAI_COMPAT_API_KEY?, OPENAI_COMPAT_MODEL

? = opcional (tiene un valor predeterminado integrado); * = obligatorio.

Configuración global:

Variable de entorno

Valor predeterminado

Descripción

VISION_MCP_DEFAULT_PROVIDER

primer disponible

Proveedor predeterminado

VISION_MCP_DEFAULT_MODEL

predeterminado del proveedor

Modelo predeterminado

VISION_MCP_PROVIDER_PRIORITY

orden de la tabla

Prioridad de proveedores (separada por comas, mayor primero, p. ej. openai,dashscope,zhipu)

VISION_MCP_MAX_RETRIES

0 (desactivado)

Número de reintentos por proveedor antes de pasar al respaldo

VISION_MCP_MAX_FALLBACKS

0 (desactivado)

Número máximo de respaldos de proveedor antes de rendirse

VISION_MCP_MAX_IMAGE_BYTES

20 MB

Límite de tamaño de imagen

VISION_MCP_TIMEOUT_MS

60000

Tiempo de espera de descarga y solicitud (ms)

Cadena de respaldo

Cuando hay varios proveedores disponibles, las llamadas recorren la cadena de prioridad: predeterminado configurado → lista VISION_MCP_PROVIDER_PRIORITY → orden de la tabla (los proveedores no disponibles se omiten).

  • cada proveedor se reintenta hasta VISION_MCP_MAX_RETRIES veces ante errores del proveedor (fallos del servicio ascendente, tiempos de espera)

  • cuando un proveedor agota sus reintentos, se prueba el siguiente proveedor disponible de la cadena, hasta VISION_MCP_MAX_FALLBACKS respaldos

  • solo los errores del proveedor activan reintento/respaldo; los errores de configuración o de imagen fallan rápidamente

  • un argumento provider solicitado explícitamente se prueba solo (sin respaldo)

  • cuando todo falla, el error enumera cada proveedor intentado y su último error

También disponible como argv: --provider-priority=..., --max-retries=N, --max-fallbacks=N (superan a las variables de entorno).

Argumentos de inicio de MCP (argv)

El apiKey / baseUrl / model de cada proveedor se puede anular mediante argumentos de inicio (prioridad superior a las variables de entorno), formato --<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 <nombre> / --default-model <nombre>

  • Por proveedor: --<provider>-api-key, --<provider>-base-url, --<provider>-model (funcionan tanto con signo igual como con espacio)

  • Cualquier servicio de terceros compatible con OpenAI: conéctalo en una línea con --openai-compat-base-url + --openai-compat-api-key + --openai-compat-model; o apunta el base-url de cualquier proveedor integrado a un espejo/proxy

Prioridad: argumentos de herramienta provider/model > argumentos de inicio (por proveedor > predeterminado global) > variables de entorno > valores predeterminados integrados del proveedor.

Herramientas

Herramienta

Argumentos

Descripción

analyze_image

image*, prompt?, provider?, model?

Análisis general de imágenes

describe_image

image*, provider?, model?

Describe el contenido de la imagen (instrucción predeterminada)

ocr_image

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

OCR, conservando el diseño

list_providers

Lista de proveedores y estado de configuración

image acepta: ruta local / URL http(s):// / URI data: / base64 sin procesar, detectado automáticamente.

Nota de seguridad: las descargas por URL están protegidas contra SSRF — cada salto (incluidas las redirecciones) se valida y las URL que resuelven a direcciones loopback, privadas o link-local se bloquean (la pista en el error explica el motivo).

Integración de proveedores (cadena de respaldo de tres niveles)

proveedor

Integración

Notas

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

Adaptador compatible con OpenAI (openai SDK)

Un adaptador, baseURL configurable

anthropic

SDK oficial @anthropic-ai/sdk

mensajes + bloque de contenido de imagen

gemini

SDK oficial @google/generative-ai

generateContent + inlineData

dashscope

fetch nativo

el paquete npm oficial no tiene visión; API directa de generación multimodal

zhipu

fetch nativo

el SDK oficial solo acepta contenido de cadena; API v4 directa

volcengine

fetch nativo

el openapi oficial es un plano de gestión; API Ark directa

qianfan

fetch nativo

el SDK oficial es solo de cadenas; AK/SK → token → API v2

Añadir un proveedor: para endpoints compatibles con OpenAI, añade una fila a RULES en src/core/config.ts y una asignación en la tabla de fábrica en src/index.ts — cero código nuevo. Implementaciones con SDK oficial o fetch nativo: consulta SPEC §1.

Desarrollo

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

Pruebas de humo con llamadas reales (solo se ejecutan contra proveedores cuyas claves están configuradas; se omiten en caso contrario):

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

Arquitectura

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

Especificación completa: 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