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

@asagakosho/serve-sim-mcp

v0.2.1

Published

MCP server that exposes serve-sim as agent-callable tools (screenshot, tap, swipe, button, open_url, list_devices, camera).

Readme

@asagakosho/serve-sim-mcp

MCP server that exposes serve-sim as agent-callable tools, so LLMs (Claude Code, Claude Desktop, Cursor, etc.) can drive an iOS Simulator with structured tool calls instead of free-form shell commands.

Not affiliated with the upstream — this is a thin wrapper that shells out to the serve-sim CLI and xcrun simctl.

Why

  • LLMs are bad at writing gesture JSON by hand. This package exposes high-level intents (sim_tap, sim_swipe, sim_button) so the agent never sees raw protocol details.
  • Screenshots come back inline as image content, making the screenshot → reason → act loop trivial.
  • Multi-device handling is uniform: every tool takes an optional udid.

Install / run

Requires macOS with Xcode command-line tools (xcrun simctl) and Node.js 18+. serve-sim itself is pulled in as a dependency — no separate install needed.

Claude Code / Claude Desktop / Cursor

Drop this into your client's MCP config (.mcp.json for Claude Code):

{
  "mcpServers": {
    "serve-sim": {
      "command": "npx",
      "args": ["-y", "@asagakosho/serve-sim-mcp"]
    }
  }
}

That's it — first run downloads the package, subsequent runs are cached. Restart the client so it picks up the new server.

Manual / global install

npm install -g @asagakosho/serve-sim-mcp
serve-sim-mcp   # speaks MCP over stdio

Tools (38)

Input

| Tool | What it does | | --- | --- | | sim_tap | Tap at normalized (0..1) coords | | sim_swipe | Swipe between two normalized coords | | sim_long_press | Press and hold at a coord for N ms | | sim_pinch | (stub — multi-touch CLI not yet exposed upstream) | | sim_gesture | Raw gesture event passthrough | | sim_button | home / lock / side-button / siri / apple-pay / volume-up / volume-down | | sim_rotate | portrait / portrait_upside_down / landscape_left / landscape_right | | sim_type_text | Type text via osascript (Simulator must be focused; ASCII-friendly) | | sim_open_url | Open URL or deep link |

Screen / device

| Tool | What it does | | --- | --- | | sim_screenshot | PNG inline as MCP image content | | sim_list_devices | Booted simulators (UDID, name, runtime) | | sim_boot | Boot by UDID or name | | sim_shutdown | Shut down one or all | | sim_erase | DESTRUCTIVE factory reset | | sim_status_bar | Override time / battery / wifi / cellular for clean screenshots | | sim_status_bar_clear | Remove overrides | | sim_memory_warning | Simulate low memory | | sim_ca_debug | CoreAnimation overlay (blended / copies / misaligned / offscreen / slow-animations) |

Apps / logs

| Tool | What it does | | --- | --- | | sim_app_launch | Launch by bundle id with optional args | | sim_app_terminate | Kill by bundle id | | sim_app_install | Install a .app bundle | | sim_app_uninstall | Uninstall by bundle id | | sim_app_container | Resolve app/data/groups container path | | sim_log_stream | Capture log stream for a bounded duration (default 5s) |

Privacy / push / media

| Tool | What it does | | --- | --- | | sim_grant_permission | Grant camera / photos / location / etc. without dialog | | sim_reset_permission | Reset so the dialog shows again | | sim_push | Deliver an APNs payload via simctl push | | sim_add_media | Add photos / videos to the Photos library |

Camera injection (wraps serve-sim camera)

| Tool | What it does | | --- | --- | | sim_camera_inject | Inject placeholder / file / webcam and (re)launch the app | | sim_camera_switch | Hot-swap source (no relaunch) | | sim_camera_mirror | auto / on / off | | sim_camera_status | JSON state of the helper | | sim_camera_list_webcams | Host cameras | | sim_camera_stop | Stop the helper |

Helper lifecycle

| Tool | What it does | | --- | --- | | sim_serve_start | serve-sim --detach (operation tools auto-start if needed) | | sim_serve_stop | serve-sim --kill | | sim_serve_status | { running: bool } | | sim_list_streams | Raw serve-sim --list output |

All tools accept an optional udid — omit when only one simulator is booted.

Recommended agent loop

  1. sim_list_devices once at start (or rely on auto-detect with a single booted device).
  2. sim_screenshot to see current state.
  3. Decide next action; call sim_tap / sim_swipe / sim_open_url.
  4. Wait a moment (animations), then go back to step 2.

Env

| Var | Default | Purpose | | --- | --- | --- | | SERVE_SIM_BIN | serve-sim | Override path to the serve-sim binary (e.g. when using a local checkout) |

License

Apache-2.0