Skip to main content
The MCP server runs on your Mac. To reach it from the Claude mobile app (or claude.ai anywhere), you expose the local server to the internet through a Cloudflare Tunnel, protected by Cloudflare Access, keeping the Mac as the source of truth.
This is single-tenant by design: it exposes your local server, gated to your identity. The iPod tools work whenever the iPod is docked to the Mac; undocked, they return “not connected,” exactly as locally.

How it works

  • clickwheel-mcp serve --http runs the server over Streamable HTTP, bound to 127.0.0.1 (the tunnel is the only ingress).
  • A Cloudflare Tunnel routes your domain (say mcp.example.com) → the local server.
  • Cloudflare Access (Zero Trust) gates it to your email and natively handles the MCP OAuth flow, no OAuth code required.

Setup

The full, copy-pasteable runbook lives in the repo at docs/mcp/deploy/README.md. In short:
  1. Run the server: clickwheel-mcp serve --http --allowed-host mcp.example.com. (The --allowed-host is required behind a tunnel, or the SDK’s DNS-rebinding protection rejects requests with HTTP 421.)
  2. Create a Cloudflare Tunnel and route your domain to http://127.0.0.1:8000.
  3. Add a self-hosted Cloudflare Access application over the host with a policy allowing only your email (built-in one-time-PIN identity works).
  4. Keep it running with a launchd LaunchAgent (templates in the repo).

Adding the connector

You add the connector on claude.ai (web): Settings → Connectors → Add custom connector → your MCP URL. Complete the Cloudflare Access login. It then becomes usable in the mobile app (you can’t add connectors from the phone, only use ones added on the web).

What works from mobile

  • Library + playlist tools: fully (they hit the local catalog).
  • Plex / Apple Music / Last.fm: whenever the Mac can reach them.
  • iPod tools: only when the iPod is docked to the Mac; otherwise they fail gracefully.