Skip to main content
Glama

Vision MCP Server

基于 VLM(视觉语言模型)的 MCP 服务,提供视觉问答、图像解读、目标检测、OCR 以及完整的图像处理工具链。通过 OpenAI 兼容 API 接入任意 VLM 大模型,以 stdio 方势提供服务。

特性

  • 4 个 VLM 工具:视觉问答、视觉解读、目标检测(归一化包围盒)、OCR 文字提取

  • 8 个图像处理工具:元信息、缩放、裁剪、旋转、镜像、拼接、画方框、写文字(中文)

  • 忠实还原:所有 VLM 调用内置"不脑补"指令 + temperature: 0

  • 自动缩放:VLM 工具内置 max_dimension 参数,发送前自动等比缩放,避免超限

  • 坐标归一化:检测工具通过系统提示词 + 后处理双重保障,始终返回 0-1 归一化包围盒

  • 双输入模式:支持本地文件路径和 URL 两种图片输入方式

  • 双输出模式:图像处理工具返回 base64 图片内容,可选 output_path 保存到文件

Related MCP server: mcp-vision

快速开始

环境要求

  • Node.js >= 18

  • 任意 OpenAI 兼容的 VLM API(如 OpenAI GPT-4o、Qwen-VL、GLM-4V 等)

安装

git clone <repo-url>
cd vision-mcp
npm install
npm run build

配置

通过环境变量配置:

环境变量

必需

说明

示例

VLM_BASE_URL

VLM API 基础地址

https://api.openai.com/v1

VLM_API_KEY

API 密钥

sk-xxxx

VLM_MODEL_ID

模型 ID

gpt-4o

VISION_MCP_FONT_PATH

中文字体文件路径(.ttf/.otf)

fonts/SimHei.ttf

启动

VLM_BASE_URL=https://api.openai.com/v1 \
VLM_API_KEY=sk-xxxx \
VLM_MODEL_ID=gpt-4o \
node dist/index.js

在 MCP 客户端中配置

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "vision": {
      "command": "node",
      "args": ["/path/to/vision-mcp/dist/index.js"],
      "env": {
        "VLM_BASE_URL": "https://api.openai.com/v1",
        "VLM_API_KEY": "sk-xxxx",
        "VLM_MODEL_ID": "gpt-4o",
        "VISION_MCP_FONT_PATH": "/path/to/vision-mcp/fonts/SimHei.ttf"
      }
    }
  }
}

Cursor / 其他 MCP 客户端:参照各客户端文档,使用 node dist/index.js 作为启动命令,传入上述环境变量。

使用 MCP Inspector 调试

VLM_BASE_URL=... VLM_API_KEY=... VLM_MODEL_ID=... \
npm run inspector

工具列表

VLM 工具(4 个)

通过 OpenAI 兼容 API 调用 VLM 大模型完成视觉任务。所有 VLM 工具:

  • 接受 images(路径或 URL 数组,1-8 张)

  • 内置 max_dimension(默认 2048)自动缩放

  • 使用 temperature: 0 + 忠实性提示词确保不脑补

vision_qa — 视觉问答

对图片提问,返回基于图片内容的文字回答。适用于检查 Web 页面、PPT 页面是否符合要求等场景。

参数

类型

必需

默认值

说明

images

string[]

图片路径或 URL 列表

question

string

要提问的问题

max_dimension

number

2048

发送前自动缩放最大边长,设 0 禁用

vision_describe — 视觉解读

详细、真实地解读图片内容,不推测或脑补。

参数

类型

必需

默认值

说明

images

string[]

图片路径或 URL 列表

detail_level

"brief"|"normal"|"detailed"

"normal"

描述详细程度

max_dimension

number

2048

发送前自动缩放最大边长

vision_detect — 视觉检测

在图片中检测指定目标,返回 0-1 归一化包围盒。

系统提示词强制要求归一化坐标;后处理函数自动检测像素坐标(值 > 1)并除以图片尺寸归一化,双重保障。

参数

类型

必需

默认值

说明

images

string[]

图片路径或 URL 列表

target

string

要检测的目标描述

max_dimension

number

2048

发送前自动缩放最大边长

返回结构:

{
  "detections": [
    {
      "label": "对象描述",
      "bbox": { "x_min": 0.1, "y_min": 0.2, "x_max": 0.3, "y_max": 0.4 },
      "confidence": 0.95
    }
  ]
}

vision_ocr — 视觉 OCR

提取图片中所有可见文字。

参数

类型

必需

默认值

说明

images

string[]

图片路径或 URL 列表

max_dimension

number

2048

发送前自动缩放最大边长

返回结构:

{
  "text_blocks": [
    { "text": "文字内容", "bbox": { "x_min": 0.1, "y_min": 0.2, "x_max": 0.3, "y_max": 0.4 } }
  ],
  "full_text": "所有文字按阅读顺序拼接"
}

图像处理工具(8 个)

基于 sharp 和 @napi-rs/canvas 的程序化图像操作。所有工具:

  • 返回 base64 PNG 图片内容(MCP image content type)

  • 提供 structuredContent(宽高、格式、大小)

  • 支持可选 output_path 参数保存到文件

image_get_metadata — 获取图片元信息

返回宽度、高度、格式、通道数、色彩空间、DPI、Alpha 通道、EXIF 方向等。

参数

类型

必需

说明

image

string

图片路径或 URL

image_resize — 图片缩放

参数

类型

必需

默认值

说明

image

string

图片路径或 URL

width

number

目标宽度(像素)

height

number

目标高度(像素)

scale

number

缩放比例(0.01-10)

fit

string

"inside"

缩放模式:cover/contain/fill/inside/outside

output_path

string

保存路径

width/heightscale 三选一。width/height 同时指定时按 fit 模式处理。

image_crop — 图片裁剪

参数

类型

必需

默认值

说明

image

string

图片路径或 URL

left

number

裁剪区域左上角 x 坐标

top

number

裁剪区域左上角 y 坐标

width

number

裁剪区域宽度

height

number

裁剪区域高度

normalized

boolean

false

坐标是否为 0-1 归一化值

output_path

string

保存路径

image_rotate — 图片旋转

参数

类型

必需

说明

image

string

图片路径或 URL

angle

number

旋转角度(正数为顺时针)

output_path

string

保存路径

image_flip — 图片镜像

参数

类型

必需

说明

image

string

图片路径或 URL

direction

"horizontal"|"vertical"

horizontal=左右翻转,vertical=上下翻转

output_path

string

保存路径

image_concat — 图片拼接

参数

类型

必需

默认值

说明

images

string[]

图片路径或 URL 列表

layout

"horizontal"|"vertical"|"grid"

拼接布局

cols

number

grid 布局的列数

gap

number

0

图片间距(像素)

background

string

"#FFFFFF"

背景色

output_path

string

保存路径

image_draw_box — 添加方框标记

参数

类型

必需

默认值

说明

image

string

图片路径或 URL

boxes

object[]

方框列表

boxes[].x

number

方框左上角 x 坐标

boxes[].y

number

方框左上角 y 坐标

boxes[].w

number

方框宽度

boxes[].h

number

方框高度

boxes[].color

string

"#FF0000"

方框颜色

boxes[].label

string

方框标签文字

boxes[].line_width

number

自适应

线宽(像素)

normalized

boolean

false

坐标是否为 0-1 归一化值

output_path

string

保存路径

image_draw_text — 添加文字标记

支持中文,中文字体通过 VISION_MCP_FONT_PATH 指定,或自动检测系统 CJK 字体。

参数

类型

必需

默认值

说明

image

string

图片路径或 URL

texts

object[]

文字列表

texts[].x

number

文字左上角 x 坐标

texts[].y

number

文字左上角 y 坐标

texts[].text

string

文字内容(支持中文)

texts[].font_size

number

24

字号(像素)

texts[].color

string

"#FF0000"

文字颜色

texts[].background_color

string

文字背景色

normalized

boolean

false

坐标是否为 0-1 归一化值

output_path

string

保存路径

使用示例

示例 1:检测图片中的目标并标注

Agent: 我要找到这张图片中所有人的位置并标注出来

工具调用流程:
1. vision_detect(images=["photo.jpg"], target="人")
   → { detections: [{ label: "人", bbox: {x_min:0.1, y_min:0.2, x_max:0.3, y_max:0.5}, confidence: 0.9 }] }

2. image_draw_box(
     image="photo.jpg",
     boxes=[{ x:0.1, y:0.2, w:0.2, h:0.3, color:"#FF0000", label:"人" }],
     normalized=true,
     output_path="annotated.png"
   )
   → 返回标注后的图片

示例 2:提取 PPT 中的文字

Agent: 提取这页 PPT 的所有文字内容

工具调用:
1. vision_ocr(images=["slide.png"])
   → { text_blocks: [...], full_text: "标题\n正文内容..." }

示例 3:检查 Web 页面是否符合设计要求

Agent: 检查这个页面截图的导航栏是否在顶部,按钮颜色是否为蓝色

工具调用:
1. vision_qa(images=["screenshot.png"], question="导航栏是否在页面顶部?按钮颜色是什么?")
   → "导航栏在页面顶部。按钮颜色为蓝色。"

示例 4:拼接多张截图后整体解读

Agent: 把这三张页面截图拼在一起,然后整体描述

工具调用:
1. image_concat(images=["p1.png","p2.png","p3.png"], layout="vertical")
   → 返回拼接后的图片

2. vision_describe(images=[拼接结果], detail_level="detailed")
   → 整体描述

项目结构

vision-mcp/
├── package.json
├── tsconfig.json
├── src/
│   ├── index.ts                    # 入口:server 初始化 + stdio 传输
│   ├── constants.ts                # 环境变量、默认值、忠实性提示词
│   ├── types.ts                    # 共享类型定义
│   ├── schemas.ts                  # Zod 输入/输出 schema
│   ├── services/
│   │   ├── image-loader.ts         # 路径/URL → buffer + metadata
│   │   ├── vlm-client.ts           # OpenAI 兼容 VLM API 客户端
│   │   ├── image-processor.ts      # sharp: resize/crop/rotate/flip/concat
│   │   └── image-annotator.ts      # @napi-rs/canvas: draw_box/draw_text
│   └── tools/
│       ├── vlm.ts                  # 4 个 VLM 工具
│       └── image.ts                # 8 个图像处理工具
├── eval/
│   ├── setup.mjs                   # 测试图片生成
│   ├── evaluation.xml              # 评估问题
│   ├── test-all.mjs                # 完整测试脚本
│   └── images/                     # 测试图片
└── dist/                           # 编译输出

技术栈

组件

技术

用途

MCP SDK

@modelcontextprotocol/server v2

MCP 协议实现

Schema 校验

Zod v4

输入/输出验证

图像变换

sharp

resize/crop/rotate/flip/concat/metadata

图像标注

@napi-rs/canvas

draw_box/draw_text(中文支持)

VLM 调用

原生 fetch

OpenAI 兼容 API,零额外依赖

传输方式

stdio

本地集成,单用户场景

设计要点

忠实性保障

  • 所有 VLM prompt 内置忠实性指令:"只描述你在图片中能直接看到的内容,不要推测、脑补或添加图片中不存在的信息"

  • temperature: 0 确保确定性输出

  • 检测工具要求模型在不确定时返回空结果

坐标归一化双重保障

  1. 系统提示词DETECTION_SYSTEM_PROMPT 强制要求 0-1 归一化坐标,说明归一化公式

  2. 后处理normalizeBbox 自动检测像素坐标(任一值 > 1.0),除以图片尺寸归一化

图像输出

  • 始终返回 base64 PNG 图片内容(MCP image content type),LLM 可直接看到处理结果

  • 可选 output_path 参数保存到文件,适合大图和后续使用

  • structuredContent 包含结果图片的宽高、格式、大小

中文字体支持

image_draw_text 的字体查找优先级:

  1. VISION_MCP_FONT_PATH 指定的字体文件

  2. 系统 CJK 字体(Microsoft YaHei / SimHei / PingFang SC / Noto Sans CJK SC 等)

  3. sans-serif 回退(可能无法渲染中文)

开发

# 开发模式(热重载)
npm run dev

# 构建
npm run build

# 运行测试
node eval/test-all.mjs

# 生成测试图片
node eval/setup.mjs

许可证

MIT

Available Tools

12 tools
image_concat图片拼接A
Idempotent

将多张图片拼接为一张。

支持三种布局:

  • horizontal: 横向拼接(左右排列)

  • vertical: 纵向拼接(上下排列)

  • grid: 网格拼接(按行列排列,需指定cols)

参数:

  • images: 图片路径或URL列表

  • layout: 拼接布局(horizontal/vertical/grid)

  • cols: grid布局的列数(仅grid布局有效)

  • gap: 图片间距(像素,默认0)

  • background: 背景色(默认#FFFFFF)

  • output_path: 可选,保存到文件路径

返回:拼接后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
gapNo图片间距(像素)
colsNogrid布局的列数
imagesYes图片路径或URL列表(http/https开头为URL,否则为本地路径)。至少1张,最多8张。
layoutYes拼接布局
backgroundNo背景色#FFFFFF
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A4.7/5.0
Behavior5/5

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

The description adds meaningful behavioral detail beyond annotations: it documents three layout modes, clarifies that cols only applies to grid, explains the optional output_path behavior, and states that the result is a base64 PNG with metadata. This goes beyond what readOnlyHint/idempotentHint/destructiveHint provide.

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 with a one-line summary, a compact layout list, and a parameter list. No sentence is wasted, and the key behavior appears first.

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?

For a 6-parameter tool with an output schema and annotations, the description is complete: it covers layouts, parameters, defaults, the optional file save, and the return format. It pairs well with the schema and annotations, so an agent can invoke it correctly without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all six parameters. The description still adds value by summarizing each parameter and highlighting the grid-only nature of cols, plus the persistence-side effect of output_path. This is more than baseline.

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 opens with a specific verb and resource: '将多张图片拼接为一张' (concatenate multiple images into one). It then enumerates the three supported layouts, making the tool's scope unmistakable and distinct from sibling image operations like resize, crop, rotate, and flip.

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 establishes clear usage context: this tool is for combining multiple images into a single image, with layout choices. It does not explicitly name alternatives or state 'use this instead of X', but the sibling tools are sufficiently different that the provided context makes the selection obvious.

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

image_crop图片裁剪A
Idempotent

裁剪图片的指定区域,返回裁剪后的子图。

参数:

  • image: 图片路径或URL

  • left: 裁剪区域左上角x坐标

  • top: 裁剪区域左上角y坐标

  • width: 裁剪区域宽度

  • height: 裁剪区域高度

  • normalized: 坐标是否为0-1归一化值(默认false,像素坐标)

  • output_path: 可选,保存到文件路径

返回:裁剪后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
topYes裁剪区域左上角y坐标
leftYes裁剪区域左上角x坐标
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)
widthYes裁剪区域宽度(像素坐标时≥1,归一化坐标时0-1之间)
heightYes裁剪区域高度(像素坐标时≥1,归一化坐标时0-1之间)
normalizedNo坐标是否为0-1归一化值。false表示像素坐标,true表示归一化坐标。
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate idempotentHint=true and destructiveHint=false; the description adds useful behavioral context by stating the return value is a base64 PNG plus metadata and that output_path optionally saves to a file. It does not contradict the annotations. It stops short of disclosing overwrite behavior for existing output files, but the annotation coverage lowers the burden.

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 purpose, a compact parameter list, and a return-value summary. Every line carries necessary information for a 7-parameter tool, and nothing is redundant or padded.

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?

Given the presence of a complete input schema, an output schema, and annotations, the description is sufficiently complete: it covers input sources, coordinate options, optional file output, and return format. It could have mentioned out-of-bounds behavior or coordinate validation details, but these are not essential for correct 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 the schema already documents every parameter, including defaults and constraints such as normalized behavior and width/height bounds. The description's parameter list largely restates this information without adding meaningful new semantics for the parameters.

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 opens with a specific action and resource: '裁剪图片的指定区域,返回裁剪后的子图' (crop a specified region of an image and return the cropped subimage). This clearly distinguishes it from siblings like resize, rotate, flip, and concat, though it does not explicitly name any alternative.

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?

Usage is reasonably implied by the tool name and the phrase '裁剪图片的指定区域' — an agent can infer it should be used when a sub-region of an image is needed. However, the description gives no explicit when-to-use guidance, no exclusions, and no pointers to alternative tools such as image_resize or image_rotate.

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

image_draw_box添加方框标记A

在图片上绘制方框标记,可添加文字标签。

适用于标注检测结果、标记图片中的特定区域等。

参数:

  • image: 图片路径或URL

  • boxes: 方框列表,每个方框包含x/y/w/h(位置和尺寸)、color(颜色)、label(标签)、line_width(线宽)

  • normalized: 坐标是否为0-1归一化值(默认false,像素坐标)

  • output_path: 可选,保存到文件路径

返回:标注后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
boxesYes方框列表
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)
normalizedNo坐标是否为0-1归一化值。false表示像素坐标,true表示归一化坐标。
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses important behavior beyond the annotations: the return format is base64 PNG plus metadata, output_path is optional but saving does not change the return behavior, and coordinates can be normalized or pixel-based. This is useful context. It does not explicitly state whether the original image file is modified, but annotations and the output_path design suggest a non-destructive draw-and-return behavior.

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-structured: a one-line purpose, a short use-case sentence, a compact parameter list, and a return description. There is some redundancy with the input schema, but it is not excessive and the information is easy to scan.

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 covers purpose, use cases, all parameters including normalized and output_path behavior, and the return format. With a full input schema and an output schema present, nothing critical is missing for an agent to select and invoke this 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 schema already documents all parameters and their meanings. The description's parameter list mostly repeats this information without adding deeper semantics, such as examples of coordinate formats or color syntax beyond what the schema provides. 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?

The description clearly states a specific action ('绘制方框标记') on a specific resource ('图片'), and adds that text labels can be included. It also gives concrete use cases ('标注检测结果、标记图片中的特定区域'), which distinguish it from siblings like image_draw_text or vision_detect.

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 clear context for when to use the tool: annotating detection results and marking specific image regions. It does not explicitly mention alternatives or when not to use it, but the use-case framing is enough to guide an agent.

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

image_draw_text添加文字标记A

在图片上绘制文字,支持中文。

适用于在图片上添加注释、说明文字等。 中文字体支持:优先使用VISION_MCP_FONT_PATH指定的字体文件,其次尝试系统CJK字体。

参数:

  • image: 图片路径或URL

  • texts: 文字列表,每个包含x/y(位置)、text(内容)、font_size(字号)、color(颜色)、background_color(背景色)

  • normalized: 坐标是否为0-1归一化值(默认false,像素坐标)

  • output_path: 可选,保存到文件路径

返回:标注后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)
textsYes文字列表
normalizedNo坐标是否为0-1归一化值。false表示像素坐标,true表示归一化坐标。
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A4/5.0
Behavior4/5

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

The description discloses useful non-obvious behavior: Chinese font priority via VISION_MCP_FONT_PATH with system fallback, normalized vs pixel coordinates, and the guarantee that a base64 PNG is always returned. The annotations are all false/no-op, so the description carries the behavioral burden and handles it well, though it does not discuss output-file overwriting or other side effects.

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 compact, front-loads purpose and usage, and organizes parameter details into a scannable block. It is not bloated, though it repeats some schema content like default colors and font sizes, which keeps it from being truly exceptional.

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 covers input image, text list shape, coordinate mode, optional output path, and return format, giving an agent enough to invoke the tool correctly. Minor edge details such as coordinate origin or overwrite behavior are not stated, but the schema and output behavior cover the essential requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds one meaningful extra behavior: output_path does not suppress the base64 return. It otherwise summarizes the text fields and defaults clearly, adding modest value beyond the 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 states a clear action-resource pair ('在图片上绘制文字') and explains the use case of adding annotations or comments. It is easily distinguishable from siblings like image_draw_box and image_rotate, though it does not explicitly name an alternative tool.

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 a clear intended-use context ('适用于在图片上添加注释、说明文字等'), which tells an agent when this tool is appropriate. It does not mention exclusions or explicitly route to alternatives, so it falls short of full when-to-use guidance.

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

image_flip图片镜像A
Idempotent

对图片进行水平或垂直镜像翻转。

参数:

  • image: 图片路径或URL

  • direction: 翻转方向(horizontal=水平镜像/左右翻转,vertical=垂直镜像/上下翻转)

  • output_path: 可选,保存到文件路径

返回:翻转后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)
directionYes翻转方向:horizontal=左右翻转,vertical=上下翻转
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide idempotentHint=true and destructiveHint=false, and the description adds useful return behavior: the flipped image is returned as base64 PNG along with metadata, and output_path only controls optional saving. It also clarifies that the result is still returned even when output_path is set. No contradiction with 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 leads with a one-sentence purpose, then presents parameters in a clean list and a short return note. Every sentence is functional and there is no filler.

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?

For a simple, deterministic image transform, the description plus full schema and annotations covers accepted input forms, direction values, optional output path, and return format. An output schema exists, so return details need not be elaborated further.

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 all three parameters fully documented in the schema. The description repeats those parameter meanings but adds no new semantics beyond the schema.

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?

States a specific operation: horizontally or vertically mirror-flip an image, explicitly mapping horizontal and vertical directions. This clearly distinguishes it from sibling image tools like rotate, crop, resize, and concat.

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?

No explicit when-to-use or when-not-to-use guidance is provided, nor are alternatives named. However, the operation is self-descriptive enough that an agent can infer to use this tool when the request is to mirror an image horizontally or vertically.

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

image_get_metadata获取图片元信息A
Read-onlyIdempotent

获取图片的重要属性和元信息。

返回图片的宽度、高度、格式、通道数、色彩空间、DPI、是否有Alpha通道、EXIF方向等。

参数:

  • image: 图片路径或URL

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)

Output Schema

ParametersJSON Schema
NameRequiredDescription
sizeNo
depthYes
pagesNo
spaceYes
widthYes
formatYes
heightYes
densityNo
channelsYes
hasAlphaYes
mimeTypeYes
hasProfileYes
orientationNo
isProgressiveYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description adds that it returns a defined set of metadata fields and accepts either a local path or URL. This is useful additional behavioral context beyond the annotations.

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 short and front-loaded, with the metadata payload listed clearly. The separate '参数' bullet is slightly redundant with the input schema but not bloated.

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?

For a one-parameter, read-only metadata getter with annotations and an output schema, nothing essential is missing. The description covers purpose, accepted input format, and the returned metadata categories.

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 coverage is 100%: the sole parameter's description already explains the URL-vs-local-path distinction. The tool description repeats '图片路径或URL' but adds no new meaning, so the baseline 3 for full schema coverage 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 states a specific action — get image metadata — and enumerates exact returned fields (width, height, format, channels, color space, DPI, alpha channel, EXIF orientation). This clearly separates it from sibling vision/image-manipulation tools.

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?

It establishes clear context: use when you need image metadata such as dimensions, format, or EXIF orientation. It does not explicitly name alternatives or exclusion conditions, so it misses the top score, but the context is specific enough for routing.

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

image_resize图片缩放A
Idempotent

缩放图片到指定尺寸。

支持三种模式:

  1. 指定width和/或height(保持宽高比,fit模式可选)

  2. 指定scale(按比例缩放,如0.5为缩小一半,2.0为放大一倍)

参数:

  • image: 图片路径或URL

  • width: 目标宽度(像素)

  • height: 目标高度(像素)

  • scale: 缩放比例(0.01-10.0)

  • fit: 缩放模式(cover/contain/fill/inside/outside),默认inside

  • output_path: 可选,保存到文件路径

返回:缩放后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
fitNo缩放模式inside
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)
scaleNo缩放比例
widthNo目标宽度(像素)
heightNo目标高度(像素)
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A4.2/5.0
Behavior4/5

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

注解已声明非只读、幂等、非破坏性;描述在此基础上补充了关键行为:支持两种尺寸指定方式、fit模式、返回base64 PNG、output_path可选但总会返回。未说明对URL的下载/格式错误处理,但整体透明性高于最低要求。

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?

开头一句话点明用途,随后用两种模式+参数列表+返回值的紧凑结构呈现,每部分都有信息量,没有冗长背景或重复误导。参数表的补充说明使描述自洽。

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?

对于6参数、1枚举、有输出schema的工具,描述覆盖了所有参数、模式和返回格式,足够完整;主要缺口是width/height与scale同时提供时的优先级/报错规则,以及文件写入的覆盖行为,但这类边界信息可由schema约束推断。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

schema覆盖率为100%,基线为3;描述额外赋予了实际语义:scale举例(0.5缩小一半)、width/height可只传一个并保持宽高比、output_path设置后仍返回base64。这些超过schema字段本身的信息帮助agent正确构造参数。

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?

描述以明确的动词和资源开头:“缩放图片到指定尺寸”,并列出三种操作模式,清楚表明这是图像缩放工具。结合兄弟工具(crop/rotate/flip等),它足够独特,agent可无歧义地选择。

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?

描述提供了何时进行缩放的清晰上下文(指定width/height或scale),但没有明确说明何时不应使用、参数冲突如何解决,或与crop/rotate等替代工具的选择标准。使用场景只能从“缩放图片”中推断。

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

image_rotate图片旋转A

旋转图片指定角度。

参数:

  • image: 图片路径或URL

  • angle: 旋转角度(正数为顺时针,如90/180/270/45等)

  • output_path: 可选,保存到文件路径

返回:旋转后的图片(base64 PNG)和元信息

ParametersJSON Schema
NameRequiredDescriptionDefault
angleYes旋转角度(正数为顺时针)
imageYes图片路径或URL(http/https开头为URL,否则为本地路径)
output_pathNo可选:输出图片保存的文件路径。无论是否设置,图片都会以base64返回。

Output Schema

ParametersJSON Schema
NameRequiredDescription
widthYes
formatYes
heightYes
size_bytesYes

TDQS

A3.5/5.0
Behavior4/5

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

The annotations only signal readOnly=false and destructive=false, so the description adds useful behavioral context: positive angles mean clockwise, output is always a base64 PNG, and output_path is an optional save location. It clarifies the side-effect boundary without contradicting any annotation.

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 compact and front-loaded with the core action, followed by a short parameter list and a return-value line. It is slightly repetitive of the schema, but remains scannable and free of unnecessary prose.

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 straightforward rotation tool, the description plus full schema coverage and annotations cover required parameters, angle convention, optional output, and return format. Minor gaps such as error handling or alternative-tool routing do not significantly hinder correct 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 coverage is 100%, so the baseline is 3. The description mostly repeats what the schema already says about angle direction and output_path behavior, only adding example angles (90/180/270/45). It does not introduce meaningful new parameter semantics.

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 opens with '旋转图片指定角度' (rotate an image by a specified angle), clearly identifying the action, resource, and key parameter. It is sufficiently distinct from sibling operations like resize, crop, and flip, though it does not explicitly reference any sibling tool.

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 details parameters and return behavior but provides no guidance on when to choose rotation over sibling tools such as image_flip or image_crop. In a context with multiple image transformation siblings, the absence of explicit routing or exclusions leaves selection to inference.

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

vision_describe视觉解读A
Read-onlyIdempotent

详细、真实地解读图片中的内容。忠实描述图片中可见的所有内容,不推测或脑补。

参数:

  • images: 图片路径或URL列表

  • detail_level: 描述详细程度(brief/normal/detailed),默认normal

  • max_dimension: 发送给VLM前自动缩放的最大边长(默认2048,设为0禁用)

返回:图片内容的详细文字描述

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYes图片路径或URL列表(http/https开头为URL,否则为本地路径)。至少1张,最多8张。
detail_levelNo描述详细程度normal
max_dimensionNo发送给VLM前自动缩放的最大边长(像素)。设为0禁用自动缩放。默认2048。

Output Schema

ParametersJSON Schema
NameRequiredDescription
descriptionYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond that: it promises "不推测或脑补" (no hallucination) and discloses the automatic resizing behavior before sending to the VLM via max_dimension. This gives agents a realistic expectation of the tool's behavior.

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 reasonably front-loaded with the core purpose and remains compact. The parameter list and return-value note are helpful, though the opening sentences slightly overlap in meaning ("详细、真实地解读" vs. "忠实描述"). It is still efficient and free of irrelevant content.

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?

For a read-only image-description tool, the description, combined with fully documented input parameters, strong annotations, and an output schema, covers everything an agent needs to invoke it correctly. It includes accepted input forms, detail-level options, resize behavior, and the nature of the returned description.

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 covers 100% of parameters with detailed descriptions, including accepted URL/path formats, enum values, defaults, and constraints. The description mostly restates this information, adding minimal new meaning, 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 opens with a specific action—"详细、真实地解读图片中的内容"—and clarifies the exact scope: describe all visible content without speculation. This clearly distinguishes it from siblings like vision_qa, vision_detect, and vision_ocr, which answer questions, detect objects, or extract text.

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 when to use the tool—whenever a faithful, comprehensive image description is needed—but it does not explicitly state when to prefer alternatives or mention exclusions. There is no direct routing to vision_qa, vision_detect, or vision_ocr, so the guidance is inferred rather than explicit.

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

vision_detect视觉检测A
Read-onlyIdempotent

在图片中检测指定目标,返回结构化的位置信息(0-1归一化包围盒)。

传入图片和要检测的目标描述,返回所有检测到的目标的位置信息。

参数:

  • images: 图片路径或URL列表

  • target: 要检测的目标描述(如"按钮"、"标题"、"红色文字"等)

  • max_dimension: 发送给VLM前自动缩放的最大边长(默认2048,设为0禁用)

返回:JSON格式的检测结果,包含每个目标的标签、归一化包围盒和置信度。 { "detections": [ { "label": "对象描述", "bbox": { "x_min": 0.1, "y_min": 0.2, "x_max": 0.3, "y_max": 0.4 }, "confidence": 0.95 } ] } 包围盒坐标为0-1归一化值,x_min/y_min为左上角,x_max/y_max为右下角。

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYes图片路径或URL列表(http/https开头为URL,否则为本地路径)。至少1张,最多8张。
targetYes要检测的目标描述
max_dimensionNo发送给VLM前自动缩放的最大边长(像素)。设为0禁用自动缩放。默认2048。

Output Schema

ParametersJSON Schema
NameRequiredDescription
detectionsYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, non-destructive, idempotent, openWorld). The description adds meaningful behavioral context beyond annotations: automatic resizing before sending to the VLM, the option to disable it via max_dimension=0, and normalized coordinate conventions for bounding boxes. No contradictions with annotations.

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-structured with an opening summary, parameter list, and return format example. It is somewhat longer than strictly necessary because some parameter details repeat the schema, but every section is readable and the core purpose is front-loaded.

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?

With annotations covering safety, a 100%-covered schema, and an output schema present, the description still adds valuable context around normalization, scaling behavior, and detection semantics. The tool is fully specified for an agent to select and invoke 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 schema already documents all three parameters. The description adds useful examples for target descriptions and clarifies the URL vs local path behavior, but it largely duplicates schema information rather than introducing substantial new meaning.

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 states a specific verb ('检测'), a clear resource (images), and a well-defined outcome (normalized bounding boxes). The phrase '返回所有检测到的目标的位置信息' makes it distinct from sibling tools like vision_qa or vision_ocr, even without naming them.

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 intended usage is implied through the description and parameter guidance, and the tool's purpose is clear enough to infer when to call it. However, there is no explicit statement of when to choose this tool over vision_qa, vision_describe, or vision_ocr, and no exclusions are mentioned.

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

vision_ocr视觉OCRA
Read-onlyIdempotent

提取图片中的所有文字信息。

返回图片中所有可见的文字内容,包括标题、正文、标签、按钮文字等。

参数:

  • images: 图片路径或URL列表

  • max_dimension: 发送给VLM前自动缩放的最大边长(默认2048,设为0禁用)

返回:JSON格式的OCR结果,包含文字块列表和完整文字。 { "text_blocks": [ { "text": "文字内容", "bbox": { "x_min": 0.1, "y_min": 0.2, "x_max": 0.3, "y_max": 0.4 } } ], "full_text": "所有文字的完整拼接" }

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYes图片路径或URL列表(http/https开头为URL,否则为本地路径)。至少1张,最多8张。
max_dimensionNo发送给VLM前自动缩放的最大边长(像素)。设为0禁用自动缩放。默认2048。

Output Schema

ParametersJSON Schema
NameRequiredDescription
full_textNo
text_blocksYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds meaningful context beyond annotations: images are automatically resized before being sent to the VLM, controlled by max_dimension, and the output is a structured JSON with text_blocks and full_text. No contradiction with annotations exists.

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 compact and front-loaded with the core purpose. It then presents parameters clearly and gives a concise JSON output example. Every section earns its place with no filler or repetition.

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 covers the required parameter, the optional parameter, preprocessing behavior, and the exact return shape. Combined with the safety profile from annotations and the presence of an output schema, an agent has everything needed to invoke this 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%, and the parameter notes in the description essentially restate what the schema already provides. No additional nuance or format detail is added for images or max_dimension, 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 states a clear verb and resource: extract all text from images, and enumerates content types such as titles, body, labels, and button text. This makes it unambiguous as an OCR tool and distinguishes it from sibling tools like vision_describe, vision_qa, and vision_detect.

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 use case is implied—use this when you need all visible text from an image—but it never explicitly contrasts it with vision_describe or vision_qa, nor states when not to use it. The agent must infer the routing from the tool name and general purpose.

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

vision_qa视觉问答A
Read-onlyIdempotent

对图片进行视觉问答。传入图片和问题,返回基于图片内容的文字回答。

适用于检查Web页面、PPT页面等是否符合特定要求或样式。

参数:

  • images: 图片路径或URL列表

  • question: 要提问的问题

  • max_dimension: 发送给VLM前自动缩放的最大边长(默认2048,设为0禁用)

返回:基于图片内容的文字回答

ParametersJSON Schema
NameRequiredDescriptionDefault
imagesYes图片路径或URL列表(http/https开头为URL,否则为本地路径)。至少1张,最多8张。
questionYes要提问的问题
max_dimensionNo发送给VLM前自动缩放的最大边长(像素)。设为0禁用自动缩放。默认2048。

Output Schema

ParametersJSON Schema
NameRequiredDescription
answerYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds little beyond restating the input/output flow and the max_dimension scaling behavior (which is also in the schema), and it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise and front-loaded with purpose and use case, but it duplicates the parameter list and return value that are already covered by the schema and output schema. Those duplicated sentences do not earn their place, reducing overall conciseness.

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?

Combined with the fully descriptive schema and available annotations, the description is complete enough for an agent to invoke the tool correctly. It adds useful application context, and the output schema handles return-value details. The only minor gap is the lack of explicit guidance on when to prefer a sibling tool.

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 covers 100% of the parameter semantics with detailed descriptions for images, question, and max_dimension. The description's parameter list merely repeats the schema information without adding new meaning, so it provides no extra value beyond the structured 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 identifies the operation as visual question answering ('对图片进行视觉问答') with the specific inputs images and question. It also provides an application context (checking Web/PPT pages), which implicitly distinguishes it from generic describe or OCR vision tools, though it does not explicitly name sibling tools.

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?

It gives a concrete use case: '适用于检查Web页面、PPT页面等是否符合特定要求或样式', indicating when this tool is appropriate. However, it does not explicitly state when not to use it or suggest alternative tools for other scenarios, so it lacks complete exclusion guidance.

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.

  1. 12 tool updatesv1.0.0
    • First observedimage_concat
    • First observedimage_crop
    • First observedimage_draw_box
    • First observedimage_draw_text
    • First observedimage_flip
    • First observedimage_get_metadata
    • First observedimage_resize
    • First observedimage_rotate
    • First observedvision_describe
    • First observedvision_detect
    • First observedvision_ocr
    • First observedvision_qa

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation4/5

The vision_ tools are mostly distinct: qa asks questions, describe gives faithful descriptions, detect returns bounding boxes, and ocr extracts text. The image_ tools are clearly separated by operation. There is slight overlap between vision_qa and vision_describe, but the parameter and return descriptions make their use cases reasonably distinguishable.

Naming Consistency4/5

Tool names follow a clear two-prefix convention: vision_* for understanding tasks and image_* for manipulation/annotation tasks. Minor deviations exist—vision_qa and vision_ocr are noun-like rather than verb-like, and image_get_metadata uses get while other image tools do not—but overall the naming is readable and predictable.

Tool Count5/5

Twelve tools is a well-sized surface for a vision MCP server: four vision analysis tools and eight image processing/annotation tools. Each tool covers a distinct operation without bloat.

Completeness4/5

The tool set covers the core vision workflow well: understand, describe, detect, OCR, transform, and annotate images. Minor gaps like explicit format conversion or color/quality adjustments exist, but they are not critical for typical visual QA and image inspection use cases.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables any LLM to describe images from file paths, URLs, or base64 data by forwarding them to a supported vision provider such as OpenAI, Anthropic, or local Ollama models.
    770 npm
    10
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server for image recognition and OCR via OpenAI-compatible vision APIs, supporting local files, URLs, and data URLs. Enables natural language image description and text extraction.
    14 npm
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server that gives text-only AI agents the ability to understand images via vision tools, including multi-image analysis, OCR, comparison, and structured extraction. It uses providers like OpenAI, Anthropic, Gemini, and OpenRouter to return plain text descriptions.
    10
    6 npm
    MIT