npm package: @striderlabs/mcp-vrbo
Description: MCP server for VRBO vacation rental automation using Playwright
Author: StrideLabs
Latest version: 1.0.0

# @striderlabs/mcp-vrbo

An MCP (Model Context Protocol) server for automating VRBO vacation rental interactions using Playwright browser automation.

## Features

- Search for vacation rental properties by location, dates, and filters
- View property details, availability calendars, and pricing breakdowns
- Manage bookings (view, get details, cancel)
- Save favorite properties
- Contact property hosts
- Read property reviews

## Installation

### Prerequisites

- Node.js 18 or higher
- npm

### Install from package

```bash
npm install -g @striderlabs/mcp-vrbo
npx playwright install chromium
```

### Install from source

```bash
git clone https://github.com/markswendsen-code/mcp-vrbo
cd mcp-vrbo
npm install
npx playwright install chromium
npm run build
```

## Configuration

Add to your MCP client configuration (e.g., Claude Desktop `~/.claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "vrbo": {
      "command": "striderlabs-mcp-vrbo"
    }
  }
}
```

Or if running from source:

```json
{
  "mcpServers": {
    "vrbo": {
      "command": "node",
      "args": ["/path/to/mcp-vrbo/dist/index.js"]
    }
  }
}
```

## Tools

### `vrbo_login`

Authenticate with your VRBO account. Required before using tools that access account-specific data.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | ✓ | VRBO account email address |
| `password` | string | ✓ | VRBO account password |

**Example:**
```json
{
  "email": "user@example.com",
  "password": "your-password"
}
```

---

### `vrbo_search_properties`

Search for vacation rentals by location with optional filters.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `location` | string | ✓ | Destination (city, state, landmark) |
| `check_in` | string | | Check-in date (YYYY-MM-DD) |
| `check_out` | string | | Check-out date (YYYY-MM-DD) |
| `guests` | number | | Number of guests |
| `filters` | object | | Search filters (see below) |

**Filters object:**
| Field | Type | Description |
|-------|------|-------------|
| `min_price` | number | Minimum nightly price (USD) |
| `max_price` | number | Maximum nightly price (USD) |
| `min_bedrooms` | number | Minimum bedrooms |
| `max_bedrooms` | number | Maximum bedrooms |
| `pets_allowed` | boolean | Pet-friendly only |
| `property_type` | string | Property type (house, condo, cabin, etc.) |
| `amenities` | string[] | Required amenities (pool, hot-tub, wifi, etc.) |

**Example:**
```json
{
  "location": "Scottsdale, AZ",
  "check_in": "2025-07-04",
  "check_out": "2025-07-11",
  "guests": 4,
  "filters": {
    "min_bedrooms": 3,
    "pets_allowed": true,
    "amenities": ["pool"]
  }
}
```

---

### `vrbo_get_property_details`

Retrieve comprehensive details for a specific property.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID or listing number |

**Returns:** Title, description, amenities, photos, host info, location, bedroom/bath count, cancellation policy, house rules.

---

### `vrbo_get_availability`

Check the availability calendar for a property in a given month.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID |
| `month` | string | ✓ | Month in YYYY-MM format (e.g., `2025-08`) |

**Returns:** Lists of available and unavailable dates for the specified month.

---

### `vrbo_get_pricing`

Get detailed pricing breakdown for specific dates.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID |
| `check_in` | string | ✓ | Check-in date (YYYY-MM-DD) |
| `check_out` | string | ✓ | Check-out date (YYYY-MM-DD) |
| `guests` | number | ✓ | Number of guests |

**Returns:** Nightly rate, cleaning fee, service fee, taxes, and total price.

---

### `vrbo_book_property`

Initiate the booking flow for a property.

> ⚠️ **Safety Note:** Booking is NOT auto-submitted to prevent unintended charges. The tool navigates to checkout and fills payment details — you must review and confirm manually.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID |
| `check_in` | string | ✓ | Check-in date (YYYY-MM-DD) |
| `check_out` | string | ✓ | Check-out date (YYYY-MM-DD) |
| `guests` | number | ✓ | Number of guests |
| `payment_info` | object | ✓ | Payment details (see below) |

**Payment info object:**
| Field | Type | Description |
|-------|------|-------------|
| `card_number` | string | Credit card number |
| `expiry` | string | Card expiry (MM/YY) |
| `cvv` | string | Card CVV |
| `name_on_card` | string | Cardholder name |
| `billing_zip` | string | Billing zip/postal code |

---

### `vrbo_get_bookings`

List all bookings for the authenticated account.

**Parameters:** None (requires prior `vrbo_login`)

**Returns:** List of bookings with property name, dates, status, and total.

---

### `vrbo_get_booking_details`

Get complete details for a specific booking.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | string | ✓ | VRBO booking ID or confirmation code |

---

### `vrbo_cancel_booking`

Locate and initiate the cancellation process for a booking.

> ⚠️ **Safety Note:** Cancellation is NOT auto-confirmed. The tool finds the cancel button — you must confirm manually.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `booking_id` | string | ✓ | VRBO booking ID to cancel |

---

### `vrbo_contact_host`

Send a message to a property host.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID |
| `message` | string | ✓ | Message to send to the host |

---

### `vrbo_get_reviews`

Fetch reviews and ratings for a property.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID |

**Returns:** Overall rating, category scores, and individual guest reviews with author, text, rating, and date.

---

### `vrbo_get_favorites`

Retrieve all saved/favorited properties for the authenticated account.

**Parameters:** None (requires prior `vrbo_login`)

---

### `vrbo_add_favorite`

Add a property to your VRBO favorites list.

**Parameters:**
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `property_id` | string | ✓ | VRBO property ID to save |

## How Property IDs Work

VRBO property IDs are numeric identifiers found in property URLs:
- URL: `https://www.vrbo.com/123456`
- Property ID: `123456`

You can get property IDs from `vrbo_search_properties` results.

## Architecture

```
src/
├── index.ts     # MCP server, tool definitions, request handlers
└── browser.ts   # Playwright automation helpers, page extractors
```

The server uses a singleton browser instance that persists across tool calls within a session, enabling login state to be maintained across multiple operations.

## Limitations

- VRBO's website structure may change, requiring updates to CSS selectors
- Some operations (booking confirmation, cancellation, sending messages) are intentionally not auto-submitted for safety
- Rate limiting and CAPTCHA may affect automated access
- Playwright headless mode may be detected by VRBO's bot protection

## License

MIT