Vision MCP
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., "@Vision MCPOCR the text in ~/Desktop/receipt.png"
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.
Vision MCP
The Universal Vision-Language Model MCP Server — Image Understanding & OCR for Any MCP Client
English | 中文 | 日本語 | Deutsch | Changelog
Vision MCP is a universal MCP server that plugs any OpenAI-compatible vision-language model into any MCP client — Claude Code, Reasonix, Cursor, Windsurf, VS Code and more. It exposes two tools: image understanding (describe & Q&A) and OCR (text extraction). Your images never leave your machine.
It is not tied to any model vendor: point it at local Ollama, vLLM, LM Studio, or any remote OpenAI-compatible endpoint — just change configuration, not code.
✨ Highlights
🧠 Model-agnostic — Works with any vision model exposing an OpenAI-compatible API (
qwen2.5vl,llama3.2-vision,minicpm-v, GPT-4o, Gemini…), plus Ollama's native API forkeep_aliveresidency🔌 Client-agnostic — A single server, usable from any MCP client via stdio
📦 Zero-dependency distribution — Ship a single
vision-mcp.exe(Node SEA); recipients need no Node.js, no npm, no Python🖼️ Multi-image — Pass multiple images in one call natively
🔒 Privacy-first — 100% local inference; images never leave the machine (unless you point it at a remote endpoint)
🧭 Smart path handling — Absolute, relative, and
~paths; clear Chinese/English error messages⚙️ Fully configurable — Endpoint, model name, API format, keep-alive and timeout via environment variables
Related MCP server: readpic MCP Server
🏗️ Architecture
┌──────────────┐ MCP stdio ┌────────────────────┐ HTTP ┌───────────────────────┐
│ Any MCP │ ─────────────→ │ vision-mcp server │ ──────→ │ Vision backend │
│ client │ ←───────────── │ (Node/TS or exe) │ ←────── │ Ollama | vLLM | ... │
└──────────────┘ text result └────────────────────┘ └───────────────────────┘The server is a thin, stateless bridge: it receives image paths from the MCP client, base64-encodes them, forwards them to the vision backend, and returns the model's text answer.
🛠️ Tools
Tool | Description | Arguments |
| Image understanding / visual Q&A |
|
| Extract all text from images, line-preserved |
|
🚀 Quick Start
1. Run a vision backend (e.g. Ollama)
ollama pull qwen2.5vl:3b
ollama serveVerify: curl http://localhost:11434/api/tags should list your model.
2. Get the server
Option A — Single-file executable (no runtime needed):
Download vision-mcp.exe from the Releases page.
Option B — Run from source:
npm install
npm run build3. Register in your MCP client
Create/merge .mcp.json in your project root (or ~/.claude/.mcp.json for Claude Code globally):
{
"mcpServers": {
"vision-mcp": {
"command": "/path/to/vision-mcp.exe",
"args": []
}
}
}Running from source? Use
"command": "node", "args": ["/path/to/dist/server.cjs"].
4. Use it
「Use vision-mcp to look at ./screenshot.png and describe it」
「OCR the text in ./doc.jpg」⚙️ Configuration
All settings are optional environment variables, passed via the env field in .mcp.json:
Variable | Default | Description |
|
| API format: |
|
| Backend address. |
|
| Model name |
|
| Model residency (Ollama mode only); |
|
| Per-call timeout (covers cold-start model load) |
Switching backends (example: vLLM)
{
"mcpServers": {
"vision-mcp": {
"command": "/path/to/vision-mcp.exe",
"args": [],
"env": {
"VLM_API_MODE": "openai",
"VLM_BASE_URL": "http://192.168.1.10:8000/v1",
"VLM_MODEL": "Qwen/Qwen2.5-VL-3B-Instruct"
}
}
}
}That's it — no code changes, no rebuild when switching providers.
📦 Distribution to Others
Build the single-file executable:
npm run build:exe # outputs dist/vision-mcp.exe (~89 MB)Recipients only need to:
Have their own vision backend (Ollama + model, or set
VLM_BASE_URLto a shared/remote service)Register the exe in any MCP client — no Node, no Python
❓ FAQ
Because the server intentionally exposes exactly two tools: describe_image (image understanding) and ocr_image (OCR). The executable path shown next to the server is the server program itself, not a third tool.
The model is loaded on first use (a few seconds to tens of seconds). Set VLM_KEEP_ALIVE=30m (default) so the model stays resident — subsequent calls return in under a second.
The config is fine; the vision backend is down. Start it: ollama serve, and verify with curl http://localhost:11434/api/tags.
The SEA-built exe embeds your bundle into a copy of node.exe, which invalidates the original Microsoft signature and can trigger false positives. Alternative: build a native binary with Bun: bun build --compile src/server.ts --outfile dist/vision-mcp.exe.
describe_image/ocr_image require a vision (multimodal) model. A text-only model will not read images.
🧑💻 Development
npm install # install dependencies
npm run build # esbuild bundle → dist/server.cjs
npm test # end-to-end test against a real backend (official MCP client over stdio)
npm run build:exe # package single-file executable (Node SEA)End-to-end tests connect through the official MCP SDK client and exercise both tools, multi-image input, and error paths.
📁 Project Structure
├── src/
│ └── server.ts # MCP server source (TypeScript)
├── scripts/
│ ├── test-client.mjs # End-to-end test (official MCP client)
│ └── build-sea.mjs # Single-file executable builder
├── package.json # Build/test/package scripts
└── .mcp.json # Example registration config🤝 Contributing
Issues and pull requests are welcome! For new features, please open an issue to discuss before submitting a PR.
Run
npm run buildto ensure the TypeScript compilesRun
npm testto ensure existing behavior is preservedKeep changes focused and documented
📄 License
MIT © Ameng
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
- FlicenseAqualityCmaintenanceMCP server enabling LLM clients without vision capability to process images by delegating to local Ollama vision models. Supports describing images, OCR, asking questions, and processing clipboard images.4
- Flicense-qualityCmaintenanceEnables AI clients like Claude to understand, analyze, and describe local images via VL models through the MCP protocol.
- AlicenseAqualityCmaintenanceGive MCP-compatible AI agents image analysis, metadata inspection, cropping, OCR, and image comparison through any OpenAI-compatible vision model.6MIT
- AlicenseAqualityBmaintenanceEnables non-multimodal models to see images by providing MCP tools for image understanding and OCR, backed by any OpenAI-compatible vision model.2MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
OCR.space MCP — wraps the OCR.space API (ocr.space) for image/PDF → text OCR.
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/Amengclass/vision-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server