SF Tennis Court Booking via Cloudflare MCP Server

SF Tennis Court Booking via Cloudflare MCP Server

Automates tennis court bookings on San Francisco Recreation websites using browser automation, with tools to check availability, initiate booking with SMS verification, and complete bookings.

Category
Visit Server

README

SF Tennis Court Booking via Cloudflare MCP Server

<img width="1079" height="960" alt="image" src="https://github.com/user-attachments/assets/bbec40bb-2ac0-475b-ba31-03a6529fba03" />

Automate tennis court bookings on San Francisco Recreation websites using a Cloudflare MCP (Model Context Protocol) server with browser automation. Never miss your favorite court and court time again!

It uses Stytch to authenticate the server so only certain emails (like mine) can book a court (in my name.)

Demo Video

📹 Watch the demo and a brief project explanation on YouTube

What This Does

This MCP server has 3 tennis booking tools:

  • Check Court Availability - See available time slots for any court/date
  • Book Court & Request SMS - Automate booking flow up to SMS verification
  • Complete Booking with SMS - Finish booking by entering your SMS code

Quick Deploy

Deploy to Workers

This will deploy your tennis booking MCP server to: tennis-booking.<your-account>.workers.dev/sse

Alternatively, clone and deploy locally:

npm create cloudflare@latest -- tennis-booking-mcp --template=cloudflare/ai/demos/remote-mcp-authless

How the tennis booking works

  1. Check what's available:
check_tennis_courts({
  court: "Alice Marble", 
  date: "2025-07-29", 
  time: "12:00 PM"
})
  1. Start booking process (stops at SMS step)
book_and_request_sms({
  court: "Alice Marble",
  time: "12:00 PM", 
  date: "2025-07-29"
})
  1. Manual SMS + Automated Completion (User gets verification code from rec.us, types it in to MCP server message, this tool then runs)
enter_sms_code_and_complete({code: "123456"})

Setup Requirements

You need secrets for your Cloudflare Worker/MCP server:

REC_EMAIL=your-sf-rec-email@example.com
REC_PASSWORD=your-sf-rec-password

Your wrangler.jsonc should have:

"ai": {
		"binding": "AI"
	},
	"browser": {
		"binding": "MYBROWSER"
	},

Connect to MCP Clients

  1. Cloudflare LLM Playground

Go to https://playground.ai.cloudflare.com/ Enter your MCP server URL: tennis-booking.<your-account>.workers.dev/sse Start booking courts with natural language!

  1. Claude Desktop Install the mcp-remote proxy and update Claude Desktop's config:
{
  "mcpServers": {
    "tennis-booking": {
      "command": "npx",
      "args": [
        "mcp-remote", 
        "https://tennis-booking.<your-account>.workers.dev/sse"
      ]
    }
  }
}

Now you can chat with Claude: "Book Alice Marble court for tomorrow at 2 PM" and it will handle the entire process!

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured