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

@pilotgentic/mcp-server

v1.0.0

Published

Physical macOS desktop control for Claude — click, type, screenshot, read UI structure, control browsers, run agentic action loops via PilotGentic daemon

Readme

MacPilot MCP Server

Gives Claude CLI (Claude Code) physical Mac control + vision via the MacPilot daemon. Claude can see your screen, click anywhere, type text, press keyboard shortcuts, scroll, and launch apps — across every native Mac application.

Install (one command)

cd ~/Projects/automation-hub/MacPilot/components/mcp-server
./install.sh

That's it. The installer handles everything:

  1. Installs Node.js dependencies
  2. Registers the MCP server via claude mcp add (user scope → ~/.claude.json) so tools work from any directory
  3. Creates .mcp.json in the project root as a project-scope backup
  4. Installs the MacPilot skill so Claude knows when and how to use the tools (~/.claude/skills/macpilot/)
  5. The daemon auto-starts when Claude connects — no manual launch needed

After install, just run claude from any directory. The tools are always available.

claude
> "Open System Settings and enable Dark Mode"
# Claude auto-uses: screenshot → launch → click → verify

Available Tools

| Tool | Description | |------|-------------| | pilotgentic_screenshot | Capture screen — gives Claude vision of the Mac desktop | | pilotgentic_click | Click at (x,y) coordinates in any app | | pilotgentic_type | Type text into the focused field | | pilotgentic_key | Press keyboard shortcuts (Cmd+C, Cmd+V, etc.) | | pilotgentic_scroll | Scroll at a specific position | | pilotgentic_move | Move Doppler cursor overlay (aim without clicking) | | pilotgentic_launch | Open or activate a Mac application | | pilotgentic_status | Get daemon status, cursor position, running apps |

Architecture

Claude Code <-> MCP (stdio) <-> This Server <-> File IPC <-> Daemon <-> Mac

The MCP server communicates with the MacPilot daemon via file-based IPC (/tmp/pilotgentic_cmd.txt and /tmp/pilotgentic_result.txt). The daemon uses macOS CGEvents for physical input simulation in any app.


How It Works Under the Hood

The installer sets up 3 layers that work together:

| Layer | What it does | File | |-------|-------------|------| | MCP Server (user) | Registers 8 tools in every Claude CLI session | ~/.claude.json (via claude mcp add) | | MCP Server (project) | Backup: tools available when inside MacPilot dir | .mcp.json in project root | | Skill | Teaches Claude the screenshot->click->verify workflow | ~/.claude/skills/macpilot/SKILL.md | | Daemon auto-start | Spawns MacPilot daemon if not running | Built into MCP server startup |

The MCP server layer makes the tools available. The skill layer makes Claude prefer them for GUI tasks and know the correct workflow. The auto-start layer means users never need to manually launch the daemon.

Manual Setup (if you prefer)

If you don't want to use the installer, you can set up each layer manually:

1. MCP Server (user scope) — Register via Claude CLI so tools are available everywhere:

claude mcp add macpilot --scope user -- node /path/to/MacPilot/components/mcp-server/src/index.js

This writes to ~/.claude.json. Verify with claude mcp list.

2. MCP Server (project scope) — Create .mcp.json in the MacPilot project root:

{
  "mcpServers": {
    "macpilot": {
      "command": "node",
      "args": ["/path/to/MacPilot/components/mcp-server/src/index.js"]
    }
  }
}

3. Skill — Create ~/.claude/skills/macpilot/SKILL.md with YAML frontmatter containing name, description, allowed-tools, and the MacPilot workflow instructions. See install.sh for the full content.

Important: Claude Code does NOT use ~/.claude/settings.json for MCP servers. That file is for permissions and general settings. MCP servers go in ~/.claude.json (user scope) or .mcp.json (project scope). Use claude mcp add to register them correctly.


File Structure

mcp-server/
├── package.json
├── install.sh                  # One-command installer
├── mcp.json                    # MCP config for --mcp-config flag
├── README.md
└── src/
    ├── index.js                # Server entry point
    ├── config/
    │   └── constants.js        # Paths, timeouts, key codes
    ├── tools/
    │   ├── index.js            # Tool registry
    │   ├── click.js            # pilotgentic_click
    │   ├── type.js             # pilotgentic_type
    │   ├── key.js              # pilotgentic_key
    │   ├── scroll.js           # pilotgentic_scroll
    │   ├── screenshot.js       # pilotgentic_screenshot
    │   ├── status.js           # pilotgentic_status
    │   ├── move.js             # pilotgentic_move
    │   └── launch.js           # pilotgentic_launch
    └── utils/
        ├── daemon-bridge.js    # File-based IPC with daemon
        ├── daemon-lifecycle.js # Daemon auto-start/health check
        ├── screenshot.js       # Screen capture utilities
        └── applescript.js      # AppleScript system queries

Prerequisites

  • Node.js (v18+) — the installer checks for this
  • macOS — the daemon uses CGEvents (macOS-only)
  • Claude CLI (Claude Code) — install from claude.ai
  • Accessibility permissions — macOS will prompt you to grant accessibility access on first use (System Settings > Privacy & Security > Accessibility)