Screen Vision MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANTHROPIC_API_KEY | No | Anthropic API key required for the 'understand_screen' tool. Obtain from console.anthropic.com. | |
| SCREEN_VISION_MODE | No | Mode of operation: 'personal' (default, no restrictions) or 'work' (enables security controls like PII scanning, app deny-list, etc.) | personal |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| 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 |
| 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 |
| list_monitorsB | List available monitors. Returns: JSON string with monitor information |
| 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 |
| 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 |
| 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 |
| get_active_contextB | Get lightweight context: window, cursor, monitors. Returns: JSON string with context information |
| analyze_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 |
| 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 |
| 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 |
| 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 |
| 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 |
| phone_statusB | Check phone camera connection status. Returns connection status, frame queue size, and server state. Returns: JSON string with status information |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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