Skip to main content
Glama
kevin0195

PointsYeah MCP Server

by kevin0195

PointsYeah MCP Server (Python)

A Python MCP server that wraps PointsYeah for award travel search — rebuilt from the original TypeScript implementation with additional tools.


How it works

PointsYeah has no public API. Their search page encrypts parameters client-side before sending them to api2.pointsyeah.com. This server handles that by:

  1. Auth — Exchanges your Cognito refresh token (grabbed from the browser once) for short-lived access + ID tokens via AWS Cognito.

  2. Search task — Launches a headless Playwright browser, injects your Cognito session cookies, navigates to the PointsYeah search URL, and intercepts the create_task API response to get a task_id.

  3. Polling — Calls api2.pointsyeah.com/flight/search/fetch_result directly (plain HTTPS) until status == "done", accumulating results in batches.


Related MCP server: Google Flights MCP Server

Tools

Tool

Auth needed

Description

set_refresh_token

Authenticate by providing your Cognito refresh token

search_flights

Live award flight search across 20+ programs

get_search_history

Your past PointsYeah searches

compare_programs_for_route

Ranked points-cost table across all programs for a route

estimate_points_value

Estimate USD value of a points balance (offline CPP tables)

calculate_cpp_breakeven

Is a specific redemption worth it? (offline)

get_server_status

Server config and auth status


Installation

pip install mcp httpx playwright
python -m playwright install chromium

Python 3.10+ required.


Getting your refresh token

  1. Go to https://www.pointsyeah.com/landing?route=signIn and log in

  2. Open DevTools (F12) → Console tab

  3. Paste and run:

    document.cookie.split('; ').find(c => c.includes('.refreshToken=')).split('=').slice(1).join('=')
  4. Copy the long string output — that's your refresh token.


Configuration

Claude Desktop

Add to ~/.claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "pointsyeah": {
      "command": "python",
      "args": ["/absolute/path/to/pointsyeah_mcp/server.py"],
      "env": {
        "POINTSYEAH_REFRESH_TOKEN": "your_refresh_token_here"
      }
    }
  }
}

You can also skip POINTSYEAH_REFRESH_TOKEN and call set_refresh_token in chat.

Claude Code

cd pointsyeah_mcp
python server.py

Example prompts

Find me business class award flights from JFK to Tokyo on October 1st, one-way.

Show me economy award options from SFO to London for 2 adults, returning Oct 15.

Compare all programs for LAX to Paris business class on November 10.

How much are my 80,000 Chase UR points worth if I use them for flights?

Is redeeming 60,000 United miles for a $900 ticket a good deal?

Show my past search history.

Files

pointsyeah_mcp/
├── server.py      # MCP server + all tool definitions
├── auth.py        # Cognito token refresh
├── search.py      # Playwright task creation + result polling
├── state.py       # Server state (refresh token, cached tokens)
├── formatting.py  # Result formatters
└── README.md

Notes

  • Searches take 30–90 seconds — PointsYeah queries 20+ airline programs in real time.

  • Refresh tokens expire periodically. When one expires, repeat the browser step to get a new one.

  • estimate_points_value and calculate_cpp_breakeven work fully offline — no token needed.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kevin0195/pointsyeahMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server