About aa
aa is an MCP server for read-only access to American Airlines AAdvantage accounts, for account holders checking loyalty and trip details through an MCP-compatible assistant. It calls aa.com JSON APIs using session cookies obtained from a logged-in Chromium browser; it does not support bookings or profile edits.
Key features
- 01Account and loyalty summaries
- 02Mileage and Loyalty Points history
- 03Upcoming trips and reservation details
- 04Flight and trip credit lookup
- 05Alternative flight search for reservations
- 06Session extraction from Chromium
Use cases
- 01Check AAdvantage balance and tier progress
- 02Review mileage transactions and notifications
- 03Look up upcoming trips and travel credits
- 04Compare alternative flights for a reservation
MCP support
The MCP server exposes read-only account, loyalty, trip, credit, and offer tools to MCP clients. It also provides tools for checking authentication and saving a session from Chromium.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEaa-mcp-server
An MCP server that gives Claude (or any MCP-compatible LLM) read-only access to your American Airlines AAdvantage account — mile balance, Loyalty Points progress, transaction history, upcoming trips, travel credits, and partner offers.
This is not a browser-automation wrapper. The server discovers and calls aa.com's underlying JSON APIs directly using session cookies extracted from a Chromium login. All HTTP traffic uses curl_cffi with Chrome TLS impersonation to satisfy aa.com's Akamai Bot Manager.
Tools
| Tool | Endpoint | Returns |
|---|---|---|
get_account_summary | /loyalty/api/member-information | Name, AAdvantage #, mile balance, status, cobranded card, business memberships |
get_loyalty_points_progress | /loyalty/api/progress-qualification | LP YTD, last-year totals, tier thresholds, next-status delta |
get_profile_details | /api/loyalty/.../profile | DOB, partners list, sales city, mile expiration, million-miler stats |
get_mile_activity | /api/loyalty/.../memberActivity | Mile/LP transaction history (date range, paginated, searchable) |
get_upcoming_trips | /loyalty/api/upcoming-trips | Reservations with record locators |
get_reservation_by_locator | /manage-reservation/viewres/api/reservation | Full reservation: segments, passengers, tickets, costs, change/cancel eligibility (requires lead-passenger name) |
search_change_flights | /manage-reservation/reshop/api/reshop/cheapest | Alternative flights for a reservation with a ±6-day price carousel, per-cabin pricing (netPrice = delta vs paid). Accepts origin/destination/date changes; pricing is total for all pax (no per-passenger split) |
get_flight_credits | /api/loyalty/travelCredits/flightCredit/details | Single-passenger ticket credits |
get_trip_credits | /api/loyalty/travelCredits/tripCredit/details | Multi-passenger / itinerary credits |
get_partner_offers | /loyalty/api/partnerOffers | Dashboard partner promotions |
get_notifications | /loyalty/api/notifications | Account notifications |
check_auth_status | — | Saved-session info: AA #, token expiry, cookie count |
save_session_from_browser | CDP | Pulls cookies from a logged-in Chromium and persists them |
Setup
pip install aa-mcp-server
One-time auth
aa.com is fronted by Akamai Bot Manager — you can't log in via headless requests. The flow:
- Launch a real Chromium with a persistent profile and a remote-debugging port:
aa-auth-browser # default account aa-auth-browser personal # named account - Log into aa.com (and complete 2FA if prompted) in the window that opens.
- Copy the cookies into the MCP store:
Or call theaa-mcp-server --extract-session defaultsave_session_from_browserMCP tool from Claude.
The cookies live in ~/.aa-mcp/accounts/<account>/session.json. The chromium profile lives in ~/.aa-mcp/chrome-profiles/<account>/. To refresh after expiry, relaunch aa-auth-browser (the saved profile auto-refreshes the access_token cookie when you visit any aa.com page) and re-run --extract-session.
AA_MCP_CHROMIUM=<path-to-chrome.exe> overrides the auto-discovery if your Chromium is somewhere unusual.
Multi-account
Every tool takes an optional account parameter. Omit it to use the default account.
get_account_summary() # default
get_account_summary(account="spouse")
Running
aa-mcp-server # stdio transport
aa-mcp-server --setup # show account status & setup hints
aa-mcp-server --extract-session NAME # save cookies from running Chromium
Add to your MCP client config (e.g. Claude Desktop):
{
"mcpServers": {
"aa": {
"command": "aa-mcp-server"
}
}
}
Limitations
- Read-only. No booking, no award redemption, no profile edits.
- Cookie expiry. The
access_tokenJWT lives ~45 min; therefresh_tokencookie typically ~30 days. Visiting any aa.com page in the saved Chromium profile silently refreshes both. After a long gap, re-extract. - GraphQL coverage. Only the
GetCustomerpersisted query is wired up. Expanding requires capturing additional sha256Hashes from the browser bundle — easy but a per-feature task. - One region tested. All testing has been on US-locale aa.com. International locales may require different
refererpaths.
License
MIT
mcp-name: io.github.thehesiod/aa
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.