Skip to main content
Glama
avicuna

Screen Vision MCP Server

by avicuna

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ANTHROPIC_API_KEYNoAnthropic API key required for the 'understand_screen' tool. Obtain from console.anthropic.com.
SCREEN_VISION_MODENoMode 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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