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 |
Capabilities
Features and capabilities supported by this server
| 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
- 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