resy-mcp-server

musemen/resy-mcp-server

3.1

If you are the rightful owner of resy-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Resy MCP Server is a powerful tool designed to automate restaurant reservations using the Model Context Protocol.

Tools
5
Resources
0
Prompts
0

🍽️ Resy MCP Server

A powerful Model Context Protocol server for automating Resy restaurant reservations

FeaturesInstallationQuick StartUsageAPIAdvanced


✨ Features

🔐 Authentication & Security

  • 🔒 Encrypted token storage (Fernet)
  • 👥 Multi-account support
  • 🔄 Token expiration tracking
  • 🛡️ Secure credential management

🔍 Smart Restaurant Search

  • 📍 Location-based search with NYC optimization
  • 🍕 Cuisine type filtering
  • 💰 Price range filtering
  • ⭐ Rating and review integration
  • 🕐 Real-time availability checking

🎯 Reservation Sniping

  • ⏰ Precision timing for reservation releases
  • 🔄 Multi-slot retry logic
  • 💾 Persistent scheduling (survives restarts)
  • 🚫 Automatic conflict detection
  • 📊 Success rate optimization

📅 Advanced Management

  • 📋 Waitlist automation
  • 🗓️ Calendar export (ICS)
  • 🔗 Direct calendar links (Google, Outlook, Yahoo)
  • 📱 Reservation history tracking
  • 🔔 Smart notifications

🚀 Installation

Prerequisites

  • Python 3.10 or higher
  • pip or poetry
  • A Resy account with valid authentication tokens

Quick Install

# Clone the repository
git clone https://github.com/musemen/resy-mcp-server.git
cd resy-mcp-server

# Run the automated setup
chmod +x setup.sh
./setup.sh

Manual Installation

Click to expand manual installation steps
# Create virtual environment
python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install additional required package
pip install greenlet

🏃 Quick Start

1. Get Your Resy Authentication Token

📱 Method 1: Browser Developer Tools (Recommended)
  1. Log in to resy.com
  2. Open Developer Tools (F12)
  3. Go to ApplicationCookieshttps://resy.com
  4. Find authToken cookie
  5. Copy the value (starts with eyJ...)
🌐 Method 2: Network Tab
  1. Open Developer Tools → Network tab
  2. Refresh any Resy page
  3. Filter by api.resy.com
  4. Click any request → Headers
  5. Find x-resy-auth-token

2. Configure MCP Client

Add to your Claude Desktop or other MCP client configuration:

{
  "mcpServers": {
    "resy": {
      "command": "python",
      "args": ["-m", "src"],
      "cwd": "/path/to/resy-mcp-server",
      "env": {
        "PYTHONPATH": "/path/to/resy-mcp-server"
      }
    }
  }
}

3. Add Your Account

User: Add my Resy account named "Personal" with token "eyJ0eX..."
Assistant: ✅ Account added successfully!

📖 Usage

🔍 Restaurant Search

Basic Search
Find Italian restaurants in Manhattan for tomorrow at 7pm for 2 people
Advanced Search
Search for romantic restaurants in West Village for Saturday at 8pm, 
party of 4, price range $$-$$$, with outdoor seating

📅 Reservation Management

Book a Reservation
Book the second restaurant from the search results
View Reservations
Show my upcoming reservations
Cancel Reservation
Cancel reservation [ID] because "Plans changed"

🎯 Automated Booking (Sniping)

Perfect for securing tables at popular restaurants that release reservations at specific times:

Schedule a booking for Carbone on August 15th at 7:00 PM for 4 people.
Book it 14 days in advance at 9:00 AM sharp.
Try these times in order: 7:00 PM, 7:30 PM, 8:00 PM
🎯 Pro Tips for Reservation Sniping
  • Popular restaurants often release tables exactly 14 or 30 days in advance
  • Release time is typically 9:00 AM or 10:00 AM ET
  • Multiple time slots increase success rate
  • Pre-fetch starts 60 seconds before execution
  • Millisecond precision gives you the edge

📋 Waitlist Management

# Join waitlist
Join the waitlist at Osteria Cotta for 4 people

# Check status
Check my waitlist status in Manhattan

# Leave waitlist
Leave waitlist [ID]

🗓️ Calendar Export

# Export all reservations
Export my reservations to calendar

# Get calendar links
Get calendar links for reservation [ID]

📚 API Reference

🔐 Authentication Tools
ToolDescriptionRequired Parameters
add_resy_accountAdd a new Resy accountaccount_name, auth_token
list_resy_accountsList all stored accounts-
set_active_accountSwitch active accountaccount_id
check_token_statusCheck token expirationaccount_id (optional)
🔍 Search Tools
ToolDescriptionRequired Parameters
search_restaurantsSearch with filtersdate, time, party_size
get_venue_detailsGet restaurant detailsvenue_id
📅 Booking Tools
ToolDescriptionRequired Parameters
book_reservationBook a reservationconfig_id
view_reservationsView all reservations-
cancel_reservationCancel a reservationreservation_id
find_booking_slotFind available timesvenue_id, date, time, party_size
⏰ Scheduling Tools
ToolDescriptionRequired Parameters
schedule_bookingSchedule automated bookingvenue_id, venue_name, date, preferred_times, party_size, days_in_advance
list_scheduled_bookingsView scheduled bookings-
cancel_scheduled_bookingCancel scheduled bookingbooking_id
📋 Waitlist Tools
ToolDescriptionRequired Parameters
join_waitlistJoin restaurant waitlistvenue_id, venue_name, party_size
check_waitlist_statusCheck waitlist positionlatitude, longitude
leave_waitlistLeave waitlistwaitlist_id
🗓️ Calendar Tools
ToolDescriptionRequired Parameters
export_calendarExport to ICS format-
get_calendar_linksGet calendar service linksreservation_id

🔧 Advanced Configuration

Environment Variables

Create a .env file in the project root:

# Logging level (DEBUG, INFO, WARNING, ERROR)
RESY_MCP_LOG_LEVEL=INFO

# Dry run mode - logs API calls without making them
RESY_MCP_DRY_RUN=false

# Custom config directory
RESY_MCP_CONFIG_PATH=~/.resy-mcp

NYC Neighborhood Support

Pre-configured coordinates for popular NYC areas:

  • Manhattan, Brooklyn, Queens, Bronx, Staten Island
  • East Village, West Village, Chelsea, SoHo, TriBeCa
  • Upper East Side, Upper West Side, Midtown
  • Williamsburg, DUMBO

Database Structure

All data is stored securely in ~/.resy-mcp/:

~/.resy-mcp/
├── tokens.enc          # Encrypted auth tokens
├── resy.db            # SQLite database
└── .key               # Encryption key

🛡️ Security

  • Encryption: All tokens encrypted with Fernet symmetric encryption
  • Permissions: Files created with 600 permissions (owner only)
  • No Logging: Tokens never appear in logs or error messages
  • Isolation: Each account's data is fully isolated

🐛 Troubleshooting

Common Issues and Solutions

"No active authentication found"

  • Solution: Add an account first with add_resy_account

"Authentication failed. Token may be expired"

  • Cause: Tokens expire after 30-60 days
  • Solution: Extract a new token from Resy

"Booking conflict detected"

  • Cause: Existing reservation at that time
  • Solution: Choose a different time or cancel existing reservation

Server won't start

  1. Check Python version: python3 --version (needs 3.10+)
  2. Reinstall dependencies: pip install -r requirements.txt
  3. Install greenlet: pip install greenlet
  4. Enable debug logging: RESY_MCP_LOG_LEVEL=DEBUG

🏗️ Architecture

resy-mcp-server/
├── src/
│   ├── server.py          # MCP server entry point
│   ├── services/          # Business logic layer
│   │   ├── auth.py        # Authentication management
│   │   ├── search.py      # Restaurant search
│   │   ├── booking.py     # Reservation operations
│   │   ├── scheduler.py   # Automated scheduling
│   │   ├── waitlist.py    # Waitlist management
│   │   └── calendar.py    # Calendar integration
│   ├── utils/             # Utility modules
│   │   ├── crypto.py      # Encryption utilities
│   │   ├── database.py    # Database models
│   │   └── resy_api.py    # API client
│   └── models/            # Data models
│       └── types.py       # Type definitions
├── tests/                 # Test suite
├── setup.sh              # Quick setup script
├── requirements.txt      # Python dependencies
└── README.md            # You are here! 

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the file for details.

🙏 Acknowledgments

  • Built for the Model Context Protocol
  • Inspired by the Resy community's booking automation needs
  • Uses the Resy API (unofficial)

⚠️ Disclaimer

This tool is for personal use only. Please respect Resy's terms of service and use responsibly. The authors are not responsible for any misuse or violations of Resy's policies.


Made with ❤️ for the dining enthusiasts who never want to miss a reservation

View on GitHubReport IssueContribute