llm-vision-mcp
Integrates with Google Gemini vision models to analyze images, providing detailed descriptions, OCR, UI/layout understanding, and Q&A about visual content.
Integrates with OpenAI-compatible vision APIs to analyze images, providing detailed descriptions, OCR, UI/layout understanding, and Q&A about visual content.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@llm-vision-mcpDescribe the UI screenshot in my clipboard."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐๏ธ llm-vision-mcp
Give your text-only coding agent eyes.
DeepSeek V4 Flash can write beautiful code โ but it can't see the error dialog, the broken UI, or the traceback screenshot you just pasted.
llm-vision-mcp fixes that. It's a one-tool MCP server that turns any image into a detailed, standalone text description your text-only LLM can reason over โ powered by the multimodal model of your choice.
Works with Claude Code ยท opencode ยท Codex ยท Kimi Code ยท PI ยท Cursor and any MCP client.
npx -y mcp-vision-bridge โ 60 seconds to working vision.
Why you need this
DeepSeek V4 Flash (0731) is topping every coding benchmark โ and it has no eyes. Neither does the upcoming DeepSeek V4 Pro. The same goes for most open-weight coding models.
You paste a screenshot. The agent says "I can't see images." You transcribe the error by hand. Ugh.
With llm-vision-mcp the agent just calls one tool:
analyze_image(image="./screenshot.png", prompt="What error is on screen?")โ "โ
ModuleNotFoundError: No module named 'cannx'โ appears in terminal output on line 3 of the tracebackโฆ"
The image never reaches the agent. A complete text description does. The agent can now debug, fix, and explain โ eyes closed, context open.
Is it a vision model? No โ and that's the point. The MCP routes pixels to whatever multimodal model you already pay for (mimo, Claude, Gemini, GPT-4o, Qwen-VLโฆ) and engineers the prompt so the description is exhaustive enough to stand alone.
Related MCP server: vision-mcp
Features
One tool, every image source โ local path, http(s) URL, base64
data:URI, the system clipboard, or raw bytes. No image server, no upload, no setup.Bring your own vision model โ OpenAI-compatible (OpenRouter, DeepSeek/Volcengine/OpenCode gateways, local emulators), Anthropic, Google Gemini. Swap by changing one env var.
Exhaustive by default โ a "max-descriptive" system prompt makes the vision model enumerate every element, quote text verbatim, and flag anything anomalous. Pure-text agents get everything they need in one call.
5 task presets โ
describeยทocrยทuiยทlayoutยทqa, or ask anything with a free-formprompt.Context-friendly โ
save_towrites long descriptions to a file and returns a path + summary, so your agent's context window stays small.Cached & safe โ in-memory + optional disk cache; optional SSRF guard for URL sources; API keys live in env, never in tool args.
Quick start (60 seconds)
1. Install
npm install -g mcp-vision-bridge # global install
npx -y mcp-vision-bridge # or run without installingRequires Node.js โฅ 18.
2. Point it at your vision model
Everything is configured by environment variables โ the MCP reads them from the agent's server config, so you only ever set them once. Keys never appear in tool arguments.
OpenAI-compatible (OpenRouter ยท OpenCode GO ยท any gateway ยท mimo v2.5) โ the default:
Variable | Purpose |
| Your endpoint, e.g. |
| Your API key |
| e.g. |
Anthropic (VISION_PROVIDER=anthropic): VISION_ANTHROPIC_API_KEY + VISION_MODEL=claude-sonnet-4-5
Gemini (VISION_PROVIDER=gemini): VISION_GEMINI_API_KEY + VISION_MODEL=gemini-2.0-flash
Full variable table below.
3. Register with your agent
Pick your platform. The agent immediately gains analyze_image.
{
"mcpServers": {
"vision": {
"command": "npx",
"args": ["-y", "mcp-vision-bridge"],
"env": {
"VISION_OPENAI_BASE_URL": "https://opencode.ai/zen/go/v1",
"VISION_OPENAI_API_KEY": "sk-...",
"VISION_MODEL": "mimo-v2.5"
}
}
}
}Or: claude mcp add vision -- npx -y mcp-vision-bridge
{
"mcp": {
"vision": {
"type": "local",
"command": ["npx", "-y", "mcp-vision-bridge"],
"environment": {
"VISION_OPENAI_BASE_URL": "https://opencode.ai/zen/go/v1",
"VISION_OPENAI_API_KEY": "sk-...",
"VISION_MODEL": "mimo-v2.5"
}
}
}
}[mcp_servers.vision]
command = "npx"
args = ["-y", "mcp-vision-bridge"]
env = { VISION_OPENAI_BASE_URL = "https://opencode.ai/zen/go/v1", VISION_OPENAI_API_KEY = "sk-...", VISION_MODEL = "mimo-v2.5" }{
"mcpServers": {
"vision": {
"command": "npx",
"args": ["-y", "mcp-vision-bridge"],
"env": {
"VISION_OPENAI_BASE_URL": "https://opencode.ai/zen/go/v1",
"VISION_OPENAI_API_KEY": "sk-...",
"VISION_MODEL": "mimo-v2.5"
}
}
}
}{
"mcpServers": {
"vision": {
"command": "npx",
"args": ["-y", "mcp-vision-bridge"],
"env": {
"VISION_OPENAI_BASE_URL": "https://opencode.ai/zen/go/v1",
"VISION_OPENAI_API_KEY": "sk-...",
"VISION_MODEL": "mimo-v2.5"
}
}
}
}Any other MCP client: register a stdio server running npx -y mcp-vision-bridge.
What the agent sees
One tool, with a clear contract the agent can discover:
analyze_image(
image string // path | URL | data: URI | "clipboard" | "raw"
prompt? string // "What error is on screen?"
task? describe | ocr | ui | layout | qa
detail? low | high // default high
save_to? string // write full text to a file
)Every image source, zero friction:
Local path โ
./screenshots/bug.png,C:\shots\ui.pnghttp(s) URL โ
https://example.com/diagram.png,http://localhost:5173/snap.pngdata URI โ
data:image/png;base64,iVBOR..."clipboard"โ analyze whatever screenshot you just copied. That's it."raw"โ the string is the image bytes.
The response is plain text, engineered to be exhaustive: every element, all text verbatim, spatial layout, colors, states, anomalies โ and an explicit "I can't read this part" when it can't. Your text-only agent acts on it like it saw the image.
Real results (mimo-v2.5, no cherry-picking)
llm-vision-mcp + mimo-v2.5 in action. One describe / ocr call each.
1 ยท Terminal / error analysis โ describe
Input: a Windows PowerShell prompt with a compile error highlighted. Output:
The image is a Windows PowerShell terminal. The prompt shows: PS C:\Users\dev> cargo build error[E0277]: the trait bound `Foo: Bar` is not satisfied ...
2 ยท Screenshot OCR โ ocr
Input: a full-screen Notepad screenshot (Chinese CV text, menus, title bar). Output: every line reproduced verbatim, including the menu bar
ๆไปถ(F) ็ผ่พ(E) ๆ ผๅผ(O) ๆฅ็(V) ๅธฎๅฉ(H)and the entire body text, in reading order.
3 ยท Character / asset analysis โ describe
Input: a cartoon character with a raised glass. Output: full breakdown โ white fur, black outlines, red collar with gold tag, champagne flute with bubbles, and the tiny watermark
่ๅพๅฑ ยท qq.335395.comread out.
4 ยท Document/photo understanding โ describe
Input: a photo of an ID card on striped fabric. Output: card type, national emblem, Chinese text, issuing authority and validity dates read exactly, plus a note on the glare partially obscuring the design.
All four ran through the same analyze_image tool, same system prompt, zero prompt-tuning. Try it on your own screenshots โ the clipboard source makes it a one-word ask: "analyze clipboard".
Configuration reference
Variable | Required | Default | Purpose |
| โ |
|
|
| โ |
| Model id passed to the provider |
| โ |
| OpenAI-compatible base (OpenRouter / gateway / opencode GO) |
| yes* | โ | Key for the OpenAI-compatible endpoint |
| โ |
| Anthropic base |
| yes* | โ | Anthropic key |
| โ |
| Gemini base |
| yes* | โ | Google AI Studio key |
| โ |
| Vision output cap (complex screenshots โ 3000+) |
| โ |
| Fetch + provider timeout |
| โ | (memory only) | On-disk image cache dir |
| โ |
|
|
* Required only when that provider is selected.
How it works
text-only agent โโโถ analyze_image โโโถ [resolve image bytes] โโโถ [vision model]
(DeepSeek V4, (mimo / Claude /
Qwen, Kimi โฆ) Gemini / GPT-4o)
โโโโโโโโโโโโโโโ exhaustive text description โโโโโโโโโโโโโโโThe server never sees what the image means โ it resolves the source, sends pixels to your vision model, and returns the text. Pure text in, pure text out. No images in your agent's context window.
Development
npm install
npm run build # tsc โ dist/
npm test # 55 unit + integration tests (vitest)
npm run test:e2e # full stdio pipeline against a mock providerProject layout
src/
config.ts # env-based configuration
errors.ts # typed error hierarchy
image/
resolver.ts # source โ bytes (path/url/data/clipboard/raw)
mime.ts # magic-byte detection
clipboard.ts # OS clipboard image reading
cache.ts # in-memory LRU + on-disk sidecar
prompt/
presets.ts # max-descriptive system prompt + task presets
providers/
base.ts # VisionProvider interface
openai.ts # OpenAI-compatible adapter
anthropic.ts # Anthropic Messages API adapter
gemini.ts # Gemini generateContent adapter
factory.ts # provider selection from config
tool/
analyze-image.ts # the analyze_image handler
output.ts # save_to sidecar writer
index.ts # McpServer wiring + stdio transport
scripts/
e2e-smoke.mjs # end-to-end smoke test
live-smoke.mjs # real-endpoint smoke (env-driven key, never committed)Security
Keys live in env only. Provider API keys are never accepted as tool arguments, so they can't be exfiltrated via prompt injection.
SSRF guard โ
VISION_BLOCK_PRIVATE_URLS=trueblocks localhost/private fetches.Local-first โ the server reads only the files you point at it.
License
DeepSeek writes the code. llm-vision-mcp reads the screen.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseAqualityBmaintenanceGives vision-less LLMs the ability to recognize clipboard screenshots and images by proxying to an OpenAI-compatible vision model.Last updated1332MIT
- AlicenseAqualityBmaintenanceGives text-only coding agents the ability to 'see' images, videos, and screenshots by routing them to a vision model and returning structured text.Last updated837MIT
- FlicenseAqualityBmaintenanceGives any MCP client (OpenCode, Claude Code, Claude Desktop, Cursor, etc.) the ability to process images by automatically converting them to text descriptions using a vision model, so that text-only LLMs can handle image-based queries.Last updated2
- AlicenseAqualityAmaintenanceEnables text-only coding agents to analyze local images using a dedicated vision provider, returning markdown and structured JSON evidence for screenshots, diagrams, UI mockups, and error captures.Last updated111705MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Generate images, GIFs, and PDFs from HTML, URLs, or templates โ from your AI agent.
Analyze images from multiple angles to extract detailed insights or quick summaries. Describe visuโฆ
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/KuaaMU/llm-vision-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server