npm package: @striderlabs/mcp-rover
Description: Model Context Protocol connector for Rover pet services
Author: Strider Labs
Latest version: 1.0.0

# @striderlabs/mcp-rover

A Model Context Protocol (MCP) connector for [Rover](https://www.rover.com) — the pet services marketplace. Enables AI assistants to search for pet sitters, manage bookings, communicate with sitters, and handle pet profiles through Rover's platform.

## Features

- Search pet sitters by location, service type, and dates
- View detailed sitter profiles with reviews and pricing
- Browse available service types (boarding, walking, drop-in, etc.)
- Request bookings and manage existing ones
- Send and receive messages with sitters
- Manage pet profiles (add, update, list)
- Leave reviews for completed services
- View favorited sitters

## Prerequisites

- Node.js 18+
- A Rover account at [rover.com](https://www.rover.com)
- Playwright browsers installed

## Installation

```bash
npm install @striderlabs/mcp-rover

# Install Playwright browsers (first time only)
npx playwright install chromium
```

## MCP Configuration

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

```json
{
  "mcpServers": {
    "rover": {
      "command": "npx",
      "args": ["-y", "@striderlabs/mcp-rover"]
    }
  }
}
```

Or if installed globally:

```json
{
  "mcpServers": {
    "rover": {
      "command": "mcp-rover"
    }
  }
}
```

## Available Tools

### Authentication

#### `login`
Log in to your Rover account.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| email | string | Yes | Your Rover email |
| password | string | Yes | Your Rover password |

### Sitter Search

#### `search_sitters`
Search for pet sitters by location and service type.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| location | string | Yes | City, neighborhood, or zip code |
| serviceType | enum | Yes | `boarding`, `house_sitting`, `drop_in`, `doggy_day_care`, `dog_walking` |
| startDate | string | No | YYYY-MM-DD format |
| endDate | string | No | YYYY-MM-DD format |
| petCount | number | No | Number of pets |
| petSize | enum | No | `small`, `medium`, `large`, `giant` |

#### `get_sitter_profile`
Get detailed profile for a sitter including reviews and rates.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| sitterIdOrUrl | string | Yes | Sitter username or full Rover profile URL |

#### `search_services`
List all available service types in a location.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| location | string | Yes | Location to search |

### Bookings

#### `request_booking`
Send a booking request to a sitter. Requires login.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| sitterId | string | Yes | Sitter ID or profile URL |
| serviceType | enum | Yes | Type of service |
| startDate | string | Yes | YYYY-MM-DD |
| endDate | string | Yes | YYYY-MM-DD |
| petIds | string[] | Yes | Array of pet IDs |
| message | string | No | Message to the sitter |

#### `get_bookings`
View all current and past bookings. Requires login.

### Messaging

#### `message_sitter`
Send a message to a sitter. Requires login.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| sitterId | string | Yes | Sitter ID or profile URL |
| message | string | Yes | Message text |

#### `get_messages`
Get message threads. Requires login.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| sitterId | string | No | Filter to a specific sitter thread |

### Pet Management

#### `add_pet_profile`
Add a new pet to your account. Requires login.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| name | string | Yes | Pet's name |
| species | enum | Yes | `dog`, `cat`, `other` |
| breed | string | No | Pet's breed |
| age | number | No | Age in years |
| weight | number | No | Weight in pounds |
| size | enum | No | `small`, `medium`, `large`, `giant` |
| temperament | string | No | Personality description |
| specialNeeds | string | No | Medical/care requirements |
| vaccinated | boolean | No | Vaccination status |
| spayedNeutered | boolean | No | Spayed/neutered status |

#### `update_pet_profile`
Update an existing pet profile. Requires login.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| petId | string | Yes | Pet's Rover ID |
| ...fields | — | No | Any fields from `add_pet_profile` |

#### `get_pets`
List all pets on your account. Requires login.

### Reviews & Favorites

#### `leave_review`
Leave a review for a completed service. Requires login.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| bookingId | string | Yes | Booking ID |
| rating | number | Yes | 1–5 stars |
| reviewText | string | Yes | Written review |

#### `get_favorites`
Get your list of favorited sitters. Requires login.

## Usage Examples

```
# Search for dog boarders in Seattle for a week
search_sitters location="Seattle, WA" serviceType="boarding" startDate="2025-06-01" endDate="2025-06-07"

# View a sitter's full profile
get_sitter_profile sitterIdOrUrl="john-d"

# Book a sitter
request_booking sitterId="john-d" serviceType="boarding" startDate="2025-06-01" endDate="2025-06-07" petIds=["pet-123"] message="Hi! My dog Bella is friendly and loves to play."

# Send a message
message_sitter sitterId="john-d" message="Hi, is your place good for large dogs?"
```

## Development

```bash
# Install dependencies
npm install

# Build TypeScript
npm run build

# Run in development mode
npm run dev
```

## Architecture

- **`src/index.ts`** — MCP server entry point. Defines all tools, handles request routing, formats responses.
- **`src/browser.ts`** — Playwright-based browser automation layer. Handles all interactions with rover.com.

The server uses stdio transport for MCP communication and launches a headless Chromium browser to interact with Rover's website.

## Notes

- This connector uses browser automation to interact with Rover's website, as Rover does not provide a public API.
- Login credentials are only used for the current session and are never stored.
- Browser runs in headless mode by default.

## License

MIT