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

MCP server for Delta Air Lines — let AI agents search flights, select seats, manage bookings, check in, get boarding passes, and check SkyMiles balance via browser automation.

Built by [Strider Labs](https://striderlabs.ai).

## Features

- **17 tools** covering the full Delta booking and travel management workflow
- **Playwright browser automation** with stealth patches to avoid bot detection
- **Session persistence** via cookies at `~/.striderlabs/delta/cookies.json`
- **Human-like behavior** — random delays, realistic user agent, locale/timezone spoofing
- **SkyMiles integration** — check balance, Medallion status, and recent activity
- **Confirmation gates** for checkout to prevent accidental bookings
- **JSON responses** for easy parsing by AI agents

## Tools

| Tool | Description |
|------|-------------|
| `status` | Check Delta login status and session info |
| `login` | Initiate Delta SkyMiles login (opens sign-in page) |
| `logout` | Clear saved session and cookies |
| `search_flights` | Search Delta flights by origin, destination, dates, and passengers |
| `get_flight_details` | Get detailed info about a flight (aircraft, layovers, baggage policy) |
| `select_flight` | Select outbound/return flights to begin booking |
| `get_seat_map` | View aircraft seat map with availability and pricing |
| `select_seats` | Choose specific seats for passengers |
| `add_bags` | Add checked baggage to your booking |
| `get_trip_extras` | View upgrades, Wi-Fi passes, priority boarding, and other add-ons |
| `checkout` | Complete the flight purchase (requires `confirm: true`) |
| `get_booking` | Retrieve existing booking by confirmation number |
| `check_in` | Online check-in for upcoming flights (opens 24h before departure) |
| `get_boarding_pass` | Get digital boarding pass for checked-in flights |
| `get_flight_status` | Real-time flight status, gate, and delay information |
| `get_skymiles` | Check SkyMiles balance, Medallion tier, and recent activity |
| `manage_booking` | Modify bookings — view, cancel, change flights, upgrade, or add bags |

## Installation

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

## Claude Desktop Integration

Add to your `claude_desktop_config.json`:

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

Or with `npx`:

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

## Authentication

Some tools (SkyMiles balance, booking management, check-in) require a Delta SkyMiles account. The server persists your session cookies at `~/.striderlabs/delta/cookies.json`.

**Login flow:**

1. Ask the AI agent to run `login`
2. Open the returned URL in your browser
3. Log in to your Delta SkyMiles account
4. Run `status` to verify the session was saved

Flight search and flight status work without authentication.

## Example Workflows

### Book a Flight

```
1. search_flights(origin="ATL", destination="LAX", departureDate="2025-07-15")
2. get_flight_details(flightId="0")
3. select_flight(outboundFlightId="0")
4. get_seat_map()
5. select_seats(seats=["24A"])
6. add_bags(bags=1)
7. checkout()              ← returns preview
8. checkout(confirm=true)  ← completes purchase (needs explicit user confirmation)
```

### Check In

```
1. check_in(confirmationNumber="ABC123", lastName="Smith")
2. get_boarding_pass(confirmationNumber="ABC123", lastName="Smith")
```

### Monitor a Flight

```
1. get_flight_status(flightNumber="DL 123")
```

### Manage SkyMiles

```
1. login()
2. get_skymiles()
```

## Safety

The `checkout` tool requires `confirm: true` to actually complete a purchase. Without it, the tool returns a preview of the booking details. **Never set `confirm: true` without explicit user confirmation.**

The `manage_booking` cancel action will prompt you to confirm on the Delta website before any cancellation is finalized.

## Session Storage

Cookies and session info are stored at:
- `~/.striderlabs/delta/cookies.json`
- `~/.striderlabs/delta/session.json`

## Environment Variables

No environment variables are required. Credentials are managed via the browser session stored in `~/.striderlabs/delta/`.

## Development

```bash
git clone https://github.com/markswendsen-code/mcp-delta
cd mcp-delta
npm install
npm run build
node dist/index.js
```

## License

MIT — © Strider Labs

TDQS

A3.8/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have distinct purposes with clear boundaries (e.g., search_flights vs. select_flight vs. get_flight_details). However, some overlap exists: manage_booking includes 'add baggage' functionality, which could be confused with the dedicated add_bags tool, and get_booking vs. manage_booking might cause minor confusion about which to use for viewing details.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout (e.g., search_flights, get_booking, add_bags, select_seats). All tools use snake_case with clear, descriptive verbs, making the set predictable and easy to understand.

Tool Count5/5

With 17 tools, the count is well-suited for a comprehensive airline operations server. It covers the full booking lifecycle (search, select, checkout), management (get_booking, manage_booking), check-in (check_in, get_boarding_pass), and account features (login, get_skymiles), without feeling bloated or sparse.

Completeness5/5

The toolset provides complete coverage for Delta Air Lines operations: flight search and booking (search_flights, select_flight, checkout), booking management (get_booking, manage_booking), check-in and boarding (check_in, get_boarding_pass, get_seat_map, select_seats), flight details and status (get_flight_details, get_flight_status), account management (login, logout, status, get_skymiles), and extras (add_bags, get_trip_extras). No obvious gaps exist for core airline workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues