截图 + 视觉模型分析 MCP 服务器,支持全屏/窗口截图,云端 qwen-vl-plus + 本地 Ollama 备用
Vision MCP server has 4 tools with basic schemas and descriptions, but significant gaps in parameter documentation, error handling, and output schema clarity. Tool names are action-oriented (screenshot, list_windows, analyze_image, ocr_image), which is good. However, descriptions lack depth on when to use each tool vs. alternatives, parameter descriptions are sparse or missing, and output schemas are not documented. No error recovery guidance. The server exposes API keys via environment variables (correct), but tool implementations lack input validation and actionable error messages.
Analyze an image using Qwen VL Plus (cloud) or Ollama (local fallback). Supports file paths, URLs, and base64-encoded images.
List all visible windows on the system with their titles and indices.
Extract text from an image using Qwen VL Plus (cloud) or Ollama (local fallback).
Capture a screenshot of the primary display, a specific window, or the full screen. Supports PNG and JPEG formats with optional scaling.
list_windows has no input parameters documented and minimal description (11 chars). Does not explain when to call it or what the output structure is (index, title fields not documented).
Output schemas not documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., screenshot returns a file path, is it absolute or relative? Does analyze_image return structured JSON or free text?
analyze_image and ocr_image accept 'image_source' as free-form string (file path, URL, or base64). No validation, format constraints, or error guidance if the source is invalid or unreachable.
No error handling or recovery guidance. If a screenshot fails (permission denied, display disconnected), the tool returns a raw error with no actionable next step for the LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
screenshot's 'window_title' parameter is required only if mode='window', but this dependency is not documented in the parameter description. LLMs may omit it or pass it with other modes.