vision-mcp
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 plano13 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-mcpOpción B: compilación local
git clone <repo> && cd vision-mcp
pnpm install
pnpm build
node dist/index.jsEjemplos 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.jsona nivel de proyecto o~/.claude.jsona nivel de usuario (clavemcpServers)Claude Desktop:
claude_desktop_config.jsonCualquier 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
npxdescarga el paquete y puede tardar unos segundoslas 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=xxxConfiguración de variables
Bloque
envde la configuración MCP (recomendado, el más fiable entre plataformas) — escribe las variables en el objetoenvanteriorArchivo
.env(desarrollo local) — copia.env.examplea.env, complétalo y luego ejecutanode --env-file-if-exists=.env dist/index.js(nativo en Node 22, sin necesidad de dotenv)Exportación en el shell —
export OPENAI_API_KEY=sk-xxxy 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 |
|
|
Anthropic |
|
|
Google Gemini |
|
|
Alibaba DashScope |
|
|
Zhipu |
|
|
Volcengine Doubao |
|
|
Baidu Qianfan |
|
|
StepFun |
|
|
Ollama (local) |
| — (sin valor predeterminado integrado; deben configurarse endpoint y modelo) |
Alibaba Bailian |
|
|
SiliconFlow |
|
|
OpenRouter |
|
|
Compatible personalizado |
| — |
?= opcional (tiene un valor predeterminado integrado);*= obligatorio.
Configuración global:
Variable de entorno | Valor predeterminado | Descripción |
| primer disponible | Proveedor predeterminado |
| predeterminado del proveedor | Modelo predeterminado |
| orden de la tabla | Prioridad de proveedores (separada por comas, mayor primero, p. ej. |
| 0 (desactivado) | Número de reintentos por proveedor antes de pasar al respaldo |
| 0 (desactivado) | Número máximo de respaldos de proveedor antes de rendirse |
| 20 MB | Límite de tamaño de imagen |
| 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_RETRIESveces 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_FALLBACKSrespaldossolo los errores del proveedor activan reintento/respaldo; los errores de configuración o de imagen fallan rápidamente
un argumento
providersolicitado 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=dashscopeGlobal:
--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 elbase-urlde 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 |
|
| Análisis general de imágenes |
|
| Describe el contenido de la imagen (instrucción predeterminada) |
|
| OCR, conservando el diseño |
| — | 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 |
| Adaptador compatible con OpenAI (openai SDK) | Un adaptador, baseURL configurable |
| SDK oficial @anthropic-ai/sdk | mensajes + bloque de contenido de imagen |
| SDK oficial @google/generative-ai | generateContent + inlineData |
| fetch nativo | el paquete npm oficial no tiene visión; API directa de generación multimodal |
| fetch nativo | el SDK oficial solo acepta contenido de cadena; API v4 directa |
| fetch nativo | el openapi oficial es un plano de gestión; API Ark directa |
| 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 buildPruebas 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/e2eArquitectura
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 mappingEspecificación completa: SPEC.md.
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
- FlicenseNot gradedqualityBmaintenanceA versatile MCP server that adds vision capabilities (image analysis, OCR, image/video generation) to AI models lacking native vision, with support for multiple providers and automatic task routing.1
- AlicenseAqualityBmaintenanceMCP server that provides an analyze_image tool using OpenAI-compatible vision LLMs to describe images from file paths, URLs, or base64 data.1201MIT
- FlicenseAqualityBmaintenanceOpenAI-compatible vision MCP server with 14 provider presets that enables MCP clients to analyze images, including screenshots, text, and UI mockups, via a single analyze_image tool.2
- AlicenseNot gradedqualityCmaintenanceMCP 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
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.
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/aesoper101/vision-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server