# MCP VRBO
MCP server for searching VRBO vacation rental listings using browser automation.
## Overview
This server provides VRBO search capabilities by leveraging `mcp-browser` for browser automation. Unlike the Airbnb MCP which uses embedded JSON extraction, VRBO requires full browser rendering to access listing data.
**Port:** 3046
**URL:** https://mcp-vrbo.local.jbmurphy.com
## Architecture
```
mcp-vrbo (3042) --> mcp-browser (3020) --> browser-pool --> LXC browsers
```
The server:
1. Receives search/listing requests
2. Calls mcp-browser to navigate to VRBO pages
3. Executes JavaScript to extract listing data from the DOM
4. Returns structured property information
## Tools
| Tool | Description |
|------|-------------|
| `vrbo_search` | Search VRBO listings with filters (location, dates, guests, price range, bedrooms) |
| `vrbo_listing_details` | Get detailed information about a specific VRBO property |
## Usage
### Search for listings
```bash
curl -X POST https://mcp-vrbo.local.jbmurphy.com/mcp/call_tool \
-H "Content-Type: application/json" \
-d '{
"name": "vrbo_search",
"arguments": {
"location": "New York",
"checkin": "2025-03-01",
"checkout": "2025-03-05",
"adults": 2,
"min_bedrooms": 2
}
}'
```
### Get listing details
```bash
curl -X POST https://mcp-vrbo.local.jbmurphy.com/mcp/call_tool \
-H "Content-Type: application/json" \
-d '{
"name": "vrbo_listing_details",
"arguments": {
"id": "4515867"
}
}'
```
## Search Parameters
| Parameter | Type | Description |
|-----------|------|-------------|
| `location` | string | Required. City, state, or region to search |
| `checkin` | string | Check-in date (YYYY-MM-DD) |
| `checkout` | string | Check-out date (YYYY-MM-DD) |
| `adults` | number | Number of adults (default: 2) |
| `children` | number | Number of children (default: 0) |
| `min_bedrooms` | number | Minimum number of bedrooms |
| `min_bathrooms` | number | Minimum number of bathrooms |
| `min_price` | number | Minimum price per night |
| `max_price` | number | Maximum price per night |
## Response Format
```json
{
"searchUrl": "https://www.vrbo.com/search?destination=...",
"location": "New York",
"totalAvailable": "300+",
"returnedCount": 17,
"properties": [
{
"id": "4515867",
"name": "Spacious apartment in Brooklyn",
"url": "https://www.vrbo.com/4515867",
"price": "$1,181",
"priceNumeric": 1181,
"rating": 9.4,
"reviews": 10,
"propertyType": "Apartment",
"sleeps": 16,
"bedrooms": 4,
"bathrooms": "3+",
"neighborhood": "Brooklyn"
}
]
}
```
## Dependencies
- `mcp-browser` - Browser automation service (must be running)
- `browser-pool` - LXC browser container pool
## Build & Deploy
```bash
# Build locally
docker-compose up -d --build
# Or via main docker-compose
cd .. && docker-compose up -d --build mcp-vrbo
```
## Technical Notes
- VRBO uses React and loads data dynamically via GraphQL
- Data extraction is done by parsing the rendered DOM, not embedded JSON
- The browser pool handles anti-bot measures through real browser instances
- Slower than Airbnb scraping (~3-5 seconds per search) due to full page rendering
## Comparison: Airbnb vs VRBO
| Aspect | mcp-airbnb | mcp-vrbo |
|--------|------------|----------|
| Method | Embedded JSON extraction | DOM parsing via browser |
| Speed | Fast (~1 second) | Slower (~3-5 seconds) |
| Browser required | No | Yes (via mcp-browser) |
| Reliability | May break on JSON structure changes | May break on DOM changes |