mcpField
F
faregrid

faregrid

本地服务
github.com/CloudCorpRecords地图与出行01 周前更新

关于 faregrid

faregrid 是连接托管 FlightPowers MCP 服务的本地桥接程序,可按日期和目的地搜索 Google Flights 实时机票价格。它返回航班详情与历史价格区间,供比较票价;不提供预订或支付功能。

主要功能

  1. 01搜索单程与往返票价
  2. 02按日期范围和多个目的地搜索
  3. 03筛选航空公司、经停与价格
  4. 04返回航班详情及购票链接
  5. 05用历史价格区间评估票价

适用场景

  1. 01比较多个日期的机票价格
  2. 02查找符合经停或航空公司条件的航班
  3. 03判断报价相对历史区间是否偏高

MCP 相关

faregrid 作为 MCP 服务向客户端提供航班搜索工具,并将调用转发至托管 FlightPowers MCP 服务。结果包含供应商购票链接,但不含预订或支付工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-faregrid": {
"command": "npx",
"args": [
"-y",
"@reneturcios/faregrid"
]
}
}
}
启动命令npx -y @reneturcios/faregrid

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/faregrid0.1.0
ocighcr.io/cloudcorprecords/faregrid:0.1.0

工具

2

收录的工具列表 · 更新于 1 周前

参数类型必填说明
limitinteger否合并并排序后要返回的航班数量上限。
sort_bystring否“best”(默认)和“price”均按价格从低到高排序;“duration”按时长从短到长排序。适用于所有结果。
verboseboolean否返回上游针对每个票价发送的所有字段,以及所有已选票价,不限制行数。默认关闭:结果会按请求的 sort_by 返回精选行的精简格式(日期、目的地、航空公司、经停次数、时长、价格、行程长度和预订链接),因为按月和多个目的地进行大范围搜索时,否则会生成数 MB 的 JSON,有些主机甚至无法将其放入对话中。设为 true 时,还会添加到达时间、每段航程的经停次数、原始经停详情,以及 results_returned 之后的所有行;results_total 始终表示结果总数。
currencystring否ISO 货币代码,默认值为 "usd"。
max_priceany否仅返回价格不高于此值的航班。
max_stopsany否每个航班的最大经停次数。0 表示仅限直飞。
seat_typeany否1 经济舱,2 高端经济舱,3 商务舱,4 头等舱。
passengersany否每位旅客对应一个条目,而不是人数:1 表示成人,2 表示儿童(2–11 岁),3 表示抱在腿上的婴儿,4 表示占座婴儿。例如,[1, 1, 2] 表示两位成人和一位儿童。至少一位成人;每位抱在腿上的婴儿都需要一位成人陪同;最多 9 人。省略时表示一位成人。也接受人数列表 [成人数, 儿童数, 婴儿数],例如 [2, 1, 0],或表示两位成人的简单列表 [2],并会在搜索前转换为代码;如果列表作为代码也有效,则按代码进行搜索。
to_airportany是目的地机场。单个 IATA 代码("BCN")、以逗号分隔的多个代码("BCN,LIS,ATH")或列表(["BCN","LIS","ATH"])均可——所有格式都会被接受,并在同一次搜索中比较各目的地。
from_airportstring是出发地 IATA 代码,例如 "TLV"。每次搜索只能指定一个出发地;指定第二个出发地会被拒绝,而不会进行搜索。
max_searchesany否本次调用可执行的搜索次数上限或下限。未设置时采用正常行为:使用调用方自己的密钥时,只要请求合理,上限就足以覆盖请求(整个月份搭配三种行程长度为 93 种组合;整个月份 × 3 晚 × 3 个目的地为 279 种组合;两者都会完整运行),超出上限的部分会在整个范围内均匀抽样,而非提前截断。较低的值会减少大范围搜索的搜索次数;较高的值(硬性上限为 300)则可覆盖更大的网格。
use_fallbackany否默认:未设置。将搜索切换到另一个独立的航班数据源,而不是通常读取 Google Flights 页面。未设置时,搜索重试失败后也会自动切换到该数据源一次。true 会在每次尝试中强制使用该数据源,但速度慢得多,且可能超时。false 会完全禁用该数据源,包括自动重试。
airline_codesany否将搜索结果限制为这些航空公司代码,例如 ["LY"]。
departure_dateany否单个出发日期,"YYYY-MM-DD"。
arrival_time_maxany否最晚抵达小时,0–23。
arrival_time_minany否最早抵达小时,0–23。
departure_date_toany否出发日期范围的最后一天。
departure_time_maxany否最晚出发小时,0–23。
departure_time_minany否最早出发小时,0–23。
departure_date_fromany否出发日期范围的起始日期。
exclude_airline_codesany否从结果中排除的航空公司代码。

详细介绍

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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。