MCP server for read-only American Airlines AAdvantage account access — direct API calls via session cookies extracted from a Chromium login
Project description
aa-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_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:
aa-mcp-server --extract-session default
Or call thesave_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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aa_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: aa_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 80.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c35bf00655478314c37ee39f48de48b43236ee51b99bb2d3a6abb5376a176ac0
|
|
| MD5 |
ee1f721be059d011e5b1587451b19d56
|
|
| BLAKE2b-256 |
911e32491f0b5399a3ccc78c581e37b86c9999c8bb99905763b62440b9ca9c37
|
Provenance
The following attestation bundles were made for aa_mcp_server-0.1.0.tar.gz:
Publisher:
publish.yml on thehesiod/aa-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aa_mcp_server-0.1.0.tar.gz -
Subject digest:
c35bf00655478314c37ee39f48de48b43236ee51b99bb2d3a6abb5376a176ac0 - Sigstore transparency entry: 1437690789
- Sigstore integration time:
-
Permalink:
thehesiod/aa-mcp@19df20f9c25112b66bfe5bf1e438dbf85a9920c1 -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/thehesiod
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19df20f9c25112b66bfe5bf1e438dbf85a9920c1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file aa_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aa_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b44332fdee7c6c980ca9c17e7e25fa169156e52ab1166688a9431a63f09bfcaa
|
|
| MD5 |
26607ea2757d6d11a8cc09f37d1f56ae
|
|
| BLAKE2b-256 |
486faf02125f621089a63cd4627140e279be71cb0991423f859b268e104472b4
|
Provenance
The following attestation bundles were made for aa_mcp_server-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on thehesiod/aa-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aa_mcp_server-0.1.0-py3-none-any.whl -
Subject digest:
b44332fdee7c6c980ca9c17e7e25fa169156e52ab1166688a9431a63f09bfcaa - Sigstore transparency entry: 1437690800
- Sigstore integration time:
-
Permalink:
thehesiod/aa-mcp@19df20f9c25112b66bfe5bf1e438dbf85a9920c1 -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/thehesiod
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19df20f9c25112b66bfe5bf1e438dbf85a9920c1 -
Trigger Event:
push
-
Statement type: