MCP Connector

Capture App Screenshots for AI Agents

A privacy-first, macOS-only MCP server that lets AI agents screenshot pre-approved application windows for debugging.

Works with claudecursor

91
Spark score
out of 100
Updated 11 months ago
Version 1.0.0
Models
universal

Add to Favorites

Why it matters

Enable AI agents to securely capture screenshots of pre-approved macOS application windows, providing visual context for development and debugging without compromising privacy.

Outcomes

What it gets done

01

Capture screenshots of specific application windows in the background.

02

Manage a window approval system to control accessible applications.

03

Ensure screenshots are deleted immediately after use for enhanced privacy.

04

Configure JPEG compression limits for screenshot payloads.

Install

Add it to your toolbox

Run in your project directory:

curl -fsSL https://spark.entire.vc/get/vb-screeny | bash

Capabilities

Tools your agent gets

listWindows

Displays all approved application windows available for screenshot capture

takeScreenshot

Creates a screenshot of a specific window by its ID in the background without changing window focus

Overview

Screeny MCP Server

A macOS-only MCP server that captures screenshots of specific, pre-approved application windows for AI agents, with no external network connections. Use it when an AI agent needs scoped visual context on macOS; not for unrestricted screen recording, and each window must be explicitly approved first.

What it does

Screeny is a privacy-first, macOS-only MCP server that enables AI agents to capture screenshots of pre-approved application windows, giving them secure visual context for development and debugging tasks. Unlike other screenshot tools, it requires explicit user approval for each window before it can ever be captured - only windows approved during setup are accessible, capture happens in the background without stealing window focus or interrupting your workflow, and Screeny makes no external connections: everything runs on-device and screenshots are deleted immediately after use.

It exposes two tools. listWindows lists only the windows you've already approved, so an agent can't discover or request access to windows outside that allowlist. takeScreenshot captures a specific approved window by ID - it works in the background (no need to bring the window to front, though minimized windows can't be captured), returns actual pixel data rather than OCR or text extraction, and always JPEG-compresses the result with a configurable base64 payload cap (default Medium/250KB, clamped between 100-900KB). A screeny://info resource exposes server information and configuration details.

When to use - and when NOT to

Use it when an AI coding agent needs real visual context - for example, iterating on iOS simulator UI or debugging a rendering issue - without giving it blanket, unapproved access to your entire screen. The window-approval model is the point: it is designed for cautious, scoped screen access, not general screen recording.

It only runs on macOS and requires Python 3.10+. Larger screenshot size presets (Large/750KB, XL) can trigger MCP client context summarization loops with repeated screenshot calls in hosts like Cursor - if that happens, lower the size preset or use a model with a larger context window.

Capabilities

Two tools (listWindows, takeScreenshot) plus a screeny://info resource. Screenshot size presets range from Tiny (50KB, most stable, blurs fine text) through Small (100KB, recommended default), Medium (250KB), Large (500KB), to XL (750KB, most detail but most error-prone) - configurable via ~/.screeny/config.json's max_b64_kb or the SCREENY_MAX_B64_KB environment variable.

How to install

Install with pipx or run via uvx, then configure your MCP host:

pipx install mcp-server-screeny

After adding the server to your Claude Desktop or Cursor MCP configuration, grant Screen Capture permission to both your terminal application and your MCP host under System Settings then Privacy & Security then Screen & System Audio Recording, then run interactive window approval with mcp-server-screeny --setup (or --setup --allow-all to approve every current window). Approvals are saved to ~/.screeny/approved_windows.json.

Who it's for

macOS developers using AI coding agents like Claude or Cursor who want the agent to see actual screenshots of specific approved application windows - simulators, browsers, design tools - during debugging or iterative UI work, with explicit control over which windows are ever visible to the agent. The project is released under the MIT License.

Source README

MCP Server
version
PyPI Downloads
macOS
License: MIT

Screeny MCP Server: Privacy first macOS Screenshots for AI Agents

A privacy-first, macOS-only MCP server that enables AI agents to capture screenshots of pre-approved application windows, providing secure visual context for development and debugging tasks.

Install MCP Server

๐Ÿ”’ Privacy-First Design

Unlike other screenshot tools, Screeny requires explicit user approval for each window before it can be captured:

  • Window approval system - Only pre-approved windows can be captured (approved during setup)
  • User-controlled access - You decide exactly which windows are accessible
  • Non-intrusive capture - Screenshots taken in background without changing window focus or interrupting your workflow
  • No external connections - Screeny runs entirely on your device, screenshots are deleted immediately after use

Available Tools

  • listWindows - Lists all approved application windows available for screenshot capture.

    • Only shows user approved windows
  • takeScreenshot - Captures a screenshot of a specific window by its ID.

    • Captures windows in background - no need to bring window to front, but cannot capture minimized windows
    • Provides actual pixel data - full-fidelity image, not OCR or text extraction
    • JPEG compression with configurable cap - screenshots are always JPEG-compressed with a base64 payload cap (default preset: Medium / 250KB), configurable and clamped to 100-900KB

Resources

  • screeny://info - Server information and configuration details

Configuration

Claude Desktop

  1. Open Claude settings โ†’ Developer โ†’ Edit Config
  2. Add configuration
  3. Restart Claude Desktop after saving config
Using pipx

First install with: pipx install mcp-server-screeny

{
  "mcpServers": {
    "screeny": {
      "command": "mcp-server-screeny",
      "args": []
    }
  }
}

Note: If you get an ENOENT error, replace "mcp-server-screeny" with the full path to the executable (find it with which mcp-server-screeny in your terminal).

Using uvx
{
  "mcpServers": {
    "screeny": {
      "command": "uvx",
      "args": ["mcp-server-screeny"]
    }
  }
}

Note: If you get a "spawn uvx ENOENT" error, replace "uvx" with the full path to uvx:

which uvx  # Find your uvx path

Then use that full path in the config (e.g., "/opt/homebrew/bin/uvx").

Cursor

  1. Open Cursor settings โ†’ Tools & Integrations โ†’ MCP Tools
  2. Add configuration
  3. Restart Cursor after saving config
Using pipx

First install with: pipx install mcp-server-screeny

{
  "mcpServers": {
    "screeny": {
      "command": "mcp-server-screeny",
      "args": []
    }
  }
}

Note: If you get an ENOENT error, replace "mcp-server-screeny" with the full path to the executable (find it with which mcp-server-screeny in your terminal).

Using uvx
{
  "mcpServers": {
    "screeny": {
      "command": "uvx",
      "args": ["mcp-server-screeny"]
    }
  }
}

Note: If you get a "spawn uvx ENOENT" error, replace "uvx" with the full path to uvx:

which uvx  # Find your uvx path

Then use that full path in the config (e.g., "/opt/homebrew/bin/uvx").

Setup

1. Grant Screen Capture Permission (Required)

Important: Grant permission before running window approval.

Note: You need to grant Screen Capture permission to BOTH:

  1. Your Terminal application (Terminal.app, iTerm2, etc.) - Required for running setup (can be disabled after)
  2. Your MCP host (Claude Desktop, Cursor) - Required for taking screenshots

To add them:

  1. Open System Settings > Privacy & Security > Screen & System Audio Recording
  2. Click the "+" button
  3. Add your Terminal application AND your MCP host application
  4. Restart both applications after granting permissions

2. Window Approval (Required)

After configuring your MCP client above, approve which windows can be captured.

If using pipx
# Interactive approval
mcp-server-screeny --setup

# Auto-approve all current windows
mcp-server-screeny --setup --allow-all
If using uvx
# Interactive approval
uvx mcp-server-screeny --setup

# Auto-approve all current windows
uvx mcp-server-screeny --setup --allow-all

Approvals are saved to ~/.screeny/approved_windows.json. Re-run setup when you want to update the list of approved windows.

Advanced Options (Optional)

During setup, you can configure the screenshot size preset (affects stability and clarity):

  • Tiny (50KB) - most stable; fine text will blur
  • Small (100KB) - recommended default; balanced clarity and stability
  • Medium (250KB) - more detail; may be slower and heavier
  • Large (500KB) - high detail; may trigger client summarization
  • XL (750KB) - maximum detail; most error-prone

Your choice is saved in ~/.screeny/config.json as max_b64_kb. You can also override via the SCREENY_MAX_B64_KB environment variable. The active cap is clamped to 100-900KB.

Security & Privacy

  • Only user-approved windows can be captured
  • All processing stays local on your machine
  • Screenshots are temporary and deleted immediately after use

Troubleshooting

Permission Issues

# Test window detection and permissions
mcp-server-screeny --debug

# Re-run setup if windows changed
mcp-server-screeny --setup

Common Issues

"spawn uvx ENOENT" error

  • Solution: Use the full path to uvx in your MCP config instead of just "uvx"
  • Find path with: which uvx
  • Example: "/opt/homebrew/bin/uvx" or "/usr/local/bin/uvx"

"No approved windows found"

  • Solution: Run mcp-server-screeny --setup first (or uvx mcp-server-screeny --setup if using uvx)

"Screen Recording permission required" or "No windows found"

  • Solution: Grant Screen Recording permission in System Settings > Privacy & Security > Screen & System Audio Recording
    • Click "+" button and manually add your MCP host (Claude Desktop, Cursor, etc.)
    • Restart your MCP host application after granting permissions
  • Try running setup again after granting permissions

Requirements

  • Python 3.10+
  • macOS
  • Screen Capture permission

FAQ

Common questions

Discussion

Questions & comments ยท 0

Sign In Sign in to leave a comment.