Skip to main content
Glama
markswendsen-code

Enterprise Rent-A-Car MCP Connector

README.md
# @striderlabs/mcp-enterprise

A Model Context Protocol (MCP) connector for Enterprise Rent-A-Car. This connector enables AI assistants (such as Claude) to search for vehicles, manage reservations, and check Enterprise Plus loyalty account information — all through enterprise.com via headless browser automation.

---

## Overview

This connector uses [Playwright](https://playwright.dev/) to drive a stealth headless Chromium browser against `enterprise.com`. It exposes 7 MCP tools covering the full car rental workflow:

- Search available vehicles by location, dates, and preferences
- Get detailed vehicle pricing and protection options
- Create, modify, and cancel reservations
- Retrieve Enterprise Plus account details
- Check Enterprise Plus loyalty points balance and activity

Session cookies are persisted to `~/.mcp-enterprise/session.json` so repeat calls avoid re-authenticating.

---

## Prerequisites

- **Node.js** 18 or higher
- **npm** 9 or higher
- Internet access to `enterprise.com`

---

## Installation

### From the package directory

```bash
npm install
npx playwright install chromium
npm run build
```

### As a global CLI

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

---

## Configuration

No API keys are required. The connector uses Enterprise's public-facing website.

| Environment Variable | Description |
|---|---|
| `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH` | Path to a custom Chromium binary |
| `HTTP_PROXY` / `HTTPS_PROXY` | Proxy server for outbound requests |

---

## MCP Client Configuration

Add to your Claude Desktop `claude_desktop_config.json`:

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

Or if installed globally:

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

---

## Available Tools

### `search_vehicles`

Search for available vehicles at Enterprise for specific dates and locations.

```json
{
  "pickup_location": "LAX",
  "pickup_date": "2025-06-15",
  "pickup_time": "10:00",
  "dropoff_date": "2025-06-20",
  "dropoff_time": "10:00",
  "vehicle_class": "SUV",
  "driver_age": 30,
  "enterprise_plus_number": "EP123456"
}
```

**Returns:** Array of available vehicles with `vehicle_id`, make/model, class, pricing, features, and mileage policy.

---

### `get_vehicle_details`

Get full pricing breakdown and protection options for a vehicle from search results.

```json
{
  "vehicle_id": "ENT-ABC12345",
  "rate_code": "STANDARD"
}
```

**Returns:** Vehicle details plus `rate_details` (base rate, taxes, fees) and `protection_options` (LDW, PAI, PEC).

---

### `create_reservation`

Create a new Enterprise reservation.

```json
{
  "vehicle_id": "ENT-ABC12345",
  "pickup_location_id": "LAX01",
  "pickup_datetime": "2025-06-15T10:00:00",
  "dropoff_datetime": "2025-06-20T10:00:00",
  "driver_first_name": "Jane",
  "driver_last_name": "Smith",
  "driver_email": "jane@example.com",
  "driver_phone": "555-555-1234",
  "enterprise_plus_number": "EP123456",
  "protection_plan": "partial"
}
```

**Returns:** Confirmed `Reservation` with `confirmation_number`, vehicle, location, dates, driver info, and cost breakdown.

---

### `modify_reservation`

Modify an existing reservation (dates, locations, or vehicle class).

```json
{
  "confirmation_number": "ENT-XYZ789",
  "last_name": "Smith",
  "new_pickup_datetime": "2025-06-16T10:00:00",
  "new_dropoff_datetime": "2025-06-22T10:00:00",
  "new_vehicle_class": "Midsize"
}
```

**Returns:** Updated `Reservation` with modified details.

---

### `cancel_reservation`

Cancel an existing reservation. No fee when cancelled before scheduled pickup.

```json
{
  "confirmation_number": "ENT-XYZ789",
  "last_name": "Smith",
  "reason": "Travel plans changed"
}
```

**Returns:** `{ success: true, confirmation_number, message, refund_amount }`.

---

### `get_account`

Retrieve Enterprise Plus account information.

```json
{
  "enterprise_plus_number": "EP123456",
  "pin": "your-pin"
}
```

**Returns:** Account details including `tier` (Standard/Silver/Gold/Platinum), `points_balance`, `rentals_ytd`, and `free_day_certificates`.

---

### `get_loyalty_points`

Check Enterprise Plus points balance, tier progress, and recent activity.

```json
{
  "enterprise_plus_number": "EP123456",
  "pin": "your-pin"
}
```

**Returns:** `points_balance`, `tier`, `points_to_next_tier`, `expiration_date`, and `recent_activity` array.

---

## Example Usage with Claude

> "Find me an SUV at LAX from June 15–20, then book it for Jane Smith."

Claude will:
1. Call `search_vehicles` with the specified parameters
2. Present available SUVs with pricing
3. Call `create_reservation` with the chosen vehicle and driver details
4. Return the confirmation number

> "How many Enterprise Plus points do I have? My number is EP123456."

Claude will call `get_loyalty_points` and report your balance, tier, and recent activity.

---

## Session Management

Cookies are persisted to `~/.mcp-enterprise/session.json` after each authenticated request. This means Enterprise Plus sign-in is preserved across calls, avoiding repeated login prompts.

To clear the session:

```bash
rm ~/.mcp-enterprise/session.json
```

---

## Troubleshooting

| Problem | Solution |
|---|---|
| `Browser not initialized` | Ensure `playwright install chromium` was run |
| Search returns no results | Check that enterprise.com is reachable; try a major city or airport code |
| Login fails | Verify your Enterprise Plus number and PIN; clear session and retry |
| Timeout errors | Increase system timeout or check network connectivity |

---

## License

MIT

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: cancel_reservation, create_reservation, modify_reservation handle the reservation lifecycle; get_account and get_loyalty_points focus on account and loyalty data; search_vehicles and get_vehicle_details cover vehicle discovery and details. The descriptions reinforce these boundaries, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with clear, descriptive names (e.g., cancel_reservation, get_account, search_vehicles). There are no deviations in style or convention, making the set predictable and easy to understand at a glance.

Tool Count5/5

With 7 tools, the count is well-scoped for a car rental domain, covering core operations like reservation management (create, modify, cancel), vehicle search and details, and account/loyalty features. Each tool earns its place without redundancy or bloat.

Completeness5/5

The tool set provides complete coverage for the car rental domain: full CRUD for reservations (create, modify, cancel), vehicle discovery (search_vehicles and get_vehicle_details), and account management (get_account and get_loyalty_points). There are no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues