mcpField
P
pointsyeah

pointsyeah

Local
github.com/pulsemcpMaps & Travel81Updated 8w ago

About pointsyeah

PointsYeah MCP Server searches award flight availability and travel deals through PointsYeah using points and miles. It is aimed at users who want to compare airline loyalty programs and bank transfer options across 20+ programs.

Key features

  1. 01Award flight search using points and miles
  2. 02Bank transfer option comparisons
  3. 03Past search history review
  4. 04Runtime authentication with refresh token

Use cases

  1. 01Checking award flight availability for a route
  2. 02Comparing bank point transfer options for airline programs
  3. 03Reviewing previous award flight searches

MCP support

This is an MCP server that provides tools such as search_flights, get_search_history and set_refresh_token to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-pulsemcp-pointsyeah": {
"command": "npx",
"args": [
"-y",
"pointsyeah-mcp-server"
],
"env": {
"POINTSYEAH_REFRESH_TOKEN": "<POINTSYEAH_REFRESH_TOKEN>",
"ENABLED_TOOLGROUPS": "<ENABLED_TOOLGROUPS>"
}
}
}
}
Run commandnpx -y pointsyeah-mcp-server
Environment variables to set
POINTSYEAH_REFRESH_TOKENSecretAWS Cognito refresh token from PointsYeah for authentication.
ENABLED_TOOLGROUPSComma-separated tool groups to enable.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmpointsyeah-mcp-server0.2.9

Tools

3

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
adultsnumberNoNumber of adult passengers (1-9). Default: 1.
cabinsarrayNoCabin classes to search. Options: "Economy", "Premium Economy", "Business", "First". Default: ["Economy", "Business"]. Multiple cabins can be specified.
arrivalstringYesDestination airport or city code. Examples: "NYC", "LHR", "NRT". Use standard IATA airport codes or city codes.
childrennumberNoNumber of child passengers (0-9). Default: 0.
tripTypeenumNoTrip type: "1" for one-way, "2" for round-trip. Default: "2". Set to "1" if you only need outbound flights.1 | 2
departurestringYesOrigin airport or city code. Examples: "SFO", "NYC", "LAX", "ORD". Use standard IATA airport codes or city codes.
departDatestringYesOutbound departure date in YYYY-MM-DD format. Example: "2026-04-01". Must be a future date.
returnDatestringNoReturn date in YYYY-MM-DD format. Required for round-trip searches. Example: "2026-04-08". Must be after departDate.

Details

From the project README

PointsYeah MCP Server

An MCP server for searching award flights and travel deals via PointsYeah. Search for flight availability using points and miles across 20+ airline loyalty programs and compare transfer options from major bank reward programs.

Features

  • Award Flight Search - Search for flights using points/miles across multiple airline programs
  • Bank Transfer Comparisons - See transfer options from Chase, Amex, Citi, Capital One, Bilt, and Wells Fargo
  • Search History - Review your past award flight searches

Prerequisites

  • A PointsYeah account (free or premium)
  • Node.js 18+

Configuration

Environment Variables
VariableRequiredDescription
POINTSYEAH_REFRESH_TOKENNoAWS Cognito refresh token from PointsYeah (optional — can be set at runtime via set_refresh_token tool)
ENABLED_TOOLGROUPSNoComma-separated tool groups to enable (default: all)
Authentication

All three tools are always visible to the MCP client. Auth-requiring tools (search_flights, get_search_history) return a clear error directing users to set_refresh_token when not authenticated.

  1. Without a token: Calling search_flights or get_search_history returns an error: "Authentication required. Please call the set_refresh_token tool first."
  2. After providing a valid token (via environment variable or the tool): Flight search tools work normally
  3. If the token expires or is revoked: Auth-requiring tools start returning errors again, prompting the user to call set_refresh_token
Obtaining the Refresh Token
  1. Go to PointsYeah Sign In and log in
  2. Open browser DevTools (F12) -> Console
  3. Run:
    document.cookie
      .split('; ')
      .find((c) => c.includes('.refreshToken='))
      .split('=')
      .slice(1)
      .join('=');
    
  4. Either set it as the POINTSYEAH_REFRESH_TOKEN environment variable, or provide it at runtime via the set_refresh_token tool

Note: The refresh token typically expires after 30-90 days. When it expires, the server will switch back to the set_refresh_token tool automatically.

Claude Desktop Configuration

Add to your Claude Desktop configuration file:

{
  "mcpServers": {
    "pointsyeah": {
      "command": "npx",
      "args": ["-y", "pointsyeah-mcp-server"],
      "env": {
        "POINTSYEAH_REFRESH_TOKEN": "your-refresh-token-here"
      }
    }
  }
}
Manual Setup
# Clone the repository
git clone https://github.com/pulsemcp/mcp-servers.git
cd mcp-servers/experimental/pointsyeah

# Install dependencies
npm run install-all

# Set up environment
export POINTSYEAH_REFRESH_TOKEN="your-refresh-token"

# Build and run
npm run build
cd local && npm start

Available Tools

ToolDescriptionRequires Auth
set_refresh_tokenSet the PointsYeah refresh token for authenticationNo
search_flightsSearch for award flights using points/miles across multiple airline programsYes
get_search_historyGet past flight search historyYes

Architecture

This server uses a two-step approach for flight searches:

  1. Explorer Search - HTTP POST to PointsYeah's explorer API with departure/arrival airports, date, and cabin classes. Returns summary results with CloudFront detail URLs.
  2. Detail Fetch - HTTP GET each detail URL to retrieve full route, segment, and transfer information. Up to 10 detail fetches per search.

All API calls use plain HTTP requests with the Cognito ID token for authentication.

Authentication Flow

PointsYeah uses AWS Cognito for authentication. The server supports dynamic authentication:

  1. On startup, if POINTSYEAH_REFRESH_TOKEN is set, validates it via Cognito. If valid, enters authenticated mode. If invalid/expired, enters unauthenticated mode.
  2. All tools are always registered. Auth-requiring tools check authentication state at call time and return errors when not authenticated.
  3. Once authenticated (via env var or set_refresh_token), exchanges the refresh token for access and ID tokens via Cognito's InitiateAuth API.
  4. Refreshes tokens lazily when they're within 5 minutes of expiry.
  5. If a token is revoked mid-session (detected via API error), automatically marks auth state as invalid so subsequent calls prompt re-authentication.

Development

# Install dependencies
npm run install-all

# Build
npm run build

# Run tests
npm test                    # Functional tests
npm run test:integration    # Integration tests (with TestMCPClient)
npm run test:all            # All tests

# Development mode
npm run dev

# Linting (from repo root)
cd ../.. && npm run lint
cd ../.. && npm run format

Limitations

  • Refresh token expiry - The Cognito refresh token expires (typically 30-90 days). Users need to re-login and update the token.
  • Free plan limits - PointsYeah may limit search frequency or result count on free plans.
  • API changes - If PointsYeah changes their explorer API, the search flow may need updating.

Comments

Markdown supported

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.