npm package: @striderlabs/mcp-jetblue
Description: MCP server connector for JetBlue Airlines using Playwright browser automation
Author: Strider Labs
Latest version: 1.0.0

# @striderlabs/mcp-jetblue

An MCP (Model Context Protocol) server connector for JetBlue Airlines, built with Playwright browser automation. Enables AI assistants to search flights, manage bookings, check in, and interact with your JetBlue TrueBlue account.

## Installation

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

Or install locally:

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

## Usage with Claude Desktop

Add to your `claude_desktop_config.json`:

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

Or with `npx`:

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

## Tools

### Authentication

#### `jetblue_login`
Log in to your JetBlue TrueBlue account. Required before using account-specific tools.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | TrueBlue account email |
| `password` | string | Yes | TrueBlue account password |

**Example:**
```json
{
  "email": "user@example.com",
  "password": "your-password"
}
```

---

### Flight Search & Booking

#### `jetblue_search_flights`
Search for available JetBlue flights between two airports.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `origin` | string | Yes | Origin airport code (e.g., `JFK`, `BOS`) |
| `destination` | string | Yes | Destination airport code (e.g., `MCO`, `LAX`) |
| `date` | string | Yes | Travel date in MM/DD/YYYY format |
| `passengers` | number | No | Number of passengers (default: 1) |
| `cabin_class` | string | No | `Economy`, `Even More Space`, or `Mint` (default: `Economy`) |

**Example:**
```json
{
  "origin": "JFK",
  "destination": "LAX",
  "date": "04/15/2025",
  "passengers": 2,
  "cabin_class": "Economy"
}
```

---

#### `jetblue_get_flight_details`
Get detailed information about a specific flight from search results.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `flight_id` | string | Yes | Flight ID from search results (e.g., `flight-0`) |

---

#### `jetblue_select_flight`
Select a flight from search results to proceed with booking.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `flight_id` | string | Yes | Flight ID to select |

---

### Seat Selection

#### `jetblue_get_seat_map`
Retrieve the seat map for a flight showing available and occupied seats.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `flight_id` | string | Yes | Flight ID to retrieve seat map for |

**Returns:** List of seats with availability, type (standard, extra-legroom, Mint), row, and column.

---

#### `jetblue_select_seat`
Select a specific seat on a flight.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `flight_id` | string | Yes | Flight ID |
| `seat` | string | Yes | Seat number (e.g., `12A`, `15C`) |

---

### Trip Management

#### `jetblue_get_booking`
Retrieve booking details for a reservation.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `confirmation_code` | string | Yes | 6-character booking confirmation code |

---

#### `jetblue_check_in`
Check in for a flight. Available 24 hours before departure.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `confirmation_code` | string | Yes | Booking confirmation code |

---

#### `jetblue_cancel_booking`
Cancel a flight booking. **This action may be irreversible.**

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `confirmation_code` | string | Yes | Booking confirmation code to cancel |

---

#### `jetblue_get_upcoming_trips`
Get all upcoming trips for the logged-in account. Requires `jetblue_login` first.

No parameters required.

---

### Account & Status

#### `jetblue_get_trueblue_balance`
Get TrueBlue points balance and account information. Requires `jetblue_login` first.

No parameters required.

---

#### `jetblue_get_flight_status`
Get real-time status of a JetBlue flight.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `flight_number` | string | Yes | JetBlue flight number (e.g., `B61234` or `1234`) |
| `date` | string | Yes | Flight date in MM/DD/YYYY format |

**Returns:** Status, gate, terminal, scheduled/estimated departure and arrival times.

---

## How It Works

This MCP server uses [Playwright](https://playwright.dev/) to automate the JetBlue website (`jetblue.com`). It launches a headless Chromium browser, navigates to the appropriate pages, fills forms, and extracts data.

**Important notes:**
- A browser session is maintained across tool calls within the same session
- Login is required before using account-specific tools (`jetblue_get_trueblue_balance`, `jetblue_get_upcoming_trips`, `jetblue_check_in`, `jetblue_cancel_booking`)
- The server scrapes the JetBlue website; changes to the website may affect functionality
- Use responsibly and in accordance with JetBlue's Terms of Service

## Development

```bash
# Clone and install
git clone https://github.com/markswendsen-code/mcp-jetblue
cd mcp-jetblue
npm install
npx playwright install chromium

# Build
npm run build

# Run locally
node dist/index.js
```

## Requirements

- Node.js >= 18.0.0
- Chromium (installed via `npx playwright install chromium`)

## License

MIT