Skip to main content
Glama

๐Ÿ‘๏ธ Vision MCP Server

License: MIT Node.js MCP

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_image

Analyze images with natural language prompts

๐Ÿ“ ocr_image

Extract text from images (plain text / Markdown / JSON)

๐Ÿ”€ compare_images

Compare 2โ€“4 images side by side

๐ŸŽฌ analyze_video

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 build

2. 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 start

The 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-server with the actual install path.

โš™๏ธ Configuration Reference

Configuration priority: environment variables > config file > defaults

Variable

Config Key

Default

Description

VISION_BASE_URL

baseUrl

(required)

OpenAI-compatible chat completions endpoint

VISION_MODEL

model

Qwen3-VL-32B

Model name

VISION_API_KEY

apiKey

(empty)

API key (optional for local models)

VISION_MAX_TOKENS

maxTokens

4096

Max response tokens

VISION_TEMPERATURE

temperature

0.7

Sampling temperature

๐Ÿ› ๏ธ Tools Reference

analyze_image

Analyze an image with a vision language model.

Parameter

Type

Required

Default

Description

image

string

โœ…

โ€”

Local file path or URL

prompt

string

"Describe this image in detail."

Analysis prompt

detail

"low" | "high" | "auto"

"auto"

Detail level

ocr_image

Extract text from an image using OCR.

Parameter

Type

Required

Default

Description

image

string

โœ…

โ€”

Local file path or URL

languages

string

""

Language hint, e.g. "zh,en"

format

"plain" | "markdown" | "json"

"plain"

Output format

compare_images

Compare 2โ€“4 images and describe differences/similarities.

Parameter

Type

Required

Default

Description

images

string[]

โœ…

โ€”

2โ€“4 image sources

prompt

string

"Compare these images..."

Comparison prompt

analyze_video

Analyze video content. Requires a model with video support (e.g., Qwen3-VL).

Parameter

Type

Required

Default

Description

video

string

โœ…

โ€”

Local file path or URL

prompt

string

"Describe what happens in this video."

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

MIT


๐Ÿ‡จ๐Ÿ‡ณ ไธญๆ–‡่ฏดๆ˜Ž

ๅŠŸ่ƒฝ

  • 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 tools
analyze_imageC

Analyze an image using a vision language model. Supports local file paths and URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesImage source: local file path or URL
detailNoImage detail level for analysisauto
promptNoAnalysis prompt / question about the imageDescribe this image in detail.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesVideo source: local file path or URL
promptNoAnalysis prompt / question about the videoDescribe what happens in this video.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYes2-4 image sources (file paths or URLs) to compare
promptNoComparison prompt / question about the imagesCompare these images and describe the differences and similarities.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesImage source: local file path or URL
formatNoOutput format for extracted textplain
languagesNoHint for expected languages, e.g. 'zh,en'

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 4 tool updatesv1.0.0
    • First observedanalyze_image
    • First observedanalyze_video
    • First observedcompare_images
    • First observedocr_image

TDQS

A3.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (analyze_image, analyze_video, compare_images, ocr_image), with no mixing of styles.

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessUnresponsive

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

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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

Latest Blog Posts

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