npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

third-eye-mcp

v1.1.0

Published

Privacy-first screen capture and recording MCP server for AI coding agents

Downloads

221

Readme

Third Eye

Privacy-first screen capture and recording MCP server for AI coding agents.

Works with Claude Desktop, Cursor, Windsurf, Continue, and any MCP-compatible client.

Features

  • Privacy First - 100% local, no cloud uploads, no telemetry
  • Multi-Monitor - List and capture from any display
  • Region Capture - Capture specific areas of your screen
  • Screen Recording - Change-based keyframe capture with grid output
  • Scheduled Recording - Burst capture at specific times (up to 10 min)
  • Smart Delay - 5-second default delay to switch windows before capture
  • Downscaling - Reduce image size to save tokens
  • Freemium - 10 free captures/day, $10 for unlimited

Installation

Using npx (Recommended)

npx third-eye-mcp

Global Install

npm install -g third-eye-mcp

Configuration

Claude Desktop

Add to your Claude Desktop config:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS/Linux: ~/.config/claude/claude_desktop_config.json

{
  "mcpServers": {
    "third-eye": {
      "command": "npx",
      "args": ["third-eye-mcp"]
    }
  }
}

Claude Code CLI

claude mcp add third-eye "npx third-eye-mcp"

Cursor

Add to your Cursor MCP settings (~/.cursor/mcp.json or via Settings > MCP):

{
  "mcpServers": {
    "third-eye": {
      "command": "npx",
      "args": ["third-eye-mcp"]
    }
  }
}

Other MCP Clients (Windsurf, Continue, etc.)

Any MCP-compatible client can use Third Eye with the same configuration format. Add the server to your client's MCP configuration using npx third-eye-mcp as the command.

Available Tools

| Tool | Description | |------|-------------| | screen.list_displays | List all monitors with resolution, position, scale factor | | screen.capture | Capture full screen with optional delay and downscaling | | screen.capture_region | Capture a specific rectangular region | | screen.latest | Get the most recent capture | | screen.record | Record screen with change-based keyframe capture | | screen.scheduled_record | Record with scheduled snapshot bursts | | screen.get_frame | Retrieve full-resolution frame from a recording | | screen.status | Check remaining captures and license status | | screen.activate_license | Activate a license key for unlimited captures |

Usage Examples

Ask Claude:

  • "Take a screenshot of my screen"
  • "Capture the second monitor"
  • "Screenshot the region at 100,100 with size 500x300"
  • "Record my screen for 30 seconds"
  • "Record the screen and show me what changed"
  • "Get frame 5 from the recording"
  • "How many captures do I have left?"
  • "Activate my license: TEYE-XXXX-XXXX-XXXX"

Parameters

screen.capture

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | displayIndex | number | 0 | Display to capture (0-based) | | max_width | number | - | Downscale if wider | | delay | number | 5 | Seconds before capture (0-10) | | instant | boolean | false | Skip delay if true |

screen.capture_region

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | x | number | Yes | X coordinate | | y | number | Yes | Y coordinate | | width | number | Yes | Width in pixels | | height | number | Yes | Height in pixels | | delay | number | No | Seconds before capture | | instant | boolean | No | Skip delay if true |

screen.record

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | duration | number | 30 | Recording duration in seconds (1-120) | | interval | number | 1.0 | Capture interval in seconds (0.25-10) | | displayIndex | number | 0 | Display to record (0-based) | | maxWidth | number | 1280 | Max width for full frames (320-1920) | | changeThreshold | number | 2.0 | Min change % to keep frame (0-100) | | maxFrames | number | 30 | Maximum frames to keep (5-100) | | thumbnailWidth | number | 320 | Thumbnail width for grid (160-640) |

screen.scheduled_record

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | totalDuration | number | 60 | Total duration in seconds (10-600) | | snapshots | array | required | List of snapshot burst configs | | displayIndex | number | 0 | Display to record (0-based) | | maxWidth | number | 1280 | Max width for full frames | | thumbnailWidth | number | 320 | Thumbnail width for grid |

Snapshot Burst Config:

| Property | Type | Default | Description | |----------|------|---------|-------------| | at | number | required | When to start burst (seconds from start) | | count | number | 3 | Number of snapshots in burst (1-20) | | interval | number | 1.0 | Time between snapshots (0.25-10) |

screen.get_frame

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | recordingId | string | Yes | Recording ID from screen.record response | | frameIndex | number | No | Frame index to retrieve (0-based) | | timestamp | number | No | Timestamp to find closest frame |

Note: Recordings are stored in memory for 5 minutes (max 5 recordings). Use screen.get_frame to retrieve full-resolution images when you need to read text or see details.

Pricing

| Tier | Captures | Price | |------|----------|-------| | Free | 10/day | $0 | | Unlimited | Unlimited | $10 one-time |

Get Unlimited License

License

Proprietary - See LICENSE for terms.

Free tier: 10 captures/day. Unlimited: $10 one-time license.

Author

Kaossara Osseni - Grand Nasser Enterprises

Links