Skip to main content
Glama

VLM MCP Server

中文文档 | English

VLM MCP Server hero

A Model Context Protocol (MCP) server providing vision & video analysis tools, configurable with any model provider.

This is a reverse-engineered and extended reimplementation of @z_ai/mcp-server (Apache-2.0, credit to Chao Gong, Lei Yuan / Z.AI). It introduces a provider abstraction layer so the same set of tools can run against any of three API families:

  • Chat Completions — OpenAI-compatible POST {base}/chat/completions (OpenAI, Z.AI, Zhipu, OpenRouter, Together, Groq, DeepSeek, Moonshot, local Ollama / LM Studio, …)

  • Responses — OpenAI POST {base}/responses (gpt-4o, o-series reasoning models)

  • Anthropic MessagesPOST {base}/v1/messages (Claude, and Anthropic-compatible gateways)

Quick Start

npx -y @syntx-ai/vlm-mcp-server

That's it for the server side — it speaks MCP over stdio. You need to configure it in your MCP client. Pick your provider and set three environment variables:

Provider

Environment variables

Chat Completions

OPENAI_CHAT_COMPLETIONS_API_KEY · OPENAI_CHAT_COMPLETIONS_BASE_URL · OPENAI_CHAT_COMPLETIONS_MODEL

Responses

OPENAI_RESPONSES_API_KEY · OPENAI_RESPONSES_BASE_URL · OPENAI_RESPONSES_MODEL

Anthropic

OPENAI_ANTHROPIC_API_KEY · OPENAI_ANTHROPIC_BASE_URL · OPENAI_ANTHROPIC_MODEL

Claude Code one-liner (Chat Completions example — replace with your values):

claude mcp add -s user vlm-mcp-server \
  --env OPENAI_CHAT_COMPLETIONS_API_KEY=sk-... \
       OPENAI_CHAT_COMPLETIONS_BASE_URL=https://api.openai.com/v1/ \
       OPENAI_CHAT_COMPLETIONS_MODEL=gpt-4o \
  -- npx -y @syntx-ai/vlm-mcp-server

For other clients (Cline, OpenCode, Crush, Roo Code, …), see Client Configuration.

Related MCP server: mcp-see

Available Tools

Image Analysis

Tool

Description

ui_to_artifact

Convert UI screenshots to code, prompts, specs, or descriptions

extract_text_from_screenshot

OCR — extract code, terminal output, or text from screenshots

diagnose_error_screenshot

Analyze error messages and stack traces, suggest fixes

understand_technical_diagram

Analyze architecture, flowchart, UML, ER, and sequence diagrams

analyze_data_visualization

Extract insights, trends, and anomalies from charts

ui_diff_check

Visual regression — compare expected vs actual UI, prioritize issues

analyze_image

General-purpose image analysis (fallback)

Video Analysis

Tool

Description

analyze_video

Video content analysis (local files or URLs, ≤8MB, MP4/MOV/M4V)

Configuration

The server loads variables from a .env file at startup (real environment variables take precedence). Three layers are supported; precedence is per-provider groups > generic > legacy.

Per-provider groups

Configure each API family independently. auto picks the first group with both a key and a base URL set.

Variable group

API family

OPENAI_CHAT_COMPLETIONS_API_KEY / _BASE_URL / _MODEL

Chat Completions

OPENAI_RESPONSES_API_KEY / _BASE_URL / _MODEL

Responses

OPENAI_ANTHROPIC_API_KEY / _BASE_URL / _MODEL

Anthropic Messages

Generic variables

Variable

Description

Default

VLM_API_KEY

API key

(required)

VLM_BASE_URL

Provider API root

Zhipu default

VLM_VISION_MODEL

Model name

glm-4.6v

VLM_PROVIDER

Provider family: auto / chat-completions / responses / anthropic

auto

VLM_VISION_MODEL_TEMPERATURE

Sampling temperature

0.8

VLM_VISION_MODEL_TOP_P

Top-p

0.6

VLM_VISION_MODEL_MAX_TOKENS

Max output tokens

32768

VLM_TIMEOUT

Request timeout (ms)

300000

VLM_RETRY_COUNT

Retry attempts

1

VLM_ENABLE_THINKING

Enable provider-specific reasoning / thinking request fields. Off by default for broad OpenAI-compatible Chat Completions support.

false

VLM_ANTHROPIC_VERSION

anthropic-version header (Anthropic only)

2023-06-01

VLM_LOG_PATH

Custom log file path

~/.vlm/vlm-mcp-YYYY-MM-DD.log

Provider auto-detection

In auto mode (when no OPENAI_* group is set), the provider is inferred as follows:

  • Base URL contains anthropic, or key starts with sk-antanthropic

  • Otherwise → chat-completions (the most broadly compatible default)

Usage Examples

Once the server is installed in your client, you can use it through conversation. For example, in Claude Code, type describe this demo.png — the MCP Server will process the image and return a description (the image must exist in the current directory).

Outside Claude Code, pasting an image directly into the client will NOT invoke this MCP Server — the client encodes the image and calls the model API itself. Best practice: place images in a local directory and refer to them by name or path in conversation, e.g. What does demo.png describe?

Troubleshooting

Run the server directly from the command line to verify it starts, isolating environment / permission issues:

# Linux / macOS
OPENAI_CHAT_COMPLETIONS_API_KEY=sk-... \
OPENAI_CHAT_COMPLETIONS_BASE_URL=https://api.openai.com/v1/ \
OPENAI_CHAT_COMPLETIONS_MODEL=gpt-4o \
npx -y @syntx-ai/vlm-mcp-server

# Windows CMD
set OPENAI_CHAT_COMPLETIONS_API_KEY=sk-... && set OPENAI_CHAT_COMPLETIONS_BASE_URL=https://api.openai.com/v1/ && set OPENAI_CHAT_COMPLETIONS_MODEL=gpt-4o && npx -y @syntx-ai/vlm-mcp-server

# Windows PowerShell
$env:OPENAI_CHAT_COMPLETIONS_API_KEY="sk-..."; $env:OPENAI_CHAT_COMPLETIONS_BASE_URL="https://api.openai.com/v1/"; $env:OPENAI_CHAT_COMPLETIONS_MODEL="gpt-4o"; npx -y @syntx-ai/vlm-mcp-server
  • If it starts successfully, the environment is correct — the issue is likely in the client's MCP config; double-check it.

  • If it fails, investigate the error message (pasting it to an LLM for analysis is recommended).

Common issues

Connection failure

  1. Ensure Node.js 18 or newer is installed.

  2. Run node -v and npx -v to confirm the runtime is available.

  3. Verify the environment variables (OPENAI_* triple or VLM_*) are set correctly.

Invalid API Key

  1. Confirm the API Key was copied correctly.

  2. Check that the API Key is activated.

  3. Ensure the selected provider family matches the API Key (Chat Completions / Responses / Anthropic).

  4. Check that the API Key has sufficient balance.

Connection timeout

  1. Check your network connection.

  2. Check firewall settings.

  3. Try switching to a different provider family or base URL.

  4. Increase the timeout (VLM_TIMEOUT, default 300000ms).

Architecture

src/
├── index.ts                  # Entry point: starts the MCP server, registers all tools
├── types/                    # Error types (McpError, ApiError, ValidationError, …)
├── core/
│   ├── environment.ts        # Env config (VLM_* + OPENAI_* groups), URL resolution
│   ├── chat-service.ts       # Delegates to the active VisionProvider
│   ├── file-service.ts       # File validation + base64 encoding (image/video)
│   ├── base-image-service.ts # Shared image-processing logic for all image tools
│   ├── api-common.ts         # Message builders, response helpers, retry wrapper
│   ├── error-handler.ts      # Error hierarchy + handling/recovery strategies
│   └── logger.ts            # stderr + file logger (keeps stdout JSON-clean)
├── providers/                # Pluggable model-provider abstraction
│   ├── types.ts              # VisionProvider interface, ChatMessage, postJson helper
│   ├── chat-completions.ts   # OpenAI-compatible Chat Completions
│   ├── responses.ts          # OpenAI Responses API
│   ├── anthropic.ts          # Anthropic Messages API
│   └── index.ts              # Provider selection (VLM_PROVIDER / auto-infer)
├── prompts/                  # System prompts for each specialized tool
└── tools/                    # 8 tool registrations (7 image + 1 video)

The provider layer (src/providers/) is the key extension. Each provider implements a VisionProvider interface that takes normalized ChatMessage[] (the OpenAI Chat Completions content-part format as internal lingua franca) and translates it to the provider's wire format. chat-service.ts simply delegates to the resolved provider, so none of the tool code needed to change.

License

Apache-2.0

Available Tools

8 tools
analyze_data_visualizationA

Analyze data visualizations, charts, graphs, and dashboards to extract insights and trends.

Use this tool ONLY when the user has a data visualization image and wants to understand the data patterns or metrics. This tool specializes in interpreting visual data representations.

Do NOT use for: UI mockups, error messages, or technical architecture diagrams.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesWhat insights or information you want to extract from this visualization.
image_sourceYesLocal file path or remote URL to the image
analysis_focusNoOptional: specify what to focus on (e.g., 'trends', 'anomalies', 'comparisons', 'performance metrics'). Leave empty for comprehensive analysis.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states the tool specializes in interpreting visual data representations but does not disclose potential limitations (e.g., image format requirements, handling of multiple images, or that it returns textual insights). The core behavior is clear, but additional context would improve transparency.

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 concise, front-loaded with the main purpose, then usage guidance, then exclusions. Every sentence adds value and there is no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple tool with no output schema and no annotations. The description adequately covers purpose, scope, and exclusions. It lacks explicit mention of the output format, which would be helpful for the agent, but the core context is complete enough for selection and invocation.

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%, so each parameter (prompt, image_source, analysis_focus) already has a description. The tool description does not add any extra meaning about parameters, which is acceptable given the schema fully covers them. Baseline 3 applies.

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?

The description uses a specific verb and resource: 'Analyze data visualizations, charts, graphs, and dashboards to extract insights and trends.' It clearly distinguishes this tool from siblings like extract_text_from_screenshot and understand_technical_diagram by focusing on data visualizations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Use this tool ONLY when the user has a data visualization image and wants to understand the data patterns or metrics.' It also lists exclusions (UI mockups, error messages, technical architecture diagrams), making when/when-not usage very clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_imageA

General-purpose image analysis for scenarios not covered by specialized tools.

Use this tool as a FALLBACK when none of the other specialized tools (ui_to_artifact, extract_text_from_screenshot, diagnose_error_screenshot, understand_technical_diagram, analyze_data_visualization, ui_diff_check) fit the user's need.

This tool provides flexible image understanding for any visual content.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDetailed description of what you want to analyze, extract, or understand from the image. Be specific about your requirements.
image_sourceYesLocal file path or remote URL to the image

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of disclosure. It accurately describes a read-only analysis tool and mentions flexibility, but does not disclose output format, limitations, or error behavior. This adds some context but leaves gaps common for analysis tools.

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 concise, with two short sentences that front-load the purpose and usage. It includes a list of siblings but keeps it compact and relevant. Every sentence earns its place without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description sufficiently covers the fallback context and general capabilities. Given the simplicity of the tool (2 params, no output schema), it does not need to explain return values. It could mention limitations of the fallback nature, but overall it is complete enough for effective selection.

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%, and both parameters are well-described in the schema. The tool description itself adds no extra parameter-specific meaning beyond noting the tool's general purpose. Baseline for full schema coverage is 3.

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?

The description clearly states this is a general-purpose image analysis tool, with a specific verb ('analyze') and resource ('image'). It explicitly lists sibling tools, distinguishing itself as a fallback rather than a specialized handler, which makes its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Use this tool as a FALLBACK when none of the other specialized tools... fit the user's need.' It names the alternatives, making the selection criteria very clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

analyze_videoA

Analyze video content using advanced AI vision models.

Use this tool when the user wants to:

  • Understand what happens in a video

  • Extract key moments or actions from video

  • Analyze video content, scenes, or sequences

  • Get descriptions of video footage

  • Identify objects, people, or activities in video

Supports both local files and remote URL. Maximum file size: 8MB. Supports MP4, MOV, M4V formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDetailed text prompt describing what to analyze, extract, or understand from the video
video_sourceYesLocal file path or remote URL to the video (supports MP4, MOV, M4V)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral transparency. It discloses practical constraints: 'Maximum file size: 8MB' and 'Supports MP4, MOV, M4V formats,' which are valuable. However, it does not describe the output format, failure modes, or any asynchronous behavior, leaving some uncertainty about what the tool actually returns.

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 well-structured: a one-sentence summary, a concise bulleted list of use cases, and a final sentence with constraints. It is front-loaded with the primary purpose, and every line contributes meaningful information without unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple tool with only two parameters and no output schema, the description covers the essential context: what it does, when to use it, and practical limits. The main gap is the lack of explicit output behavior, but the use cases imply textual descriptions, so it is reasonably complete.

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 already has 100% description coverage, with both 'video_source' and 'prompt' adequately described. The tool description adds no additional semantic meaning beyond what the schema provides (e.g., it repeats format support but does not clarify prompt syntax or expected detail level), so the 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?

The description clearly states the tool's function with a specific verb and resource: 'Analyze video content using advanced AI vision models.' It further distinguishes itself from siblings (e.g., analyze_image) by focusing exclusively on video and listing concrete use cases like 'Extract key moments' and 'Identify objects, people, or activities in video'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance through the bulleted 'Use this tool when the user wants to:' list, covering multiple video analysis intents. It does not, however, mention when not to use it or name alternative tools (like analyze_image for static images), leaving the exclusion criteria implicit based on the sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diagnose_error_screenshotA

Diagnose and analyze error messages, stack traces, and exception screenshots.

Use this tool ONLY when the user has an error screenshot and needs help understanding or fixing it. This tool specializes in error analysis and provides actionable solutions.

Do NOT use for: code extraction, UI analysis, or diagram understanding.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDescription of what you need help with regarding this error. Include any relevant context about when it occurred.
contextNoOptional: additional context about when the error occurred (e.g., 'during npm install', 'when running the app', 'after deployment'). Helps with more accurate diagnosis.
image_sourceYesLocal file path or remote URL to the image

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates that the tool specializes in error analysis and 'provides actionable solutions,' implying a read-analyze-advise workflow. While it doesn't mention edge cases like image quality or privacy, the core behavior is clear and not contradicted by any annotations.

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 concise and well-structured, front-loading the primary function and then providing usage guidance and exclusions in separate short paragraphs. Every sentence contributes meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only 3 parameters, all documented in the schema. The description explains when to use it and what it returns ('actionable solutions'), which is enough for selection and invocation. It does not specify failure modes (e.g., unreadable images), but this is not essential for basic use. The explicit do-not-use list adds valuable contextual grounding.

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 provides full descriptions for all three parameters, achieving 100% coverage, so the baseline of 3 applies. The description adds context about the tool's purpose but does not introduce parameter-level details beyond the schema, which is appropriate given the strong schema coverage.

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?

The description clearly states the tool's function with a specific verb phrase 'Diagnose and analyze' and identifies the exact resource: 'error messages, stack traces, and exception screenshots.' It also differentiates itself from sibling tools by explicitly excluding code extraction, UI analysis, and diagram understanding, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Use this tool ONLY when the user has an error screenshot and needs help understanding or fixing it.' It also provides clear exclusion criteria ('Do NOT use for: code extraction, UI analysis, or diagram understanding'), offering strong guidance relative to the sibling image analysis tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_text_from_screenshotA

Extract and recognize text from screenshots using advanced OCR capabilities.

Use this tool ONLY when the user has a screenshot containing text and wants to extract it. This tool specializes in OCR for code, terminal output, documentation, and general text extraction.

Do NOT use for: UI design conversion, error diagnosis, or diagram understanding.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesInstructions for text extraction. Specify what type of text to extract and any formatting requirements.
image_sourceYesLocal file path or remote URL to the image
programming_languageNoOptional: specify the programming language if the screenshot contains code (e.g., 'python', 'javascript', 'java'). Leave empty for auto-detection or non-code text.

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so description carries full burden. It discloses scope (OCR for code/terminal/docs) and non-goals, but fails to disclose output format, whether bounding boxes/layout are preserved, accuracy limitations, or behavior on poor images. For a no-output-schema tool, this is a substantive gap.

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?

Four sentences, front-loaded with purpose, each sentence adds distinct information (definition, when-to-use, specialties, exclusions). No fluff; 'advanced OCR capabilities' is slightly filler but harmless.

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?

Covers purpose, usage, exclusions, and parameter coverage via schema. However, with no output schema and no mention of return format or failure behavior, an agent cannot fully anticipate tool output. Given moderate complexity, this is a clear gap.

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%, so all three parameters (image_source, prompt, programming_language) are already documented. Description adds minor context about OCR specializations that hints at prompt/language usage, but no syntax-level detail, so baseline 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 opens with specific verb+resource: 'Extract and recognize text from screenshots using advanced OCR capabilities.' It clearly distinguishes from siblings by explicitly listing exclusions (UI design conversion, error diagnosis, diagram understanding), making purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'ONLY when the user has a screenshot containing text and wants to extract it.' Provides positive context (code, terminal output, documentation) and a clear 'Do NOT use for' list that semantically maps to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ui_diff_checkA

Compare two UI screenshots to identify visual differences and implementation discrepancies.

Use this tool ONLY when the user wants to compare an expected/reference UI with an actual implementation. This tool is specialized for UI quality assurance and design-to-implementation verification.

Do NOT use for: general image comparison, error diagnosis, or analyzing single UIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesInstructions for the comparison. Specify what aspects to focus on or what level of detail is needed.
actual_image_sourceYesLocal file path or remote URL to the image
expected_image_sourceYesLocal file path or remote URL to the image

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It states the tool identifies visual differences and implementation discrepancies, but does not disclose whether it is non-mutating, what output format it returns, or any limitations/error behavior. The read-only nature is inferable from 'compare' and 'diff_check', but not fully explicit.

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 concise: four sentences, with the core purpose front-loaded in the first sentence. The subsequent sentences add value by specifying when to use, specialization, and exclusions without unnecessary repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three simple string parameters and no output schema, the description covers purpose, use cases, and exclusions effectively. It does not explain the return value or output format, but that is not critical for such a straightforward comparison tool; the description is sufficiently complete for an agent to select and invoke it correctly.

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%, with each parameter (expected_image_source, actual_image_source, prompt) described as local file path/remote URL or instructions. The description adds context by mapping 'expected/reference' to expected_image_source and 'actual implementation' to actual_image_source, but does not go beyond the schema in explaining parameter syntax or usage.

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?

The description clearly states the tool 'Compare two UI screenshots to identify visual differences and implementation discrepancies', using a specific verb and resource. It also distinguishes this tool from siblings by focusing on UI quality assurance and design-to-implementation verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this tool ONLY when the user wants to compare an expected/reference UI with an actual implementation' and lists clear exclusions: 'Do NOT use for: general image comparison, error diagnosis, or analyzing single UIs.' This provides effective when/when-not guidance, implicitly steering users to sibling tools like analyze_image or diagnose_error_screenshot.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ui_to_artifactA

Convert UI screenshots into various artifacts: code, prompts, design specifications, or descriptions.

Use this tool ONLY when the user wants to:

  • Generate frontend code from UI design (output_type='code')

  • Create AI prompts for UI generation (output_type='prompt')

  • Extract design specifications (output_type='spec')

  • Get natural language description of the UI (output_type='description')

Do NOT use for: screenshots containing text/code to extract, error messages, diagrams, or data visualizations.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesDetailed instructions describing what to generate from this UI image. Should clearly state the desired output and any specific requirements.
output_typeYesType of output to generate. Options: 'code' (generate frontend code), 'prompt' (generate AI prompt for recreating this UI), 'spec' (generate design specification document), 'description' (natural language description of the UI).
image_sourceYesLocal file path or remote URL to the image

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosure. It reveals behavioral limitations (unsuitable for text/code extraction, error messages, etc.) and conveys the core transformation behavior. It stops short of detailing output formats, failure modes, or prerequisites, but the provided context is largely sufficient.

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?

The description is well-organized into a clear opening sentence, a bulleted list of use cases, and an explicit exclusion list. While slightly longer than the minimal viable, every section contributes to effective instruction without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with the fully described input schema, covers the tool's purpose, valid output types, specific use cases, and content exclusions. The absence of an output schema is offset by the schema's enum descriptions, making the overall description complete enough for an agent to invoke the tool correctly.

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%, so the baseline is 3. The description's bullet list largely mirrors the output_type enum values already documented in the schema, adding little new parameter-level meaning. No additional detail is given for image_source or prompt beyond their schema descriptions.

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?

The description clearly states the tool's function: converting UI screenshots into code, prompts, specs, or descriptions. It differentiates itself from sibling tools by explicitly listing excluded content types like text/code extraction, error messages, diagrams, and data visualizations, which correspond to other tools' scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use scenarios for each output_type and lists concrete 'Do NOT use' cases (screenshots with extractable text/code, error messages, diagrams, data visualizations), making tool selection unambiguous for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

understand_technical_diagramA

Analyze and explain technical diagrams including architecture diagrams, flowcharts, UML, ER diagrams, and system design diagrams.

Use this tool ONLY when the user has a technical diagram and wants to understand its structure or components. This tool specializes in interpreting visual technical documentation.

Do NOT use for: UI screenshots, error messages, or data visualizations/charts.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesWhat you want to understand or extract from this diagram.
diagram_typeNoOptional: specify the diagram type if known (e.g., 'architecture', 'flowchart', 'uml', 'er-diagram', 'sequence'). Leave empty for auto-detection.
image_sourceYesLocal file path or remote URL to the image

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the tool's specialty and scope but doesn't mention output format, limitations, or any requirements beyond image input. For an analysis tool, this is adequate but not rich; no contradictions with annotations (none present).

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 four sentences, each serving a purpose: defining the tool, giving usage directives, stating its specialization, and listing exclusions. There is no fluff or redundancy; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema and annotations, the description provides a complete picture of the tool's purpose, scope, and usage boundaries. The main gap is the unspecified return format, but 'explain' implies a text response, so the completeness is high.

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%, meaning each parameter (image_source, prompt, diagram_type) has its own description. The tool description adds no additional parameter-level semantics beyond what the schema already provides, so a baseline 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?

The description clearly states the tool's verb+resource: 'Analyze and explain technical diagrams' and enumerates specific types (architecture, flowcharts, UML, ER, system design). It distinctly separates this from siblings by providing explicit exclusions, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use ('Use this tool ONLY when...') and when-not-to-use ('Do NOT use for: UI screenshots...') but does not name specific alternative tools. Despite this, it offers clear usage boundaries and context, which is nearly a 5 except for the missing explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.3/5.0
Disambiguation5/5

Each specialized tool targets a distinct visual content type (UI, text, errors, diagrams, charts, UI comparison), and the general analyze_image explicitly serves as a fallback for anything not covered. The routing guidelines in the descriptions prevent overlap and misselection.

Naming Consistency4/5

All tools follow a consistent snake_case convention with action-oriented verbs (extract, diagnose, understand, analyze) followed by their target. Minor deviations: ui_to_artifact and ui_diff_check use compound phrases rather than a strict verb_noun form, but the pattern remains readable.

Tool Count5/5

Eight tools provide a well-scoped set for a vision-language server: five specialized analyzers, one comparison tool, one general fallback, and one video tool. This falls comfortably within the ideal range and every tool addresses a meaningful use case.

Completeness5/5

The tool set covers the full spectrum of VLM analysis needs: UI, text, errors, diagrams, data visualizations, UI differences, general images, and videos. The fallback analyze_image ensures no input type falls through, making the surface complete.

Maintenance

ActivityStale
ResponsivenessSyncing

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

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/syntx-ai/vlm-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server