Skip to main content
Glama
README.md
# @striderlabs/mcp-zipcar

A Model Context Protocol (MCP) server for automating Zipcar car sharing tasks via stealth browser automation using [patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright).

## Tools

| Tool | Description |
|------|-------------|
| `search_cars` | Find available Zipcars near a location for a given time period |
| `get_car_details` | Get vehicle info: type, features, seating, fuel, hourly/daily rates |
| `reserve_car` | Book a Zipcar for a specific time slot (requires login) |
| `extend_reservation` | Add time to an existing reservation |
| `end_trip` | End an active rental session and get a trip summary |
| `get_reservation_history` | View past and upcoming reservations |

## Installation

```bash
npm install
npm run build
```

## Usage

### With Claude Desktop

Add to your `claude_desktop_config.json`:

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

Or if installed globally:

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

### With Claude Code

```bash
claude mcp add zipcar -- npx -y @striderlabs/mcp-zipcar
```

## Authentication

Tools that require authentication (`reserve_car`, `extend_reservation`, `end_trip`, `get_reservation_history`) require you to be logged in to Zipcar in a browser session. The server shares a persistent browser context across requests within the same session.

If not logged in, you will receive an `auth_required` response with instructions to log in manually.

## Tool Examples

### Search for cars

```json
{
  "tool": "search_cars",
  "arguments": {
    "location": "Brooklyn, NY",
    "start_time": "2025-08-15T09:00:00",
    "end_time": "2025-08-15T13:00:00"
  }
}
```

### Reserve a car

```json
{
  "tool": "reserve_car",
  "arguments": {
    "car_id": "car-12345",
    "start_time": "2025-08-15T09:00:00",
    "end_time": "2025-08-15T13:00:00",
    "plan": "hourly"
  }
}
```

### Get reservation history

```json
{
  "tool": "get_reservation_history",
  "arguments": {
    "filter": "upcoming",
    "limit": 10
  }
}
```

### Extend a reservation

```json
{
  "tool": "extend_reservation",
  "arguments": {
    "reservation_id": "res-98765",
    "new_end_time": "2025-08-15T15:00:00"
  }
}
```

### End a trip

```json
{
  "tool": "end_trip",
  "arguments": {
    "reservation_id": "res-98765"
  }
}
```

## Notes

- Browser automation targets zipcar.com and may break if Zipcar updates their website structure.
- Patchright is used for stealth browser automation to avoid bot detection.
- A headless Chromium instance is launched on first tool call and reused for the session.

## License

MIT — Strider Labs <hello@striderlabs.ai>

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: end_trip handles active rentals, extend_reservation modifies existing bookings, get_car_details provides vehicle info, get_reservation_history accesses past/future bookings, reserve_car creates new reservations, and search_cars finds available vehicles. The descriptions reinforce these distinct roles, making misselection unlikely.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., end_trip, extend_reservation, get_car_details), using clear action verbs paired with specific nouns. There are no deviations in style or convention, making the set predictable and easy to understand at a glance.

Tool Count5/5

With 6 tools, this server is well-scoped for managing Zipcar rentals, covering key workflows like searching, reserving, extending, ending trips, and accessing details/history. Each tool earns its place without redundancy, and the count is typical for a focused domain like car-sharing services.

Completeness5/5

The tool set provides complete coverage for the Zipcar rental lifecycle: search_cars and get_car_details for discovery, reserve_car and extend_reservation for booking management, end_trip for session closure, and get_reservation_history for tracking. There are no obvious gaps, enabling agents to handle end-to-end tasks without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues