Vision MCP Server
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 MCP Serverextract text from this image: receipt.jpg"
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 Server
Give your AI agent eyes. An MCP server providing multimodal vision capabilities โ image analysis, OCR, image comparison, and video analysis โ powered by any OpenAI-compatible vision model.
่ฎฉไฝ ็ AI ไปฃ็ๆฅๆ่ง่ง่ฝๅใ ้่ฟไปปไฝ OpenAI ๅ ผๅฎน็่ง่งๆจกๅ๏ผๆไพๅพๅๅๆใOCR ๆๅญ่ฏๅซใๅพๅๅฏนๆฏๅ่ง้ขๅๆใ
Features ยท Quick Start ยท Tools ยท Models ยท ไธญๆ่ฏดๆ
โจ Features
Tool | Description |
๐ | Analyze images with natural language prompts |
๐ | Extract text from images (plain text / Markdown / JSON) |
๐ | Compare 2โ4 images side by side |
๐ฌ | Analyze video content (requires video-capable model) |
Plus:
๐ OpenAI-compatible โ Works with any vision model via standard API
๐ Local files & URLs โ Auto-converts local files to base64
โ๏ธ Configurable โ Environment variables, config files, or both
Related MCP server: vision-mcp
๐ Quick Start
1. Install
git clone https://github.com/Loveacup/vision-mcp-server.git
cd vision-mcp-server
npm install && npm run build2. Configure
Create a .env file in the project root:
VISION_BASE_URL=http://your-server:port/v1/chat/completions
VISION_MODEL=Qwen3-VL-32B
VISION_API_KEY=your-api-key # optional for local models{
"baseUrl": "http://your-server:port/v1/chat/completions",
"model": "Qwen3-VL-32B",
"apiKey": "your-api-key",
"maxTokens": 4096,
"temperature": 0.7
}3. Run
npm startThe server communicates over stdio, designed to be launched by an MCP client such as Claude Code.
๐ Claude Code Integration
Add to your ~/.mcp.json:
{
"mcpServers": {
"vision": {
"command": "node",
"args": ["/path/to/vision-mcp-server/dist/index.js"],
"env": {
"VISION_BASE_URL": "http://your-server:port/v1/chat/completions",
"VISION_MODEL": "Qwen3-VL-32B",
"VISION_API_KEY": "your-api-key"
}
}
}
}Replace
/path/to/vision-mcp-serverwith the actual install path.
โ๏ธ Configuration Reference
Configuration priority: environment variables > config file > defaults
Variable | Config Key | Default | Description |
|
| (required) | OpenAI-compatible chat completions endpoint |
|
|
| Model name |
|
| (empty) | API key (optional for local models) |
|
|
| Max response tokens |
|
|
| Sampling temperature |
๐ ๏ธ Tools Reference
analyze_image
Analyze an image with a vision language model.
Parameter | Type | Required | Default | Description |
| string | โ | โ | Local file path or URL |
| string |
| Analysis prompt | |
|
|
| Detail level |
ocr_image
Extract text from an image using OCR.
Parameter | Type | Required | Default | Description |
| string | โ | โ | Local file path or URL |
| string |
| Language hint, e.g. | |
|
|
| Output format |
compare_images
Compare 2โ4 images and describe differences/similarities.
Parameter | Type | Required | Default | Description |
| string[] | โ | โ | 2โ4 image sources |
| string |
| Comparison prompt |
analyze_video
Analyze video content. Requires a model with video support (e.g., Qwen3-VL).
Parameter | Type | Required | Default | Description |
| string | โ | โ | Local file path or URL |
| string |
| Analysis prompt |
๐ค Supported Models
Model | Provider | Image | Video | Notes |
Qwen3-VL | Self-hosted / API | โ | โ | Recommended. Full multimodal support |
GPT-4o | OpenAI | โ | โ | Strong image analysis |
LLaVA | Self-hosted | โ | โ | Open-source alternative |
InternVL | Self-hosted | โ | โ ๏ธ | Strong multilingual OCR |
Any model served via vLLM, Ollama, LMDeploy, or other OpenAI-compatible servers should work.
Supported formats: JPEG, PNG, GIF, WebP, BMP, SVG | MP4, AVI, MOV, MKV, WebM
๐ Project Structure
vision-mcp-server/
โโโ src/
โ โโโ index.ts # MCP server entry point
โ โโโ config.ts # Configuration loader
โ โโโ types.ts # TypeScript type definitions
โ โโโ tools/
โ โ โโโ analyze-image.ts
โ โ โโโ ocr-image.ts
โ โ โโโ compare-images.ts
โ โ โโโ analyze-video.ts
โ โโโ utils/
โ โโโ api-client.ts # OpenAI-compatible API client
โ โโโ file-handler.ts # Local file โ base64
โโโ package.json
โโโ tsconfig.json
โโโ .env.example
โโโ LICENSE๐ License
๐จ๐ณ ไธญๆ่ฏดๆ
ๅ่ฝ
analyze_imageโ ไฝฟ็จ่ง่ง่ฏญ่จๆจกๅๅๆๅพๅ๏ผๆฏๆ่ช็ถ่ฏญ่จๆ้ฎocr_imageโ OCR ๆๅญ่ฏๅซ๏ผๆฏๆ็บฏๆๆฌใMarkdownใJSON ่พๅบcompare_imagesโ ๅฏนๆฏ 2โ4 ๅผ ๅพๅ๏ผ่ฏๅซๅทฎๅผๅ็ธไผผไนๅคanalyze_videoโ ๅๆ่ง้ขๅ ๅฎน๏ผ้่ฆ Qwen3-VL ็ญๆฏๆ่ง้ข็ๆจกๅ๏ผ
ๅฟซ้ๅผๅง
git clone https://github.com/Loveacup/vision-mcp-server.git
cd vision-mcp-server
npm install && npm run build้
็ฝฎ .env๏ผ
VISION_BASE_URL=http://your-server:port/v1/chat/completions
VISION_MODEL=Qwen3-VL-32B
VISION_API_KEY=your-api-keyๅจ Claude Code ็ ~/.mcp.json ไธญๆทปๅ ๏ผ
{
"mcpServers": {
"vision": {
"command": "node",
"args": ["/path/to/vision-mcp-server/dist/index.js"],
"env": {
"VISION_BASE_URL": "http://your-server:port/v1/chat/completions",
"VISION_MODEL": "Qwen3-VL-32B",
"VISION_API_KEY": "your-api-key"
}
}
}
}ๅฐ /path/to/vision-mcp-server ๆฟๆขไธบๅฎ้
ๅฎ่ฃ
่ทฏๅพใ
Available Tools
4 toolsanalyze_imageC
Analyze an image using a vision language model. Supports local file paths and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Image source: local file path or URL | |
| detail | No | Image detail level for analysis | auto |
| prompt | No | Analysis prompt / question about the image | Describe this image in detail. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist. The description mentions support for local paths and URLs but omits details about output format, file size limits, or side effects. It does not specify that the tool returns a text description or answer.
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?
One sentence with essential information, no redundancy. However, could be expanded to include key constraints without becoming verbose.
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 three parameters, no output schema, and no annotations, the description should explain the return format and limitations. It does not specify what the tool returns (e.g., a text description) or any constraints like file format support.
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?
All parameters have schema descriptions (100% coverage). The description adds context for the 'image' parameter by noting local path and URL support, but does not enhance detail or prompt beyond their schema descriptions.
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 (Analyze) and resource (image), and specifies support for local file paths and URLs. It differentiates from sibling tools like analyze_video and ocr_image by mentioning vision language model, but does not explicitly contrast with compare_images.
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?
No guidance on when to use this tool versus alternatives (e.g., compare_images, ocr_image). No exclusions or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_videoB
Analyze video content using a vision language model. Requires a model with video support (e.g., Qwen3-VL).
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes | Video source: local file path or URL | |
| prompt | No | Analysis prompt / question about the video | Describe what happens in this video. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only mentions model requirements, omitting details like processing speed, output format, potential errors (e.g., unsupported video formats), or whether videos are processed entirely. The agent lacks critical behavioral context.
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 two sentences, front-loading the primary action and then a key requirement. Every word is purposeful; 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's simplicity (two parameters, no output schema), the description is adequate but could be improved by stating what the output is (e.g., returns text) and any limitations (e.g., video length). It leaves some context gaps.
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?
The input schema describes both parameters (video and prompt) with clear documentation, covering 100% of properties. The description does not add additional semantics beyond the schema, so a baseline score of 3 is appropriate.
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 analyzes video content using a vision language model. It implicitly distinguishes from sibling tools like analyze_image (images) and OCR (text in images) by specifying video support. However, it lacks explicit mention of the analysis type beyond general AI interpretation.
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 notes the requirement for a model with video support, implying conditions for use, but gives no explicit guidance on when to use this tool versus siblings (e.g., vs analyze_image for static frames). The context of sibling names provides some implicit differentiation, but the description does not state when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_imagesA
Compare 2-4 images and describe differences/similarities. Supports local file paths and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| images | Yes | 2-4 image sources (file paths or URLs) to compare | |
| prompt | No | Comparison prompt / question about the images | Compare these images and describe the differences and similarities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose any behavioral traits such as return format, side effects, auth needs, or limitations. For a tool with no annotations, this is insufficient.
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?
Description is two concise sentences with no wasted words. It is front-loaded with the main action and covers the key detail about supported input types.
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 simple tool (2 params, no output schema, no annotations), the description is adequate but incomplete. It does not mention return format or potential limitations like unsupported image formats, which would be helpful for an agent.
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 100%; both parameters have descriptions. The description adds no additional meaning beyond what the schema provides. Baseline score of 3 is appropriate.
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?
Description clearly states 'compare 2-4 images and describe differences/similarities', which is a specific verb+resource combination. This distinguishes it from sibling tools like analyze_image (single image analysis) and ocr_image (text extraction).
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 implies usage for comparing images and supports file paths and URLs, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives. Usage context is implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ocr_imageC
Extract text from an image using OCR. Supports plain text, Markdown, and JSON output formats.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | Image source: local file path or URL | |
| format | No | Output format for extracted text | plain |
| languages | No | Hint for expected languages, e.g. 'zh,en' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose behavioral traits. It only states it extracts text via OCR but does not mention read-only nature, error handling, performance, or authentication needs. The description adds no behavioral context beyond the basic function.
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 extremely concise, consisting of two short sentences that immediately convey the core purpose and output options. No unnecessary words.
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 3 parameters and no output schema or annotations, the description lacks completeness. It does not explain potential failures, image format support, or how to interpret results. The missing context makes it less useful for an agent.
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?
All parameters are covered in the input schema (100% coverage). The description adds minimal extra meaning by naming output formats, but this aligns with the format enum. No significant semantic enhancement beyond schema.
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 action (extract text using OCR) and specifies supported output formats. It is specific enough to distinguish from sibling tools like analyze_image or compare_images, though it does not explicitly differentiate.
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 provides minimal guidance on when to use this tool. It lists output formats but does not compare against sibling tools or specify conditions for use (e.g., image quality, file size limits). There is no when-not-to-use advice.
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. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
analyze_image - First observed
analyze_video - First observed
compare_images - First observed
ocr_image
TDQS
Each tool targets a distinct task: image content analysis, video analysis, image comparison, and text extraction. There is no overlap in purpose, making selection clear.
All tools follow a consistent verb_noun pattern (analyze_image, analyze_video, compare_images, ocr_image), with no mixing of styles.
With 4 tools, the set is focused and not overwhelming. It covers core vision tasks, though a few more (e.g., image generation) could be added for broader scope.
The tools cover image/video analysis, OCR, and comparison. Minor gaps exist (e.g., image metadata extraction), but the surface is sufficient for common vision use cases.
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 Connectors
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
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 and videos with Gemini to get fast, reliable visual insights. Handle content from Uโฆ
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceEnables AI agents to analyze images through vision AI providers (Gemini, OpenAI, Claude), performing tasks like image description, object detection with bounding boxes, region-specific analysis, and precise color extraction without consuming context window with raw pixels.4-
- AlicenseAqualityCmaintenanceGive MCP-compatible AI agents image analysis, metadata inspection, cropping, OCR, and image comparison through any OpenAI-compatible vision model.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to analyze images using any OpenAI-compatible vision API, providing tools for image analysis, OCR, error diagnosis, diagram understanding, and chart analysis.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to analyze images via user-configured cloud vision APIs (Gemini or OpenAI-compatible), returning structured results such as summaries, OCR text, and objects.41MIT
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/Loveacup/vision-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server