mcpField
F
flightdata

flightdata

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

关于 flightdata

flightdata 是用于搜索 Google Flights 的本地桥接工具,适合旅行规划工具和 Agent。它返回行程详情并支持筛选,结果由 HasData 提供,项目本身不存储票价。

主要功能

  1. 01单程、往返和多城市搜索
  2. 02按价格、经停、航空公司和时间筛选
  3. 03返回航段、票价和排放信息
  4. 04提供 CLI 和 stdio MCP 服务

适用场景

  1. 01按价格或时长比较航班
  2. 02按经停、航空公司或排放筛选
  3. 03获取后续查询所需的行程令牌

MCP 相关

向 MCP 客户端提供只读航班搜索工具,并将调用转发到托管的 HasData Google Flights MCP 服务。不提供预订或支付工具。

配置

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

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

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

安装包
npm@reneturcios/flightdata0.1.0
ocighcr.io/cloudcorprecords/flightdata:0.1.0

工具

1

收录的工具列表 · 更新于 2 天前

参数类型必填说明
glstring否要将搜索范围限制到的国家/地区的两字母国家代码。请提供一个精确的已记录值(共支持 245 个),例如 `ac`、`af`。
hlstring否要用于搜索的两位语言代码。请提供一个准确的文档所列值(共允许 159 个),例如 `af`、`ak`。
bagsnumber否每位乘客的随身行李数量。
typeenum否指定航班类型。选项: - `roundTrip`(默认) - `oneWay` - `multiCity`(需要通过 `multiCityJson` 提供航班详情) 对于往返行程,请使用 `departureToken` 通过单独的请求获取返程航班详情。roundTrip | oneWay | multiCity
stopsenum否限制航班行程中的经停(中转)次数。nonStop | oneStopOrFewer | twoStopsOrFewer
adultsnumber否成人乘客人数(如已指定,则必须 >= 1)。
sortByenum否按价格、出发时间、到达时间等对航班结果排序。topFlights | price | departureTime | arrivalTime | duration | emissions
childrennumber否儿童乘客人数。
currencystring否此参数用于定义返回价格的货币。请提供一个准确的文档值(共允许 71 个),例如 `ALL`、`DZD`。
maxPricenumber否航班搜索的最高价格限制,使用所选货币。
arrivalIdstring是指定到达机场代码(IATA)或地点 kgmid。 - **IATA Code**:3 个大写字母组成的代码(例如,`SFO`、`LHR`)。请在 [IATA](https://www.iata.org/en/publications/directories/code-search) 上搜索。 - **Location kgmid**:以 `/m/` 开头的字符串,可在 Wikidata 的“Freebase ID”下找到(例如,纽约州纽约市对应 `/m/02_286`)。 多个值可用逗号分隔(例如,`JFK,LGA,/m/0hptm`)。
deepSearchboolean否启用深度搜索。返回的结果与浏览器中的 Google Flights 相同,但响应时间更长。默认值为 `false`。
returnDatestring否返程日期,格式为 'yyyy-MM-dd'。当 **type** 为 `roundTrip` 时必填。
showHiddenboolean否指示是否在结果中包含隐藏选项。
departureIdstring是指定出发机场代码(IATA)或地点 kgmid。 - **IATA Code**:3 个大写字母组成的代码(例如,旧金山的 SFO、伦敦希思罗机场的 LHR)。请在 [IATA](https://www.iata.org/en/publications/directories/code-search) 上搜索。 - **Location kgmid**:以 `/m/` 开头的字符串,可在 Wikidata 的“Freebase ID”下找到(例如,纽约州纽约市对应 `/m/02_286`)。 多个值可用逗号分隔(例如,`JFK,LGA,/m/0hptm`)。
maxDurationnumber否航班总时长上限,单位为分钟。
returnTimesstring否设置最多 4 个时间边界(2 个用于出发,2 个用于到达)以筛选返程航班。每个数字表示一个小时的起始时间。 示例: - `6,20` → 出发时间为上午 6:00 至晚上 9:00 - `1,15` → 出发时间为上午 1:00 至下午 4:00 - `7,18,2,21` → 出发时间为上午 7:00 至晚上 9:00,到达时间为上午 2:00 至晚上 10:00
travelClassenum否航班的舱位(经济舱、高端经济舱、商务舱或头等舱)。economy | premiumEconomy | business | first
bookingTokenstring否用于请求所选航班的预订选项。此令牌可在航班结果中找到,且不能与 `departureToken` 一起使用。
infantsOnLapnumber否由成人抱坐的婴儿人数。
outboundDatestring是出发日期,格式为 'yyyy-MM-dd'。
infantsInSeatnumber否占用座位的婴儿人数。
lessEmissionsboolean否优先选择碳排放较低的航班。
multiCityJsonstring否此参数用于指定多城市行程的航班详情。它是一个包含多个航班对象的 JSON 字符串。每个对象必须包含以下字段: - **departureId** – 出发机场代码或地点 KGMID。格式与主 `departureId` 参数相同。 - **arrivalId** – 到达机场代码或地点 KGMID。格式与主 `arrivalId` 参数相同。 - **date** – 航班日期。格式与 `outboundDate` 参数相同。 - **times**(可选)– 航班时间范围。格式与 `outboundTimes` 参数相同。
outboundTimesstring否设置最多 4 个时间边界(2 个用于出发,2 个用于到达)以筛选航班。每个数字表示一个小时的起始时间。 示例: - `6,20` → 出发时间为上午 6:00 至晚上 9:00 - `1,15` → 出发时间为上午 1:00 至下午 4:00 - `7,18,2,21` → 出发时间为上午 7:00 至晚上 9:00,到达时间为上午 2:00 至晚上 10:00
departureTokenstring否用于选择航班并获取往返行程的返程航班,或多城市行程的下一段航班。
excludeAirlinesstring否要从结果中排除的航空公司代码列表,以逗号分隔。请在 [IATA](https://www.iata.org/en/publications/directories/code-search) 上搜索航空公司代码。例如,`UA` 表示 United Airlines。
includeAirlinesstring否仅包含在结果中的航空公司代码列表,以逗号分隔。请在 [IATA](https://www.iata.org/en/publications/directories/code-search) 上搜索航空公司代码。例如,`UA` 表示 United Airlines。 `excludeAirlines` 和 `includeAirlines` 参数不能同时使用。
layoverDurationstring否设置最长中转时长(分钟)以筛选航班。例如,`120, 360` 会筛选中转时间在 2 至 6 小时之间的航班,而 `45, 180` 则允许中转时间为 45 分钟至 3 小时。
excludeConnectionsstring否作为中转机场排除的特定机场列表,以逗号分隔。
includeConnectionsstring否允许作为中转机场的特定机场列表,以逗号分隔。

详细介绍

flightdata

flightdata 是一个小型本地桥接服务,连接托管的 HasData Google Flights MCP 服务,该服务会将 Google Flights 搜索结果作为 JSON 返回。提供 出发地、目的地和出发日期后,它会获取匹配的行程: 每个选项的价格、总时长和中转次数、各航段的 航空公司、航班号、飞机、机场和时间,以及 CO2 排放量;还会提供上游为后续查询所选行程 签发的预订令牌和出发令牌。

搜索范围包括单程、往返和多城市行程。可根据 乘客组合(成人、儿童、占座或不占座的婴儿)、 舱位、随身行李、最高价格、排序方式(价格、 时长、排放量、出发或到达时间)、中转次数限制、 包含或排除的航空公司和中转点、出发和返程时间 范围、中转时长上下限、最长总时长、排放偏好 以及深度搜索模式进行筛选。

该桥接服务不存储自己的票价。它会在本地提供 从实时端点原样捕获的上游服务工具列表,并将 每次工具调用转发到上游,原样返回结果。捕获的 接口仅包含一个只读票价搜索工具:没有预订、 预约、出票或支付工具。

工具

  • hasdata_google_travel_flights_getGoogleFlights — 搜索 Google Flights。必填:departureId (IATA 代码或地点 kgmid;允许使用逗号分隔 多个值)、arrivalId(格式相同)和 outboundDate(yyyy-MM-dd)。可选: returnDate、type(roundTrip / oneWay / multiCity)、multiCityJson、gl、hl、 currency、travelClass(economy / premiumEconomy / business / first)、 showHidden、adults、children、 infantsInSeat、infantsOnLap、sortBy (topFlights / price / departureTime / arrivalTime / duration / emissions)、 stops(nonStop / oneStopOrFewer / twoStopsOrFewer)、excludeAirlines、 includeAirlines、bags、maxPrice、 outboundTimes、returnTimes、lessEmissions、 layoverDuration、includeConnections、 excludeConnections、maxDuration、deepSearch、 departureToken 和 bookingToken。返回 每个行程的价格、时长、中转次数和航段、 排放量以及预订令牌/出发令牌。

配置

  • HASDATA_GOOGLE_FLIGHTS_MCP_URL(可选)— 覆盖上游端点。默认值为 https://mcp.hasdata.com/mcp?apis=google_travel_flights。 (此覆盖钩子是本次重建自行标注的内容。)
  • HASDATA_API_KEY(可选)— 设置后,每个 上游请求都会携带 x-api-key: <key> 标头,使用调用者自己的 HasData API 密钥。未 设置时,不会发送密钥标头。(标头名称和环境 变量名称由原始项目的注册记录确定;从此环境 变量转发密钥是本次重建自行标注的内容——原始 接口是在未提供密钥的情况下捕获的。)
转发机制

首次调用工具时,客户端会与上游建立可流式传输的 HTTP 会话:先发送 JSON-RPC initialize 请求 (protocolVersion 2025-03-26,clientInfo 名称 为 flightdata),再发送 notifications/initialized 通知,随后发送携带 调用者参数(保持不变)的 tools/call 请求。上游 通过 initialize 响应并带有 Mcp-Session-Id 标头时, 该值会随会话中的所有后续请求一同发送;此会话在 进程存续期间重复使用。响应可能是普通 JSON,也 可能是服务器发送的事件;两种格式都会读取。

上游成功结果会原样传递,包括上游设置的任何 isError 标记。失败情况——JSON-RPC 错误、非 2xx 状态、无法读取的响应或无法完成的请求——会以 isError 结果返回,文本以 flightdata error: 开头 (此错误呈现方式是本次重建自行标注的内容)。

命令行

该工具也是一个子命令,接受一个 JSON 参数字符串:

npx @reneturcios/flightdata hasdata_google_travel_flights_getGoogleFlights '{"departureId":"SFO","arrivalId":"LHR","outboundDate":"2026-12-01","type":"oneWay","travelClass":"economy","stops":"nonStop"}'
npx @reneturcios/flightdata --version

退出代码:成功时为 0,结果为 isError 时为 1,用法错误时为 2。

MCP 服务

npx -y @reneturcios/flightdata mcp

MCP 客户端配置:

{
  "mcpServers": {
    "flightdata": {
      "command": "npx",
      "args": ["-y", "@reneturcios/flightdata", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/flightdata
docker run --rm ghcr.io/cloudcorprecords/flightdata --version

容器的默认命令是 mcp,因此第一种形式是一个 stdio MCP 服务;其他参数则会正常传递给命令行。

开发

npm install
npm run build
npm test
npm run dev

测试套件完全使用桩接的 JSON-RPC 上游运行,不会进行实时网络调用。

许可证

MIT — 参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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