关于 pointsyeah
PointsYeah MCP 服务用于通过 PointsYeah 搜索积分或里程兑换机票及旅行优惠。它面向希望比较积分兑换航班和银行转积分选项的用户,覆盖 20 多个航空公司常旅客计划。
主要功能
- 01使用积分或里程搜索兑换机票
- 02比较主要银行积分转换选项
- 03查看过往搜索历史
- 04基于 refresh token 的身份验证
适用场景
- 01查找使用积分兑换的航班可用性
- 02比较银行积分转入不同航空计划的选项
- 03回顾以往的兑换机票搜索记录
MCP 相关
该项目是 MCP 服务,向 MCP 客户端提供 search_flights、get_search_history 和 set_refresh_token 等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| adults | number | 否 | 成人乘客人数(1-9)。默认值:1。 |
| cabins | array | 否 | 要搜索的客舱等级。选项:"Economy"、"Premium Economy"、"Business"、"First"。默认值:["Economy", "Business"]。可指定多个客舱等级。 |
| arrival | string | 是 | 目的地机场或城市代码。示例:"NYC"、"LHR"、"NRT"。请使用标准 IATA 机场代码或城市代码。 |
| children | number | 否 | 儿童乘客人数(0-9)。默认值:0。 |
| tripType | enum | 否 | 行程类型:单程为 "1",往返为 "2"。默认值:"2"。仅需去程航班时设置为 "1"。1 | 2 |
| departure | string | 是 | 出发机场或城市代码。示例:“SFO”、“NYC”、“LAX”、“ORD”。使用标准 IATA 机场代码或城市代码。 |
| departDate | string | 是 | 出发日期,格式为 YYYY-MM-DD。示例:“2026-04-01”。必须是未来日期。 |
| returnDate | string | 否 | 返程日期,格式为 YYYY-MM-DD。往返搜索时必填。示例:“2026-04-08”。必须晚于 departDate。 |
详细介绍
PointsYeah MCP 服务
一个用于通过 PointsYeah 搜索奖励机票和旅行优惠的 MCP 服务。搜索 20 多个航空公司忠诚度计划中的积分和里程航班可订情况,并比较各大银行奖励计划的转点选项。
功能
- 奖励机票搜索 - 使用多个航空公司计划中的积分/里程搜索航班
- 银行转点比较 - 查看 Chase、Amex、Citi、Capital One、Bilt 和 Wells Fargo 的转点选项
- 搜索历史 - 查看过去的奖励机票搜索记录
前提条件
- PointsYeah 账户(免费或高级版)
- Node.js 18+
配置
环境变量
| 变量 | 必填 | 说明 |
|---|---|---|
POINTSYEAH_REFRESH_TOKEN | 否 | 来自 PointsYeah 的 AWS Cognito 刷新令牌(可选;也可在运行时通过 set_refresh_token 工具设置) |
ENABLED_TOOLGROUPS | 否 | 要启用的工具组,以逗号分隔(默认:全部) |
身份验证
这三个工具始终对 MCP 客户端可见。需要身份验证的工具(search_flights、get_search_history)在未通过身份验证时,会返回明确的错误提示,引导用户使用 set_refresh_token。
- 未提供令牌时:调用
search_flights或get_search_history会返回错误:“需要身份验证。请先调用 set_refresh_token 工具。” - 提供有效令牌后(通过环境变量或工具提供):航班搜索工具即可正常使用
- 令牌过期或被撤销时:需要身份验证的工具会再次开始返回错误,提示用户调用
set_refresh_token
获取刷新令牌
- 前往 PointsYeah 登录页面 并登录
- 打开浏览器开发者工具(F12)-> 控制台
- 运行:
document.cookie .split('; ') .find((c) => c.includes('.refreshToken=')) .split('=') .slice(1) .join('='); - 将其设置为
POINTSYEAH_REFRESH_TOKEN环境变量,或在运行时通过set_refresh_token工具提供
注意: 刷新令牌通常会在 30-90 天后过期。令牌过期后,服务会自动切换回使用
set_refresh_token工具。
Claude Desktop 配置
将以下内容添加到 Claude Desktop 配置文件中:
{
"mcpServers": {
"pointsyeah": {
"command": "npx",
"args": ["-y", "pointsyeah-mcp-server"],
"env": {
"POINTSYEAH_REFRESH_TOKEN": "your-refresh-token-here"
}
}
}
}
手动设置
# 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
可用工具
| 工具 | 说明 | 需要身份验证 |
|---|---|---|
set_refresh_token | 设置用于身份验证的 PointsYeah 刷新令牌 | 否 |
search_flights | 使用多个航空公司计划中的积分/里程搜索奖励机票 | 是 |
get_search_history | 获取过去的航班搜索记录 | 是 |
架构
此服务使用两步流程搜索航班:
- 探索搜索 - 向 PointsYeah 的 explorer API 发送 HTTP POST 请求,提供出发/到达机场、日期和客舱等级。返回包含 CloudFront 详情 URL 的摘要结果。
- 获取详情 - 对每个详情 URL 发送 HTTP GET 请求,以获取完整的航线、航段和转点信息。每次搜索最多获取 10 条详情。
所有 API 调用均使用普通 HTTP 请求,并通过 Cognito ID 令牌进行身份验证。
身份验证流程
PointsYeah 使用 AWS Cognito 进行身份验证。服务支持动态身份验证:
- 启动时,如果设置了
POINTSYEAH_REFRESH_TOKEN,则通过 Cognito 验证该令牌。若有效,则进入已验证模式;若无效或已过期,则进入未验证模式。 - 始终注册所有工具。需要身份验证的工具会在调用时检查身份验证状态,未通过身份验证时返回错误。
- 完成身份验证后(通过环境变量或
set_refresh_token),通过 Cognito 的InitiateAuthAPI 将刷新令牌换取访问令牌和 ID 令牌。 - 当令牌距离过期时间不足 5 分钟时,按需刷新令牌。
- 如果会话期间令牌被撤销(通过 API 错误检测),则自动将身份验证状态标记为无效,以便后续调用提示用户重新进行身份验证。
开发
# 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
限制
- 刷新令牌过期 - Cognito 刷新令牌会过期(通常为 30-90 天)。用户需要重新登录并更新令牌。
- 免费套餐限制 - PointsYeah 可能会限制免费套餐的搜索频率或结果数量。
- API 变更 - 如果 PointsYeah 更改了其 explorer API,可能需要更新搜索流程。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。