Skip to main content
Glama
markswendsen-code

@striderlabs/mcp-american

README.md
# @striderlabs/mcp-american

MCP server for American Airlines — let AI agents search flights, manage bookings, check in, retrieve boarding passes, and access AAdvantage rewards on aa.com via Playwright browser automation.

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

## Features

- **Flight Search** — Search AA flights by origin, destination, dates, and cabin class
- **Flight Details** — Get connection info, aircraft type, baggage policy, and fare rules
- **Flight Selection** — Select outbound and return flights into a booking session
- **Seat Maps** — View available seats including Main Cabin Extra, Preferred, and First Class
- **Seat Selection** — Choose specific seats by seat number
- **Baggage** — Add checked bags to a booking
- **Checkout** — Complete bookings with a confirmation gate
- **Reservations** — Look up existing reservations by record locator
- **Modify Trips** — Initiate flight changes on existing bookings
- **Cancellations** — Cancel reservations with a confirmation gate
- **Check-In** — Online check-in starting 24 hours before departure
- **Boarding Passes** — Retrieve digital boarding passes after check-in
- **AAdvantage** — Check miles balance, elite status, and earning milestones
- **Upgrades** — Request upgrades using miles, systemwide certificates, or elite status

## Installation

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

Or run directly with npx:

```bash
npx @striderlabs/mcp-american
```

## Claude Desktop Setup

Add to your `claude_desktop_config.json`:

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

Config file locations:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

## Authentication

This server uses browser automation and stores session cookies locally. To authenticate:

1. Call the `login` tool — it opens aa.com in a browser window
2. Log in manually with your AAdvantage credentials
3. Call `status` to verify and save the session

Sessions are saved to `~/.striderlabs/american/` and reused across invocations. You typically only need to log in once until the session expires.

## Tools

| Tool | Description |
|------|-------------|
| `status` | Check login status and session info |
| `login` | Open aa.com for manual login |
| `logout` | Clear saved session and cookies |
| `search_flights` | Search AA flights by route, date, cabin |
| `get_flight_details` | Get detailed info on a search result |
| `select_flight` | Choose outbound/return flight for booking |
| `get_seat_map` | View available seats and fees |
| `select_seats` | Choose seats by seat number |
| `add_bags` | Add checked baggage |
| `checkout` | Complete booking (requires `confirm: true`) |
| `get_reservation` | Look up reservation by record locator |
| `modify_trip` | Change flights on existing reservation |
| `cancel_trip` | Cancel reservation (requires `confirm: true`) |
| `check_in` | Online check-in (opens 24h before departure) |
| `get_boarding_pass` | Retrieve digital boarding passes |
| `get_aadvantage` | Check miles, elite status, milestones |
| `upgrade_request` | Request upgrade using miles or elite status |

## Example Workflow

```
User: Search for flights from DFW to JFK next Friday

Agent:
1. search_flights { origin: "DFW", destination: "JFK", departureDate: "2025-07-11" }
2. get_flight_details { flightId: "0" }
3. select_flight { outboundFlightId: "0" }
4. get_seat_map {}
5. select_seats { seats: ["14A"] }
6. add_bags { bags: 1 }
7. checkout {}  → preview
8. checkout { confirm: true }  → booking confirmed
```

## Safety Gates

Destructive or financial actions require explicit confirmation:

- **`checkout`** — pass `confirm: true` only after user confirms the purchase
- **`cancel_trip`** — pass `confirm: true` only after user confirms the cancellation

Without `confirm: true`, these tools return a preview instead of taking action.

## Environment Variables

Optional — credentials can be provided via environment variables for automated workflows:

| Variable | Description |
|----------|-------------|
| `AA_USERNAME` | AAdvantage number or email |
| `AA_PASSWORD` | Account password |

When set, the server will attempt auto-login on first use.

## Session Storage

Cookies and session info are stored at:

```
~/.striderlabs/american/
├── cookies.json    # Browser session cookies
└── session.json    # Account info cache
```

To reset authentication: call `logout` or delete this directory.

## Development

```bash
git clone https://github.com/markswendsen-code/mcp-american
cd mcp-american
npm install
npx playwright install chromium
npm run build
npm start
```

## License

MIT — Strider Labs

TDQS

A3.7/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct purposes, such as search_flights, select_flight, and select_seats. The only potential confusion is between status and get_aadvantage, both involving account state, but descriptions effectively separate authentication status from loyalty account details.

Naming Consistency4/5

The majority of tools follow a verb_noun pattern (e.g., search_flights, get_reservation, cancel_trip), but some exceptions like logout, login, checkout, status, and upgrade_request deviate from this pattern. Overall, the naming is consistent in style and readable, though not perfectly uniform.

Tool Count4/5

With 17 tools, the server covers the full travel lifecycle from searching and booking to checking in and managing loyalty status. While slightly above the typical 3-15 range, each tool addresses a distinct need and the count is justified by the broad domain.

Completeness3/5

The tool set provides core coverage for booking, reservation management, and check-in, with useful extras like seat maps and upgrades. However, it lacks explicit tools for adding or managing passengers and for selecting payment methods, which are notable gaps for a comprehensive booking assistant.

Maintenance

ActivityInactive
ResponsivenessNo issues