Zipcar MCP Server
# @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
Scored across 6 tools
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.
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.
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.
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.