Apps
Craig occasionally publishes small apps — for the Mac, iPhone, and iPad — that scratch a specific itch. They stay simple and do one thing well.

MCP Connector
A Mac app and Safari extension that runs as a local MCP server, letting any MCP client (Claude Code, Claude Desktop, Codex, opencode, Cursor, …) drive Safari the way Claude in Chrome drives Chrome.
20 MCP browser-automation tools: navigate, click, type, screenshot, read DOM, capture console output and network activity
Sees every open tab in your Safari profile, not just tabs the connector opened
Trusted OS-level mouse and keyboard input when Accessibility is granted; synthetic DOM-event fallback otherwise
browser_batchpacks multiple tool calls into a single round-tripOne-click setup for Claude Code and Claude Desktop registers the MCP server in your Claude config — no terminal required; other clients (Codex, opencode, Cursor) connect by pointing their MCP config at the app binary
Multi-session: multiple MCP clients can share the same Safari instance
Local-only bridge: no analytics, no telemetry, no account, no outbound network calls of its own
Coming soon to the Mac App Store
Public Meeting Timer
This app implements a basic public-speaker countdown timer.
Allows setting the duration of the countdown (and saves default between launches)
Runs full-screen by default, but can be windowed and re-sizes to any window size
Prominent, clean display of remaining time
Turns orange with 1/4 time remaining and red with 1/8 remaining
Easily shareable using Zoom or Facetime screen share
Keyboard shortcuts: Return or Space to start/stop; ESC or delete to reset
No noises or audible alarms to annoy speakers as they wrap up
