mcp-vision-server
mcp-vision-server
Un servidor MCP para cada modelo de visión compatible con OpenAI.
Configúralo una vez y usa la misma herramienta analyze_image con OpenAI, OpenRouter, Zhipu, Bailian, SiliconFlow y otros proveedores compatibles. Funciona con Claude Code, Codex, Cursor, Zed y cualquier otro cliente MCP.
¿Por qué usar mcp-vision-server?
✅ Funciona con cualquier cliente MCP – Claude Code, Codex, Cursor, Zed y más.
✅ Funciona con muchos proveedores – cambia de proveedor sin modificar prompts ni llamadas a herramientas.
✅ Una API unificada – una sola herramienta (
analyze_image) para cada endpoint de visión compatible con OpenAI.✅ Entrada de imagen flexible – URL, archivo local o Base64 se detectan automáticamente.
✅ Anulación en cualquier lugar – configura globalmente con variables de entorno o por solicitud.
Related MCP server: vision-mcp
Inicio rápido
Instala el servidor.
Configura tu proveedor y clave de API.
Añade el servidor MCP a tu cliente.
Pregunta:
Describe this screenshot.Si todo está configurado correctamente, tu cliente MCP llamará automáticamente a analyze_image y devolverá la respuesta del modelo de visión.
Características
Herramienta única
analyze_imagecon una interfaz consistente.Admite entradas de imagen por URL, archivo local y Base64.
Admite 13 ajustes predefinidos de proveedores integrados.
Selección de proveedor mediante
VISION_PROVIDERo el parámetroprovider.Anulaciones de configuración a nivel de entorno y de solicitud.
Ejemplo
Pide a tu cliente MCP que analice una imagen:
Analyze this screenshot and tell me what UI is shown.El cliente llama a la herramienta MCP:
{
"tool": "analyze_image",
"arguments": {
"image": "/path/to/screenshot.png",
"prompt": "Analyze this screenshot and tell me what UI is shown."
}
}El servidor normaliza la entrada de imagen, la envía al proveedor de visión compatible con OpenAI seleccionado y devuelve una respuesta de texto plano a tu cliente MCP.
Proveedores
Los ajustes predefinidos integrados facilitan el uso de endpoints de visión compatibles con OpenAI:
Proveedor | Ajuste predefinido |
Zhipu |
|
Bailian / DashScope |
|
OpenAI |
|
SiliconFlow |
|
OpenRouter |
|
Ark / Volcengine |
|
StepFun |
|
Kimi / Moonshot |
|
MiniMax |
|
ModelScope |
|
NVIDIA NIM |
|
Novita AI |
|
También puedes usar cualquier otro endpoint de visión compatible con OpenAI configurando manualmente VISION_BASE_URL, VISION_API_KEY y VISION_MODEL.
Instalación y ejecución
Requiere Python ≥ 3.10 y uv.
cd mcp-vision-server
uv sync # install deps
uv run pytest -v # run tests
uv run ruff check . # lint
uv run mcp-vision-server # start stdio serverConfiguración
Opción 1: Ajuste predefinido de proveedor (recomendado)
export VISION_PROVIDER=zhipu # default
export VISION_API_KEY=your_keyConsulta Proveedores para ver la lista completa de ajustes predefinidos.
También puedes usar variables de entorno específicas del proveedor (por ejemplo, DASHSCOPE_API_KEY, OPENAI_API_KEY) como respaldo.
Opción 2: Manual
Variable | ¿Requerida? | Descripción |
| Sí | Clave de API |
| No | Endpoint compatible con OpenAI |
| No | Nombre del modelo |
Parámetros de la herramienta (anulan el entorno por llamada): image, prompt, image_type, provider, base_url, api_key, model, temperature, max_tokens.
Configuración del cliente MCP
Claude Code (.mcp.json)
{
"mcpServers": {
"vision": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-vision-server", "mcp-vision-server"],
"env": {
"VISION_PROVIDER": "zhipu",
"VISION_API_KEY": "your_key"
}
}
}
}Complemento de Claude Code
# After PyPI publish
claude plugins install RuyimgByCN/mcp-vision-server
# Local test
claude plugins install /path/to/mcp-vision-serverEl repositorio incluye un manifiesto .claude-plugin.json — claude plugins install lo lee automáticamente.
Codex (OpenAI Codex CLI)
Edita ~/.codex/config.toml:
[mcp_servers.vision]
command = "uvx"
args = ["mcp-vision-server"]
env = { VISION_PROVIDER = "zhipu", VISION_API_KEY = "your_key" }O para desarrollo local:
[mcp_servers.vision]
command = "uv"
args = ["run", "--directory", "/path/to/mcp-vision-server", "mcp-vision-server"]
env = { VISION_PROVIDER = "zhipu", VISION_API_KEY = "your_key" }Cursor / otros clientes uvx
Reemplaza command por uvx, args por ["--from", "/path/to/mcp-vision-server", "mcp-vision-server"], mismo env.
Ejemplos de proveedores
// Bailian
"env": { "VISION_PROVIDER": "bailian", "VISION_API_KEY": "your_key" }
// OpenAI
"env": { "VISION_PROVIDER": "openai", "VISION_API_KEY": "sk-xxx" }
// Fully custom
"env": {
"VISION_BASE_URL": "https://your-endpoint/v1",
"VISION_API_KEY": "your_key",
"VISION_MODEL": "your-model"
}Arquitectura
MCP Client (Claude Code / Codex / Cursor / Zed)
│
▼
mcp-vision-server
│
├── mcp_vision_server/server.py # MCP tool entrypoints
├── mcp_vision_server/config.py # env/provider/parameter resolution
├── mcp_vision_server/image.py # URL/file/base64 normalization
└── mcp_vision_server/providers.py # provider presets
│
▼
OpenAI-compatible Vision API
│
▼
Vision model responsePreguntas frecuentes
¿Por qué no llamar directamente al proveedor de visión?
Este servidor ofrece a los clientes MCP una herramienta de visión única y reutilizable. Puedes cambiar de proveedor sin modificar los prompts del cliente, los nombres de las herramientas MCP ni el código de integración del lado del cliente.
¿Puedo usar un proveedor que no esté en la lista?
Sí. Usa la configuración manual con VISION_BASE_URL, VISION_API_KEY y VISION_MODEL para cualquier endpoint de visión compatible con OpenAI.
¿Puedo anular el proveedor por solicitud?
Sí. Usa los parámetros de la herramienta provider, base_url, api_key o model para anular la configuración a nivel de entorno en una sola llamada.
¿Qué formatos de imagen se admiten?
El servidor acepta URLs de imagen, rutas de archivo locales y cadenas Base64. El tipo de entrada se puede detectar automáticamente o especificarse con image_type.
Desarrollo
uv sync --all-groups
uv run ruff check .
uv run ruff format .
uv run pytest -v
uv build
uv run twine check dist/*Lista de verificación para publicar
Actualiza la versión en
pyproject.toml.Ejecuta
uv run ruff check .,uv run pytest -v,uv buildyuv run twine check dist/*.Crea y envía una etiqueta de versión, por ejemplo
v0.1.2.Deja que GitHub Actions publique en PyPI mediante publicación de confianza.
Hoja de ruta
Añadir más ajustes predefinidos de proveedores cuando haya endpoints de visión compatibles con OpenAI estables.
Añadir ejemplos más completos para Claude Code, Codex, Cursor y otros clientes MCP.
Añadir soporte opcional de respuestas en streaming si la experiencia de usuario del cliente MCP se beneficia.
Dividir el comportamiento específico de cada proveedor en complementos solo cuando los proveedores requieran lógica de solicitud personalizada.
Acerca de
Autor: RuyimgByCN
Licencia: Solo uso personal. Prohibido uso comercial — consulta LICENSE para más detalles. Contacta con el autor para licencias comerciales.
Nota en chino: Uso personal gratuito, prohibido uso comercial. Para licencia comercial contacta con el autor. Ver README_ZH.md.
Available Tools
2 toolsanalyze_imageB
Analyze or understand an image.
Use this tool when an MCP client needs image understanding, screenshot analysis, OCR-like text recognition, visual Q&A, or UI restoration.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | ||
| model | No | ||
| prompt | No | 请详细描述这张图片。 | |
| api_key | No | ||
| base_url | No | ||
| provider | No | ||
| image_type | No | auto | |
| max_tokens | No | ||
| temperature | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It states the tool can 'analyze' an image but does not reveal that it likely calls an external API (implied by parameters like api_key, base_url, provider), nor does it describe side effects, idempotency, or return behavior beyond the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences summarizing purpose and use cases. It is front-loaded and wastes no words. However, it could be slightly more structured (e.g., separate parameter notes) to improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, output schema exists, sibling tool), the description is incomplete. It lacks parameter guidance, input/output format details, and prerequisites (e.g., API key requirements). The output schema exists but is not referenced. The description should provide more context for accurate invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description provides no explanation for any of the 9 parameters (image, model, prompt, api_key, base_url, provider, image_type, max_tokens, temperature). It fails to add meaning beyond the schema, leaving the agent to guess parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze or understand an image.' It provides specific use cases (image understanding, screenshot analysis, OCR, visual Q&A, UI restoration) which distinguishes it from the sibling tool 'list_providers' and gives a precise verb-resource relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool (e.g., when image understanding or OCR is needed) and implies a specific context. However, it does not mention when not to use it or suggest alternative tools, which would improve guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersA
List all supported provider presets as a JSON array.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states output format but omits any behavioral details like performance, rate limits, or data freshness. However, for a simple parameterless list tool, the minimal description is somewhat adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is front-loaded with the key action and resource. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema is present, the description is nearly sufficient. However, it does not elaborate on what 'provider presets' entail, which could be slightly ambiguous. The completeness is high but not perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the description adds no information beyond the empty schema. According to the rubric, 0 params has a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'all supported provider presets', and the output format 'as a JSON array'. It effectively distinguishes from the only sibling tool 'analyze_image'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-to-use or alternatives are given, the context with only one sibling tool 'analyze_image' makes the usage obvious. The description lacks exclusion criteria but remains clear for this simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.1- First observed
analyze_image - First observed
list_providers
TDQS
Scored across 2 tools
The two tools have entirely distinct purposes: analyze_image for image understanding and list_providers for listing provider presets. No overlap or ambiguity.
Both tools follow a consistent verb_noun pattern (analyze_image, list_providers), making naming predictable and clear.
Only two tools for a vision server feels slightly thin. While the count is not extreme, it borders on insufficient for typical vision tasks.
The server covers only basic image analysis and a provider listing, missing common vision operations like generation, manipulation, or filtering. The tool surface is significantly incomplete.
Maintenance
Related MCP Connectors
Chat, image, video, and audio models from many vendors behind one remote MCP server and one key.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
MCP server exposing the YourImageShare upload API (upload/list/delete) as tools for AI agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- FlicenseBqualityDmaintenanceOpenAI-compatible MCP server for running image analysis tools against your own vision model endpoint.77 npm-
- AlicenseAqualityDmaintenanceMCP server that provides an analyze_image tool using OpenAI-compatible vision LLMs to describe images from file paths, URLs, or base64 data.15 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP 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
- AlicenseAqualityAmaintenanceMCP server that provides vision understanding to non-multimodal agents via 4 tools (analyze/describe/OCR image, list providers), supporting 13 vision providers with automatic fallback and secure URL handling.4281 npmMIT