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

@misterhuydo/eyeshot-mcp

v2.1.1

Published

MCP server that gives Claude Code visual awareness and Chrome profile control — desktop screenshot + Chrome profile launcher.

Downloads

888

Readme

eyeshot

A lightweight MCP server that gives Claude Code visual awareness and Chrome profile control.

eyeshot works alongside other browser automation tools (chrome-devtools MCP, Browser MCP, Playwright MCP) rather than replacing them. It fills the gaps those tools can't: desktop screenshots, scrolling native windows, and launching isolated Chrome test profiles.


Tools

| Tool | Description | |------|-------------| | screenshot | Capture the desktop or a specific window by title | | scroll | Scroll a window by title and return a screenshot of the new position | | list_profiles | List all eyeshot-managed test Chrome profiles | | create_test_profile | Create a named, isolated Chrome test profile | | launch_profile | Launch Chrome with a test profile on port 9222 | | clear_test_profile | Wipe browsing data from a test profile | | delete_test_profile | Permanently delete a test profile |


Installation

Requirements: Node.js 18+

npm install -g @misterhuydo/eyeshot-mcp
eyeshot install

That's it. eyeshot install registers the MCP server in ~/.claude.json.

Restart Claude Code once after running this — required for the MCP server to load.

Upgrade:

npm install -g @misterhuydo/eyeshot-mcp

No need to re-run eyeshot install — the config carries over between versions.


Tool reference

screenshot(title?)

Takes a screenshot and returns it as an image to Claude.

  • title (optional) — partial window title to capture (e.g. "slack", "chrome"). Case-insensitive. If omitted, captures the full desktop.

Platform notes:

  • Windows — uses PrintWindow (Win32 API), captures the window even if it's behind other windows
  • macOS — uses screencapture -l <window-id> via Quartz
  • Linux X11 — uses import (ImageMagick) or xwd
  • Linux Wayland — always falls back to full desktop screenshot

scroll(title, direction?, amount?)

Scrolls a window by title, then returns a screenshot of the new position. Useful for reading long Slack threads, terminals, or any content that runs off-screen.

  • title (required) — partial window title (e.g. "slack", "terminal")
  • direction (optional)"down" (default) or "up"
  • amount (optional) — scroll steps, 1–20 (default 3)

Platform notes:

| Platform | Mechanism | Requirements | |----------|-----------|--------------| | Windows | WM_MOUSEWHEEL via PostMessage | None — no focus needed | | macOS | Quartz CGEventCreateScrollWheelEvent | python3 with Quartz; Accessibility permission | | Linux X11 | xdotool click (buttons 4/5) | xdotool installed | | Linux Wayland | Not supported | — |

Electron/Chrome app caveat: OS-level scroll events may not reach Electron's rendering layer (Slack, VS Code, Chrome). For browser content, use chrome-devtools MCP's evaluate_script with window.scrollBy() instead.

macOS Accessibility permission

The first time scroll runs on macOS, you'll need to grant Accessibility access to the terminal or app running Claude Code:

System Settings → Privacy & Security → Accessibility → add your terminal.


list_profiles

Lists all eyeshot-managed test Chrome profiles. Real user profiles are never shown or touched.


create_test_profile(name)

Creates a named, isolated Chrome profile stored under a dedicated eyeshot user data directory — completely separate from your real Chrome profiles.

  • name — alphanumeric name, hyphens and underscores allowed (e.g. "payments-ui", "staging")

launch_profile(profile)

Launches Chrome with a test profile on --remote-debugging-port=9222 so the chrome-devtools MCP can connect.

  • profile — test profile name (e.g. "payments-ui") or full directory (e.g. "eyeshot-payments-ui")
  • Only kills the process already bound to port 9222, never all Chrome instances

clear_test_profile(name)

Wipes all browsing data (cookies, cache, history, storage) from a test profile while keeping the profile shell. Pass "all" to clear every test profile.


delete_test_profile(name)

Permanently deletes a test profile directory. Pass "all" to delete every test profile.


Architecture

eyeshot MCP
  ├── screenshot / scroll    → OS-level window capture & input
  ├── list/create_test_profile → isolated Chrome profile management
  └── launch_profile         → spawns Chrome with --remote-debugging-port=9222

chrome-devtools MCP (separate)
  └── connects to Chrome on port 9222 (whatever profile eyeshot launched)

Tech stack

  • Runtime: Node.js (ESM)
  • MCP SDK: @modelcontextprotocol/sdk
  • Schema: zod
  • Windows screenshot/scroll: PowerShell + Win32 API (no extra deps)
  • macOS screenshot/scroll: screencapture + Python Quartz framework
  • Linux screenshot/scroll: ImageMagick / xwd + xdotool