Get the FREE Ultimate OpenClaw Setup Guide →

rec-us

Book a San Francisco tennis court via MCP server w/ auth

Installation
Run this command in your terminal to add the MCP server to Claude Code.
Run in terminal:
Command
claude mcp add --transport stdio elizabethsiegle-rec-us-mcp-server npx -y tennis-booking-mcp \
  --env REC_EMAIL="your-sf-rec-email@example.com" \
  --env REC_PASSWORD="your-sf-rec-password"

How to use

This MCP server automates San Francisco Recreation tennis court bookings via a Cloudflare MCP workflow. It exposes three tools to assist you through the process: 1) Check Court Availability, which queries available time slots for a specific court on a given date; 2) Book Court & Request SMS, which initiates the booking flow and stops at the SMS verification step, allowing you to receive the code and continue; and 3) Complete Booking with SMS, which submits the received SMS code to finish the booking. The server uses browser automation to navigate the rec.us booking flow and integrates authentication through Stytch so that only approved email addresses can operate the booking tools. You can connect to the MCP server from Cloudflare LLM Playground or Claude Desktop, enabling natural language or structured interactions to perform bookings.

To use the tools, first check availability for a court/date/time, then start the booking sequence if a slot is suitable. If SMS verification is required, you’ll provide the code you receive via SMS to complete the booking. The Claude/CLI integration lets you issue commands in natural language like “Check Alice Marble court on July 29 at 12 PM” or “Book Alice Marble for tomorrow at 2 PM,” and the MCP server will drive the underlying browser automation to carry out the steps.

How to install

Prerequisites:

  • Node.js (18.x or later) and npm installed on your machine
  • Access to a Cloudflare account if deploying as a Worker, or a local environment capable of running npx-based MCP setups
  • (Optional) Wrangler or Cloudflare tooling if you plan to deploy as a Worker

Step 1: Install dependencies

  • Ensure Node.js and npm are installed. Verify with: node -v npm -v

Step 2: Create and deploy the MCP template (local or via Cloudflare)

  • Run the following to generate a local MCP project named tennis-booking-mcp from the remote MCP authless template: npm create cloudflare@latest -- tennis-booking-mcp --template=cloudflare/ai/demos/remote-mcp-authless

Step 3: Configure secrets for authentication

  • Set environment variables required by the server (example placeholders): REC_EMAIL=your-sf-rec-email@example.com REC_PASSWORD=your-sf-rec-password
  • If you deploy to Cloudflare Workers, configure these as Secrets in your Wrangler/Worker environment or within your deployment pipeline.

Step 4: Configure the MCP client integration (Claude/Desktop, etc.)

Step 5: Run locally or deploy

  • Local run (via npx): npx tennis-booking-mcp
  • Deploy to Cloudflare (example): wrangler publish Ensure wrangler is authenticated and your project is configured with the correct account and zone.

Step 6: Verify connectivity

  • Open the MCP server URL (the sse endpoint) in your browser or via your MCP client and test the three tools: Check Court Availability, Book Court & Request SMS, Complete Booking with SMS.

Additional notes

Tips and common issues:

  • Make sure the REC_EMAIL is allowed by the Stytch-based authentication flow; only approved emails can perform bookings.
  • If the SMS step frequently fails, verify that your phone number can receive texts from the rec.us flow and that your network allows the SMS verification requests.
  • In Cloudflare deployments, ensure Wrangler is configured with the correct account and API token; test the Worker URL to confirm the MCP is responding.
  • Keep the environment variables secure and do not commit secrets to version control.
  • The three tools rely on live rec.us availability; if the site blocks automated access, you may need to adjust browser automation timing and selectors.
  • The npm package name for the MCP template is tennis-booking-mcp; if you rename your project, update the mcp_config accordingly.

Related MCP Servers

Sponsor this space

Reach thousands of developers