rec-us
Book a San Francisco tennis court via MCP server w/ auth
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.)
- For Claude Desktop, install the mcp-remote proxy and point to your MCP server URL (e.g., https://tennis-booking.your-account.workers.dev/sse).
- For LLM Playground, provide the MCP URL to start interacting with the server.
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
mcp-memory
🔥🖥️ MCP Memory is a MCP Server that gives MCP Clients (Cursor, Claude, Windsurf and more) the ability to remember information about users (preferences, behaviors) across conversations.
mcp
MCP server for the Cloudflare API
mcp-rest-api
A TypeScript-based MCP server that enables testing of REST APIs through Cline. This tool allows you to test and interact with any REST API endpoints directly from your development environment.
mcp-sysoperator
MCP for Ansible, Terraform, LocalStack, and other IaC tools. Create and iterate IaC
google -remote
Collection of Google-native tools (e.g., Gmail, Calendar) for the MCP
akyn-sdk
Turn any data source into an MCP server in 5 minutes. Build AI-agents-ready knowledge bases.