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

@magentaesolutions/device-screenshot-mcp

v1.2.0

Published

MCP server for taking screenshots from physical iOS devices via USB

Downloads

40

Readme

Device Screenshot MCP

MCP server for taking screenshots from a physical iOS device connected via USB. Works with Claude Code across all projects.

Prerequisites

  • pymobiledevice3 — Python tool for communicating with iOS devices
  • pymobiledevice3 tunneld — must be running as root for iOS 17+

Install pymobiledevice3

pip3 install pymobiledevice3

Start tunneld

The tunnel daemon must run as root. You can either start it manually:

sudo pymobiledevice3 remote tunneld

Or install it as a LaunchDaemon for auto-start on boot. Create /Library/LaunchDaemons/com.pymobiledevice3.tunneld.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.pymobiledevice3.tunneld</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/pymobiledevice3</string>
        <string>remote</string>
        <string>tunneld</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PYTHONPATH</key>
        <string>/path/to/python/site-packages</string>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/tmp/pymobiledevice3-tunneld.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/pymobiledevice3-tunneld.log</string>
</dict>
</plist>

Then load it:

sudo cp com.pymobiledevice3.tunneld.plist /Library/LaunchDaemons/
sudo launchctl load /Library/LaunchDaemons/com.pymobiledevice3.tunneld.plist

iOS device requirements

  • Developer Mode enabled (Settings > Privacy & Security > Developer Mode)
  • Connected via USB and trusted

Setup

Add to ~/.claude/.mcp.json for global access, or to a project's .mcp.json:

{
  "mcpServers": {
    "device": {
      "command": "npx",
      "args": ["-y", "@magentaesolutions/device-screenshot-mcp@latest"],
      "env": {
        "PYMOBILEDEVICE3_PATH": "/path/to/pymobiledevice3",
        "SCREENSHOT_DIR": "/path/to/project/screenshots"
      }
    }
  }
}

Environment Variables

| Variable | Required | Default | Description | |---|---|---|---| | PYMOBILEDEVICE3_PATH | No | pymobiledevice3 | Path to the pymobiledevice3 binary | | SCREENSHOT_DIR | No | cwd | Default directory for saved screenshots. save_to paths are resolved relative to this. |

Tools

| Tool | Description | |---|---| | take_screenshot | Capture a PNG screenshot from the connected iOS device |

take_screenshot

| Parameter | Type | Required | Description | |---|---|---|---| | save_to | string | No | Filename or path for saving a copy (e.g. screenshot.png). Resolved relative to SCREENSHOT_DIR if set, otherwise relative to cwd. Creates directories if needed. |

Returns the screenshot as an inline image. If save_to is provided, also saves a copy to that path.