关于 faregrid
faregrid 是连接托管 FlightPowers MCP 服务的本地桥接程序,可按日期和目的地搜索 Google Flights 实时机票价格。它返回航班详情与历史价格区间,供比较票价;不提供预订或支付功能。
主要功能
- 01搜索单程与往返票价
- 02按日期范围和多个目的地搜索
- 03筛选航空公司、经停与价格
- 04返回航班详情及购票链接
- 05用历史价格区间评估票价
适用场景
- 01比较多个日期的机票价格
- 02查找符合经停或航空公司条件的航班
- 03判断报价相对历史区间是否偏高
MCP 相关
faregrid 作为 MCP 服务向客户端提供航班搜索工具,并将调用转发至托管 FlightPowers MCP 服务。结果包含供应商购票链接,但不含预订或支付工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 合并并排序后要返回的航班数量上限。 |
| sort_by | string | 否 | “best”(默认)和“price”均按价格从低到高排序;“duration”按时长从短到长排序。适用于所有结果。 |
| verbose | boolean | 否 | 返回上游针对每个票价发送的所有字段,以及所有已选票价,不限制行数。默认关闭:结果会按请求的 sort_by 返回精选行的精简格式(日期、目的地、航空公司、经停次数、时长、价格、行程长度和预订链接),因为按月和多个目的地进行大范围搜索时,否则会生成数 MB 的 JSON,有些主机甚至无法将其放入对话中。设为 true 时,还会添加到达时间、每段航程的经停次数、原始经停详情,以及 results_returned 之后的所有行;results_total 始终表示结果总数。 |
| currency | string | 否 | ISO 货币代码,默认值为 "usd"。 |
| max_price | any | 否 | 仅返回价格不高于此值的航班。 |
| max_stops | any | 否 | 每个航班的最大经停次数。0 表示仅限直飞。 |
| seat_type | any | 否 | 1 经济舱,2 高端经济舱,3 商务舱,4 头等舱。 |
| passengers | any | 否 | 每位旅客对应一个条目,而不是人数:1 表示成人,2 表示儿童(2–11 岁),3 表示抱在腿上的婴儿,4 表示占座婴儿。例如,[1, 1, 2] 表示两位成人和一位儿童。至少一位成人;每位抱在腿上的婴儿都需要一位成人陪同;最多 9 人。省略时表示一位成人。也接受人数列表 [成人数, 儿童数, 婴儿数],例如 [2, 1, 0],或表示两位成人的简单列表 [2],并会在搜索前转换为代码;如果列表作为代码也有效,则按代码进行搜索。 |
| to_airport | any | 是 | 目的地机场。单个 IATA 代码("BCN")、以逗号分隔的多个代码("BCN,LIS,ATH")或列表(["BCN","LIS","ATH"])均可——所有格式都会被接受,并在同一次搜索中比较各目的地。 |
| from_airport | string | 是 | 出发地 IATA 代码,例如 "TLV"。每次搜索只能指定一个出发地;指定第二个出发地会被拒绝,而不会进行搜索。 |
| max_searches | any | 否 | 本次调用可执行的搜索次数上限或下限。未设置时采用正常行为:使用调用方自己的密钥时,只要请求合理,上限就足以覆盖请求(整个月份搭配三种行程长度为 93 种组合;整个月份 × 3 晚 × 3 个目的地为 279 种组合;两者都会完整运行),超出上限的部分会在整个范围内均匀抽样,而非提前截断。较低的值会减少大范围搜索的搜索次数;较高的值(硬性上限为 300)则可覆盖更大的网格。 |
| use_fallback | any | 否 | 默认:未设置。将搜索切换到另一个独立的航班数据源,而不是通常读取 Google Flights 页面。未设置时,搜索重试失败后也会自动切换到该数据源一次。true 会在每次尝试中强制使用该数据源,但速度慢得多,且可能超时。false 会完全禁用该数据源,包括自动重试。 |
| airline_codes | any | 否 | 将搜索结果限制为这些航空公司代码,例如 ["LY"]。 |
| departure_date | any | 否 | 单个出发日期,"YYYY-MM-DD"。 |
| arrival_time_max | any | 否 | 最晚抵达小时,0–23。 |
| arrival_time_min | any | 否 | 最早抵达小时,0–23。 |
| departure_date_to | any | 否 | 出发日期范围的最后一天。 |
| departure_time_max | any | 否 | 最晚出发小时,0–23。 |
| departure_time_min | any | 否 | 最早出发小时,0–23。 |
| departure_date_from | any | 否 | 出发日期范围的起始日期。 |
| exclude_airline_codes | any | 否 | 从结果中排除的航空公司代码。 |
详细介绍
faregrid
faregrid 是一个小型本地桥接程序,连接托管的 FlightPowers MCP 服务,该服务从 Google Flights 读取实时报价。 提供出发地和目的地,以及单个日期或整个日期范围, 它便会返回票价、航空公司、飞行时长、中转次数、 每个航班的可预订链接,以及历史价格区间,用于显示该航线的票价是 异常便宜还是昂贵。
此桥接程序不保存自己的票价数据。它会在本地提供上游服务的工具列表,
内容与从实时端点捕获的完全一致,并将每次工具调用转发到上游,
原样返回结果。捕获到的接口仅支持搜索:结果包含指向供应商自有预订流程的
buy_link,其中没有预订、购买或支付工具。
工具
search_oneway_flights— 单程票价。必填:from_airport和to_airport(IATA 代码;目的地可以是多个代码,如"BCN,LIS,ATH"或["BCN","LIS","ATH"])。可选:departure_date,或通过departure_date_from/departure_date_to指定日期范围、max_stops、airline_codes、exclude_airline_codes、出发和到达时段、currency(默认"usd")、max_price、seat_type、passengers、sort_by(默认"best")、limit(默认 10)、max_searches、use_fallback和verbose。一次调用即可搜索日期范围内的每种日期/目的地组合。search_roundtrip_flights— 往返票价,按往返航段配对计价,而非作为两张单程票分别计价。 必填:from_airport和to_airport。可选:与单程工具相同的出发日期或日期范围字段,以及return_date或nights(行程天数,或类似[5, 6, 7]的列表)、max_departure_stops、max_return_stops、departure_airline_codes、return_airline_codes、returns_per_outbound,以及共享字段currency、max_price、seat_type、passengers、sort_by、limit、max_searches、use_fallback和verbose。
票价会在几分钟内过期,因此当前价格始终来自新的搜索,而非先前的结果。
配置
FLIGHTPOWERS_MCP_URL(可选)——覆盖上游端点。默认值为https://flights.flightpowers.com/mcp。(此覆盖钩子是本次重建自行标注的还原。)FLIGHTPOWERS_API_KEY(可选)——设置后,每个上游请求都会携带x-rapidapi-key: <key>标头,使用调用者自己的 Google Flights Live API RapidAPI 密钥。未设置时,不会发送密钥标头,上游会应用其免费登录额度。绝不会发送Authorization标头。(此转发方式也是自行标注的还原;原始接口是在无密钥状态下捕获的。)
转发机制
首次调用工具时,客户端会与上游建立可流式传输的
HTTP 会话:先发送 JSON-RPC initialize 请求(protocolVersion 2025-03-26,clientInfo name faregrid),再发送 notifications/initialized
通知,然后发送携带调用者参数且不作更改的 tools/call 请求。上游在 initialize 响应中返回 Mcp-Session-Id 标头时,该值会随会话的每个后续请求发送;此会话会在进程存续期间重复使用。回复可能是普通 JSON,也可能是服务器发送事件;两种格式都会读取。
成功的上游结果会原样传递,包括上游设置的任何 isError 标志。
失败情况——JSON-RPC 错误、非 2xx 状态、无法读取的响应,或无法完成的请求——都会作为 isError 结果返回,其文本以 faregrid error: 开头(此错误呈现方式是本次重建自行标注的还原)。
CLI
每个工具也可以作为子命令使用,并接受一个 JSON 参数字符串:
npx @reneturcios/faregrid search_oneway_flights '{"from_airport":"TLV","to_airport":"BCN","departure_date":"2026-11-10"}'
npx @reneturcios/faregrid search_roundtrip_flights '{"from_airport":"TLV","to_airport":"BCN,LIS","departure_date_from":"2026-11-01","departure_date_to":"2026-11-07","nights":[3,4]}'
npx @reneturcios/faregrid --version
退出代码:成功时为 0,结果带有 isError 时为 1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/faregrid mcp
MCP 客户端配置:
{
"mcpServers": {
"faregrid": {
"command": "npx",
"args": ["-y", "@reneturcios/faregrid", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/faregrid
docker run --rm ghcr.io/cloudcorprecords/faregrid --version
容器的默认命令是 mcp,因此第一种形式是 stdio MCP 服务;其他参数则会正常传递给命令行工具。
开发
npm install
npm run build
npm test
npm run dev
测试套件完全通过模拟的 JSON-RPC 上游运行,不会发起实时网络调用。
许可证
MIT — 请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。