Screen Vision MCP Server
The Screen Vision MCP Server gives Claude the ability to see and analyze your screen, camera, and media files — all locally and on-demand.
Screen Capture & Analysis
Capture full screen, region, or window — Take screenshots with optional delay and multi-monitor support
List monitors — Show all connected displays and resolutions
Get active context — Retrieve current window, cursor, and monitor info without capturing an image
Understand screen — AI-powered analysis of what's on screen with optional custom prompts
Text Extraction (OCR)
Read screen text — Extract text from the screen or a specific region
Video & Real-Time Monitoring
Watch screen — Record and sample your screen over time with frame sampling and optional audio transcription
Analyze video — Extract keyframes and metadata from a local video file
Image Analysis
Analyze image — Process local image files (e.g., AirDropped photos or saved screenshots)
Phone Camera Integration
Pair via QR code — Connect your phone as a camera source
Capture camera — Grab the latest frame from a connected phone camera
Watch camera — Stream phone camera with scene detection and optional audio transcription
Phone status — Check the connection status of the phone camera
Security & Privacy
All captures are local and on-demand — nothing runs in the background
Work mode (
SCREEN_VISION_MODE=work) enables PII/PCI scanning, app deny-lists, call detection, rate limiting, and audit logging
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Screen Vision MCP ServerTake a screenshot of my screen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Screen Vision MCP Server
Give Claude Code the ability to see your screen
Screen Vision lets Claude capture screenshots, watch your screen in real-time with audio transcription, analyze video files, and read text via OCR. It runs locally as an MCP server — Claude sees what you see, when you ask.
Privacy & Security
All capture is local and on-demand — no background recording, no persistent process, no external transmission.
Screen Vision runs as a local MCP server (stdio transport). It only captures when Claude explicitly calls a tool in response to your request.
Captured images and transcriptions are sent only to your existing Claude Code session — the same endpoint all Claude Code traffic uses. No third-party services, no cloud storage.
The server does not run in the background between Claude Code sessions. It starts when Claude Code starts and stops when it stops.
No data is written to disk unless you explicitly ask Claude to save a file.
Related MCP server: sight-mcp
Quick Start
pip install screen-vision[ocr]Then add to your Claude Code MCP config (.mcp.json):
{
"mcpServers": {
"screen-vision": {
"command": "screen-vision-mcp"
}
}
}System deps for OCR and video:
brew install tesseract # Required for OCR (read_screen_text)
brew install ffmpeg # Required for video analysis (analyze_video)What You Can Say
"Take a screenshot of my screen" → capture_screen
"Capture the Chrome window" → capture_window
"Watch my screen for 1 minute" → watch_screen (with audio transcription)
"Analyze the video at ~/Downloads/demo.mp4" → analyze_video
"Read the text on my screen" → read_screen_text
"What window am I in?" → get_active_context (no screenshot)
"What's on my screen right now?" → understand_screen (AI analysis)
"Analyze this photo I AirDropped" → analyze_imageTools (14)
Tool | What it does | Needs |
| Full screen capture with delay + multi-monitor | — |
| Capture a specific rectangular area | — |
| Capture a window by title | — |
| List displays with resolutions | — |
| Window/cursor/monitor info (no image) | — |
| OCR text extraction from screen | tesseract |
| AI-powered screen analysis | Anthropic API key |
| Analyze a dropped/AirDropped image file | — |
| Watch screen with frame sampling + audio | ffmpeg (audio) |
| Extract keyframes from video files | ffmpeg |
| Grab latest frame from phone camera | — |
| Stream phone camera with scene detection + audio | — |
| Show QR code to connect phone camera | — |
| Check phone camera connection status | — |
Security
Screen Vision includes security controls for corporate environments:
PII/PCI scanning — Detects credit card numbers, SSNs, phone numbers, email addresses in OCR text
App deny-list — Blocks captures of Slack, Teams, Zoom, banking apps, password managers
Call detection — Blocks captures during active audio calls
Rate limits — 200 captures/session, 2s minimum interval, 5min max watch duration
Audit logs — All captures logged to
~/.screen-vision/audit.log
Set SCREEN_VISION_MODE=work to enable all security controls. Default mode is personal (no restrictions).
Dependencies
Core (always installed): mcp[cli], mss, Pillow, numpy, httpx
Extras (mix and match):
Extra | Install | What you get |
|
|
|
|
|
|
|
|
|
|
| All of the above |
Python 3.11+ required.
Development
pip install -e ".[ocr,test]"
pytest tests/ -v
ruff check src/Author
Alex Vicuna — github.com/avicuna
Contributing
Issues and PRs welcome: https://github.com/avicuna/screen-vision
Available Tools
14 toolsanalyze_imageA
Analyze a dropped image file (AirDrop, screenshot, saved photo).
Works in both work and personal modes. In work mode, security scanning is applied.
Args: file_path: Path to the image file to analyze prompt: Optional analysis prompt (reserved for future use)
Returns: JSON string with analyzed image data or error
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | ||
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that 'prompt' is reserved for future use and mentions security scanning in work mode, but lacks details on side effects, permissions, file format constraints, or potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear upfront purpose and structured Args section. The Args section repeats schema info but is acceptable. No superfluous sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description appropriately includes return type. However, it omits details on error handling, supported formats, or performance considerations. With many sibling tools, it adequately differentiates from screen capture but not from analyze_video.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It explains file_path and prompt, noting prompt is optional and reserved for future use. This adds value beyond the bare schema, though file_path format or constraints are not detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'analyze' and the resource 'dropped image file', specifying sources like AirDrop, screenshot, or saved photo. It distinguishes from siblings (e.g., analyze_video, capture_screen) by focusing on file analysis rather than screen capture or video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it works in both work and personal modes, with security scanning in work mode. However, it does not explicitly state when to use this tool versus alternatives like understand_screen or read_screen_text, leaving some implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_videoA
Analyze a local video file.
Args: file_path: Path to the video file start_time: Start time in seconds (default: 0) end_time: End time in seconds (default: None = entire video) max_frames: Maximum number of frames to extract (default: 20)
Returns: JSON string with extracted frames and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| end_time | No | ||
| file_path | Yes | ||
| max_frames | No | ||
| start_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It explains the tool extracts frames and returns JSON with metadata, and that max_frames limits extraction. However, it does not discuss performance, file format support, or potential 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise docstring with a clear purpose line, followed by structured Args and Returns sections. Every sentence adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential aspects: arguments, return format, and defaults. Given the presence of an output schema (implied), the return description is sufficient. However, it lacks details on supported video formats or file accessibility prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining each parameter: file_path is the path, start_time/end_time in seconds, max_frames as limit. Defaults are mentioned. This adds valuable meaning beyond the schema's basic type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a local video file and extracts frames and metadata. It distinguishes from siblings like 'analyze_image' and capture tools by specifying 'video file' and the extraction process.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'analyze_image' or 'capture_screen'. It does not mention prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_cameraA
Grab the latest frame from connected phone camera.
Only available in personal mode. Requires phone to be connected via show_pairing_qr() first.
Args: prompt: Optional prompt (reserved for future use)
Returns: JSON string with frame data or error
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively explains the action (capture frame), return type (JSON string), and potential error. It mentions the prompt is reserved for future use, adding transparency. It does not cover edge cases like disconnection, but the prerequisites address the main constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with no redundant information. It front-loads the core action and uses bullet-style Args/Returns for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the essential: what it does, prerequisites, return format, and parameter. The presence of an output schema further reduces the burden, though error specifics are not detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains the single parameter 'prompt' as 'Optional prompt (reserved for future use)', adding meaning beyond the schema's bare type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Grab the latest frame from connected phone camera' with a specific verb and resource, clearly distinguishing it from sibling tools like capture_screen and capture_window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes 'Only available in personal mode' and 'Requires phone to be connected via show_pairing_qr() first', giving clear context and prerequisites. It does not provide explicit alternatives, but the restrictions are well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_regionB
Capture a specific screen region.
Args: x: Left coordinate of the region y: Top coordinate of the region width: Width of the region height: Height of the region scale: Scale factor for resizing (default: 1.0)
Returns: JSON string with captured frame data or error
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| scale | No | ||
| width | Yes | ||
| height | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fails to disclose behavioral traits such as whether the tool is read-only, requires permissions, or has side effects. Only the return format is mentioned, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence for the purpose followed by a structured list of arguments and return type. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not explain the contents of the captured frame data (e.g., format, encoding). Additionally, context about coordinate origins, bounds checking, and error scenarios is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description's Args section is essential. It provides clear, albeit minimal, meaning for each parameter (e.g., 'Left coordinate', 'Width of the region'). This compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a specific screen region, which is a distinct action from sibling tools that capture full screen, window, or camera. The verb 'capture' and resource 'screen region' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like capture_screen or capture_window. The description does not mention prerequisites, coordinate system origins, or error handling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_screenA
Capture the full screen with optional delay for window switching.
Args: delay_seconds: Wait this many seconds before capturing (default: 3) monitor: Monitor index to capture (0 = all monitors, 1+ = specific monitor) scale: Scale factor for resizing (default: 0.5)
Returns: JSON string with captured frame data or error
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| monitor | No | ||
| delay_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses optional delay, monitor selection, scale, and return format. It adds context beyond the schema but could mention side effects like permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose, then details in a clear list. Slightly verbose with 'Args' and 'Returns' labels, but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all parameters and return format. Lacks prerequisites or error condition details, but overall adequate for a screen capture tool with output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description explains each parameter (delay_seconds, monitor, scale) with defaults and meaning, compensating for 0% schema coverage. Also describes return value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Capture the full screen' with a specific verb and resource, distinguishing it from siblings like capture_region or capture_window.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it's useful for capturing after a delay for window switching, but does not explicitly state when to use this tool over other screen capture tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_windowB
Capture a specific window by title.
Args: window_title: Title of the window to capture scale: Scale factor for resizing (default: 0.5)
Returns: JSON string with captured frame data or error
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| window_title | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only states that it captures a window and returns JSON, omitting details like permission needs, window findability, side effects, or error conditions beyond a generic 'error'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well-structured with Args and Returns sections. Every sentence contributes necessary information, though it could include more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 2 parameters, 0% schema coverage, no annotations, but an output schema present, the description provides the core functionality. However, it lacks explanatory context about use cases, prerequisites, or error handling, making it only minimally complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must add value. It labels 'window_title' as 'Title of the window to capture' and 'scale' as 'Scale factor for resizing (default: 0.5).' This provides intent but is minimal; a higher score would require more detail like format constraints or behavior details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Capture a specific window by title,' specifying the verb (capture), resource (window), and qualification (by title). This distinguishes it from sibling tools like capture_screen (full screen) and capture_region (by coordinates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as capture_screen or capture_region. There is no discussion of prerequisites, window visibility requirements, or conditions that might make this tool unsuitable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_contextB
Get lightweight context: window, cursor, monitors.
Returns: JSON string with context information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states it returns a JSON string with context info, but lacks disclosure of side effects, performance implications, or any behavioral traits. As the sole source of behavioral info, it is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two lines state purpose, one line notes return format. No filler, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and an output schema (not shown but exists), the description is adequate. It names the components of context, but could clarify the scope of 'active context' or mention that it's a snapshot.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema description coverage is 100%. Baseline for zero parameters is 4. The description adds no parameter info, which is acceptable given no params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool retrieves lightweight context including window, cursor, and monitors. It is distinct from sibling tools that capture screens or list monitors, but could explicitly mention that it returns a summary rather than raw data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_monitors or capture_window. The description does not provide context for appropriate usage scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitorsB
List available monitors.
Returns: JSON string with monitor information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, required permissions, or behavior when no monitors are present. For a simple listing tool, read-only might be assumed, but it is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of one short sentence and a return type. It is not verbose, but for a zero-parameter tool, it is appropriately sized. However, it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description is minimally adequate. It explains the purpose and return type but lacks context on how the returned monitor information can be used with sibling tools (e.g., monitor IDs for capture tools). Complexity is low, so a 3 is reasonable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100% (empty schema). The description adds no parameter information because none is needed. Baseline for 0 parameters is 4, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists available monitors, which is a specific verb and resource. It distinguishes from sibling tools that involve capturing or analyzing images/video, as listing monitors is a different operation. However, it could be more specific about the type of monitors (e.g., display monitors).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There are no explicit prerequisites or exclusions. While sibling tools might benefit from knowing monitors first, this context is not provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phone_statusB
Check phone camera connection status.
Returns connection status, frame queue size, and server state.
Returns: JSON string with status information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool reads status (connection, frame queue, server state) and returns a JSON string. However, it does not explicitly state it is read-only or safe, nor discuss side effects or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two short sentences describing purpose and return. No fluff, every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple zero-parameter tool with an output schema, the description adequately covers purpose and return fields. It could mention that output is from the phone camera context, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema coverage, so baseline is 3. The description does not add parameter-specific information, but it implicitly conveys no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Check phone camera connection status,' which is a specific verb and resource. It lists return values (connection status, frame queue size, server state), differentiating it from action-oriented siblings like capture_camera or watch_camera.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it's for checking status before capture, but it does not state prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_screen_textB
OCR the screen or a region.
Args: region: Optional region as "x,y,width,height" string
Returns: JSON string with extracted text
| Name | Required | Description | Default |
|---|---|---|---|
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behaviors like permissions needed, potential disruptions, or error handling. It only mentions OCR and returns, but nothing about system impact or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, with no wasted words. However, it lacks structure like bullet points for args/returns, but is still readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with one parameter and an output schema. But missing context on permissions, errors, and differentiation from similar tools makes it less complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description is essential. It explains the region format as 'x,y,width,height', which adds clear meaning beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool does OCR on the screen or a region, with a specific verb and resource. It distinguishes itself from siblings like capture_screen (capture only) and understand_screen (interpretation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., understand_screen, analyze_image). The description does not mention prerequisites, permissions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_pairing_qrA
Show QR code to connect phone camera. Scan with iPhone to start streaming.
Only available in personal mode. In work mode, use analyze_image() with AirDrop instead.
Returns: JSON string with QR code data and pairing instructions, or error
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the return value (JSON with QR data and instructions) and implies a safe, non-destructive action. Could add more about display behavior or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose, then usage guidance, then return description. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and a simple action, description is fairly complete, including return format. Could clarify what 'personal mode' means, but acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (100% coverage), so baseline score of 4 applies. No extra parameter explanation needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool shows a QR code for phone pairing and streaming. It is specific but could better differentiate from sibling camera tools like capture_camera.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states availability only in personal mode and provides an alternative (analyze_image with AirDrop) for work mode. This is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
understand_screenA
Understand what's on screen — like Google Lens for your desktop. Returns structured analysis: what app, what content, what's happening, actionable insights. Optionally provide a prompt for focused analysis: 'what error is this?' or 'explain this dashboard'.
Args: prompt: Optional custom prompt for focused analysis (default: "")
Returns: JSON string with understanding result, image, OCR text, and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It describes the tool as returning structured analysis but does not confirm it is non-destructive (read-only), does not mention if screen capture is required, or disclose any side effects. The implied read behavior is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two short paragraphs) and front-loaded with the key analogy and output summary. Every sentence adds value, though the 'Returns' list could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter structure (one optional param) and existence of an output schema, the description adequately covers the basic inputs and outputs. However, it lacks error handling details, prerequisites (e.g., screen access permissions), and edge cases like empty screen or OCR failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no descriptions in schema), but the description explains the 'prompt' parameter's purpose and provides concrete examples ('explain this dashboard'), adding meaningful interpretation beyond the schema's default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'understand what's on screen' with a vivid analogy ('Google Lens for your desktop'), specifies output includes app, content, and insights, and distinguishes from siblings like 'capture_screen' (capture only) and 'read_screen_text' (text extraction). The optional prompt for focused analysis adds further clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives examples of when to use a custom prompt ('what error is this?') but does not explicitly differentiate from siblings such as 'analyze_image' or 'read_screen_text', nor does it state when not to use this tool. Usage context is implied but not clearly bounded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_cameraA
Stream phone camera frames with scene detection and optional audio.
Only available in personal mode. Requires phone to be connected via show_pairing_qr() first. Collects frames over the specified duration, applies scene change detection to keep only keyframes, and optionally records and transcribes audio.
Args: duration_seconds: How long to collect frames (default: 30) include_audio: Whether to collect and transcribe audio (default: True) max_frames: Maximum number of keyframes to keep (default: 20)
Returns: JSON string with keyframes, transcript, and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| max_frames | No | ||
| include_audio | No | ||
| duration_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavior like collecting frames over duration, scene change detection, keyframe selection, optional audio transcription, and JSON return. No annotations exist, so the description carries the full burden; it does well but could mention if any data is persisted or discarded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficient: a one-line summary, then two constraint lines, then bulletized args and returns. No redundant sentences, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects: streaming duration, scene detection, audio, and return format. With no output schema provided in input, the description's return note helps. Could add edge cases like what happens if phone disconnects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage, so the description fully compensates by explaining each parameter (duration_seconds, include_audio, max_frames) with defaults and purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool streams camera frames with scene detection and optional audio, and the verb 'stream' plus resource 'camera' distinguishes it from siblings like capture_camera (still image) and watch_screen (screen).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions it's only available in personal mode and requires prior connection via show_pairing_qr(), providing clear context. However, it doesn't explicitly state when not to use it or suggest alternatives, so there's room for improvement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_screenA
Watch the screen for a duration with frame sampling and optional audio.
Args: duration_seconds: How long to watch (default: 60) interval_seconds: Time between frame captures (default: 4.0) include_audio: Whether to record and transcribe audio (default: True) max_frames: Maximum number of keyframes to keep (default: 30)
Returns: JSON string with keyframes, transcript, and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| max_frames | No | ||
| include_audio | No | ||
| duration_seconds | No | ||
| interval_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that it watches over time, samples frames, and optionally records audio, returning JSON. However, it doesn't specify the scope (full screen or active window), stopping behavior, or required permissions, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a one-sentence purpose followed by a bullet list of parameters with explanations. Every sentence provides value, and the structure is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 optional parameters, no required), no annotations, and presence of an output schema, the description covers the key inputs and output format. It could mention the return structure more precisely but is sufficient for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful explanations for all 4 parameters beyond the schema names and defaults: 'How long to watch', 'Time between frame captures', 'Whether to record and transcribe audio', 'Maximum number of keyframes to keep'. Since schema description coverage is 0%, this compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Watch the screen for a duration with frame sampling and optional audio.' This is a specific verb-resource pair that distinguishes it from sibling tools like capture_screen (single snapshot) and watch_camera (camera feed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. It lacks explicit context for when to prefer watch_screen over capture_screen, capture_camera, or watch_camera. No when-not or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v0.3.4- First observed
analyze_image - First observed
analyze_video - First observed
capture_camera - First observed
capture_region - First observed
capture_screen - First observed
capture_window - First observed
get_active_context - First observed
list_monitors - First observed
phone_status - First observed
read_screen_text - First observed
show_pairing_qr - First observed
understand_screen - First observed
watch_camera - First observed
watch_screen
TDQS
Each tool targets a distinct source or operation: capture tools differentiate by screen/window/region/camera, watch tools add duration, analyze tools handle files, and informational tools cover context and status. No two tools serve the same purpose.
Most tools follow a verb_noun pattern (e.g., analyze_image, capture_screen). One outlier is 'phone_status', which uses a noun prefix instead of a verb, but the rest are consistent and clear.
14 tools is well-scoped for a screen vision server, covering capture, analysis, OCR, context, camera streaming, and video analysis without feeling bloated or sparse.
The tool set covers core workflows: capture, analysis, OCR, context, and camera integration. Minor gaps like listing windows or managing streams are present but not critical for most use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for screen recording and screenshots, bridging Claude Code with Chrome extensions.-
- AlicenseNot gradedqualityDmaintenanceA powerful MCP server that brings AI vision capabilities to Claude Desktop. Analyze images and videos using OpenAI GPT-4o, Claude, or any compatible vision API.22MIT
- FlicenseAqualityBmaintenanceAn MCP server that captures screenshots of URLs or local app windows and analyzes them with a local Ollama vision model, enabling Claude to visually inspect web pages and desktop applications without sending image data externally.3-
- FlicenseNot gradedqualityBmaintenanceAn MCP server that gives Claude the ability to watch any desktop window, detecting changes and providing compact image bundles for Claude's vision, enabling real-time screen-watching without API costs.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/avicuna/screen-vision'
If you have feedback or need assistance with the MCP directory API, please join our Discord server