mcpField
H
HasData Google Flights

HasData Google Flights

远程服务
hasdata.com地图与出行6今天更新

关于 HasData Google Flights

HasData Google Flights 是托管式 MCP 服务,为 MCP 客户端提供 Google Flights 航班搜索。它以结构化 JSON 返回票价、航段、碳排放和价格历史,并支持单程、往返及多城市行程。

主要功能

  1. 01搜索单程、往返和多城市航班
  2. 02返回票价与航班航段信息
  3. 03提供碳排放数据
  4. 04提供价格区间与历史
  5. 05按舱位、经停和价格筛选

适用场景

  1. 01比较指定路线和日期的航班
  2. 02筛选低价或较低排放的行程
  3. 03查看票价是否处于常见区间
  4. 04获取往返行程的返程选项

MCP 相关

托管式远程 MCP 服务通过一个只读工具提供 Google Flights 查询,并返回结构化数据。服务还提供一个航班比较提示词和用于查询参数选项的资源。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.hasdata.com/mcp?apis=google_travel_flights
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.hasdata.com/mcp?apis=google_travel_flights需要授权
安装包
npm@hasdata/google-flights-mcp1.0.7
pypihasdata-google-flights-mcp1.0.7

工具

2
参数类型必填说明
petsnumber否宠物数量。
neLatnumber否地图边界框东北角的纬度。提供全部四个边界框坐标后,将在框内搜索房源,而不是按位置搜索。
neLngnumber否地图边界框东北角的经度。
swLatnumber否地图边界框西南角的纬度。
swLngnumber否地图边界框西南角的经度。
adultsnumber否成人数量。
checkInstring是房源的入住日期。
infantsnumber否婴幼儿数量。
checkOutstring否房源的退房日期。
childrennumber否子女数量。
locationstring否用于搜索房源的地点。除非提供完整地图边界框(neLat、neLng、swLat、swLng),否则必填。
nextPageTokenstring否用于获取下一页结果的令牌。

详细介绍

Google Flights MCP 服务

一个托管式模型上下文协议(MCP)服务,为 Claude、Cursor、Windsurf 及任何其他 MCP 客户端提供一个 Google Flights 工具。搜索单程、往返和多城市行程,获取票价、航段、碳排放和价格历史,所有结果均为结构化 JSON;无需 Google 账号,也无需设法绕过已停用的旅行 API。

每月赠送 1,000 个免费额度,无需绑定银行卡,约可搜索 66 次航班。

https://mcp.hasdata.com/mcp?apis=google_travel_flights

Glama 评分 工具契约 MCP 工具

目录

准备事项

你需要一个 MCP 客户端,以及从控制面板获取的 HasData API 密钥。注册免费,无需绑定银行卡;免费套餐按每次调用 15 个额度计算,每月约可调用 66 次。这是一个远程服务,因此最简单的接入方式是使用 URL 和 x-api-key 标头,无需运行容器,也无需在任何环节使用 Google 账号。仅支持 stdio 的客户端可通过轻量启动器连接该服务;启动器已发布到 npm,包名为 @hasdata/google-flights-mcp,也发布到 PyPI,包名为 hasdata-google-flights-mcp,如下所示。

快速开始

所有客户端使用相同的服务 URL。我们已在 Claude Code 和 Claude Desktop 中进行实际测试。其他配置块则遵循各客户端针对远程服务所记录的格式。

字段值
URLhttps://mcp.hasdata.com/mcp?apis=google_travel_flights
传输方式HTTP,可流式传输
认证标头x-api-key: HASDATA_API_KEY

支持 OAuth 的客户端可以将相同的 URL 添加为连接器,然后登录,无需将密钥写入配置文件。

Claude Code
claude mcp add --transport http google-flights "https://mcp.hasdata.com/mcp?apis=google_travel_flights" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop

依次选择 Settings、Connectors、Add custom connector,然后粘贴 https://mcp.hasdata.com/mcp?apis=google_travel_flights 并登录。

如果使用配置文件,Claude Desktop 只会加载本地(stdio)服务,因此需要通过 stdio 启动器连接远程服务。@hasdata/google-flights-mcp 包就是这个启动器,它会从环境变量读取密钥。将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "google-flights": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-flights-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

如果使用 Python 而非 Node,可以将启动器替换为 PyPI 包,uvx 无需手动安装即可运行该包:

{
  "mcpServers": {
    "google-flights": {
      "command": "uvx",
      "args": ["hasdata-google-flights-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}
Cursor

适用于所有项目的 ~/.cursor/mcp.json,或仅适用于一个项目的 .cursor/mcp.json:

{
  "mcpServers": {
    "google-flights": {
      "url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Windsurf

~/.codeium/windsurf/mcp_config.json。Windsurf 使用的字段名是 serverUrl,而不是 url:

{
  "mcpServers": {
    "google-flights": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=google_travel_flights",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code

工作区中的 .vscode/mcp.json:

{
  "servers": {
    "google-flights": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

示例提示词

这些是提示词,不是代码。粘贴一条提示词,Agent 就会自行选择工具。每条提示词都注明了所需调用次数,因为每次成功调用会花费 15 个积分。

查找 9 月 15 日从 JFK 飞往伦敦希思罗机场的单程航班,按价格排序,并列出最便宜的三班,包括航空公司和碳排放估算。

一次调用,15 个积分。票价、航段和排放量会一并返回。

相同航线,但只要直飞航班,选择商务舱,并告诉我哪个选项的排放量最低。

一次调用,15 个积分。舱位和经停次数都是单次请求中的筛选条件。

考虑到历史价格,现在 JFK 到 LHR 的票价是 295 美元,这个价格怎么样?

一次调用,15 个积分。响应中的 priceInsights 会提供典型价格范围和价格水平。

JFK 到 LHR 往返,9 月 15 日出发,9 月 22 日返回,选择最低价。

两次调用,30 个积分。Google 会先返回去程选项,然后根据你选择的选项,通过第二次调用查询返程航段。

往返行程按设计需要两次调用。第一次会返回去程行程选项,每个选项都包含一个 departureToken;传回该令牌即可获取相匹配的返程航班。单程查询和价格查询则各需一次调用。

工具

工具返回内容
hasdata_google_travel_flights_getGoogleFlights每个行程的价格、货币、总时长、经停次数、包含航空公司、航班号、飞机、出发/到达机场及时间的航段、CO2 排放量,以及……每次调用 15 个积分

这是一个只读工具。以下示例摘自一次真实调用,但票价会不断变化。请将其视为数据结构示例。工具名称链接到其端点参考文档,其中包含完整的参数列表。

示例是有效载荷,而非完整响应。tools/call 结果包含一个文本块,该文本本身是一个 JSON,其中包含 url、status、text 和 json,抓取的数据位于 json 下。从原始 JSON-RPC 响应中,路径为 result.content[0].text,解析后再取 .json。聊天客户端会替你解包,而直接与端点交互的代码不会。

获取 Google Flights 结果

hasdata_google_travel_flights_getGoogleFlights

指定航线和日期的行程,包含票价、航段、排放量和价格历史记录。

参数类型必填说明
departureIdstring是IATA 代码,例如 JFK,或位置 kgmid,例如 /m/02_286。多个机场以逗号分隔
arrivalIdstring是格式与 departureId 相同
outboundDatestring是YYYY-MM-DD
typestring默认为 roundTrip,也可以是 oneWay,或搭配 multiCityJson 使用 multiCity
returnDatestring当 type 为 roundTrip 时必填
travelClassstringeconomy、premiumEconomy、business 或 first
stopsstringnonStop、oneStopOrFewer 或 twoStopsOrFewer
sortBystring默认为 topFlights,还可以是 price、duration、emissions、departureTime、arrivalTime
adults / children / infantsInSeat / infantsOnLapnumber乘客构成
maxPrice / maxDuration / bagsnumber上限和随身行李数量
includeAirlines / excludeAirlinesstring以逗号分隔的 IATA 航空公司代码,二者只能选其一
departureTokenstring选择一个去程选项,并获取其返程或下一航段
bookingTokenstring获取所选行程的预订选项
currency / gl / hlstring搜索所用的货币、国家/地区和语言
deepSearchboolean匹配浏览器中 Google 显示的结果,但返回速度较慢

参考文档还介绍了 includeConnections、excludeConnections、layoverDuration、outboundTimes、returnTimes、showHidden、lessEmissions 和 multiCityJson。

结果分为 bestFlights 和 otherFlights。每个行程都包含 price、type、以分钟为单位的 totalDuration、由各航段构成的 flights 数组、carbonEmissions 对象,以及 bookingToken。每个航段包含 departureAirport 和 arrivalAirport(各自含有 id、name 和当地 time)、duration、airline、flightNumber、airplane、legroom、travelClass、extensions 数组,以及 Google 标记的航段所对应的 oftenDelayedByOver30Min。直飞行程只有一个航段,中转行程则包含多个航段。

carbonEmissions 的单位是克,不是千克。thisFlight: 433000 表示 433 千克。differencePercent 将该航班与 typicalForThisRoute 进行比较,因此负数表示该航班比平均水平更环保。

{
  "price": 295,
  "type": "One way",
  "totalDuration": 415,
  "flights": [
    {
      "departureAirport": { "id": "JFK", "name": "John F. Kennedy International Airport", "time": "2026-09-15 8:15" },
      "arrivalAirport": { "id": "LHR", "name": "Heathrow Airport", "time": "2026-09-15 20:10" },
      "duration": 415,
      "airline": "Virgin Atlantic",
      "flightNumber": "VS 26",
      "airplane": "Boeing 787",
      "travelClass": "Economy"
    }
  ],
  "carbonEmissions": { "thisFlight": 367000, "typicalForThisRoute": 419000, "differencePercent": -12 },
  "bookingToken": "W1t7..."
}

priceInsights 与行程并列,其中包含 lowestPrice、typicalPriceRange、typical 等 priceLevel 值,以及由 [timestamp, price] 数据点构成的 priceHistory。airports 会返回解析后的出发和到达机场信息,包括城市和国家/地区。

提示词和资源

该服务提供一个提示词,即一个现成的工作流,客户端可以直接提供给用户,而无需让用户自行编写工具调用。

提示词功能
google_flights比较两个机场之间的航班选项。

此外,该服务还公开了 7 个资源,每个资源对应一个取值范围固定的参数。读取资源比在调用遭拒后再了解这些取值更省事,而且不消耗额度。每个 URI 的格式为 hasdata://google_travel_flights/<parameter>。

参数值数量选择内容
type3指定航班类型。选项:- roundTrip(默认)- oneWay - multiCity(需要 multiCityJson 提供航班详情)对于往返行程,请使用单独的请求和 departureToken 获取返程航班详情。
gl245用于将搜索范围限制到指定国家/地区的两字母国家/地区代码。
hl159用于指定搜索语言的两字母语言代码。
currency71用于指定返回价格所用货币的参数。
travelClass4航班舱位(经济舱、高端经济舱、商务舱或头等舱)。
sortBy6按价格、出发时间、到达时间等对航班结果排序。
stops3限制航班行程中的经停次数。

这两个列表无需 API 密钥即可访问,因此客户端可以在用户注册前读取它们。

错误和故障路径

客户端几乎不会从工具调用中收到 HTTP 错误代码。MCP 层会返回 200,并将故障放在结果中,同时将 isError 设为 true,并以文本说明原因。Agent 读取的是一条消息,而你可能以为这里会显示状态行。

密钥错误会显示为工具输出,而非连接失败。 tools/list 接受任何非空密钥并返回工具,因此客户端可以完成握手并显示绿色状态。随后首次工具调用会返回 isError: true,文本为 HasData API error: 401 Unauthorized。请留意这条字符串,因为流程中更早的步骤不会报告此问题。

缺少密钥是唯一真正的 HTTP 错误。 授权会在调用任何工具前执行,连接本身会以 401 失败。响应中包含 CORS 标头,因此浏览器客户端可以读取状态,而不会只看到不透明的网络错误。

违反工具架构的参数会在发起抓取前被拒绝。 服务会返回 isError: true,文本为 MCP error -32602: Input validation error,并指出有问题的字段。未提供 returnDate 的 roundTrip,或同时使用 includeAirlines 和 excludeAirlines,都会在此处被拦截。

指定日期没有航班的航线会返回成功结果,但行程数组为空,而非报错。requestMetadata.status 仍为 ok。请先检查是否有航班,再进行排序。

错误的机场代码会返回 400,且 requestMetadata.status 设为 error。请使用 IATA 代码或 kgmids,而不是城市名称。

包含数据的结果还会附带一个 requestMetadata.id,可在联系支持时引用。

定价、免费套餐和限制

每次成功调用 Google Flights 都会消耗 15 个额度。响应大小不会影响价格,深度搜索与标准搜索的费用相同。

免费套餐每月提供 1,000 个额度,无需绑定银行卡,约可搜索 66 次航班。额度会随计费周期续期,因此低频使用的 Agent 可以一直使用免费套餐。

付费套餐起价为 每月 $59,包含 200,000 个额度,约可搜索 13,000 次。随着用量增加,单价会降低:入门套餐为 每 1,000 次调用 $4.42,Basic 套餐为 $1.79,Growth 系列套餐均为 $1.25。当前价格请查看定价页面。

套餐还决定并发数。免费套餐允许同时处理 1 个请求,Startup 套餐为 5 个,Basic 套餐为 15 个,Growth 系列套餐则为 50 到 500 个。对于无人值守运行的程序,请务必妥善处理超出并发限制的情况。

未返回 200 状态码的请求不会计费。往返行程需要调用两次,请据此规划额度。

工具选择

apis 查询参数决定 Agent 可以看到哪些工具。工具越少,工具定义占用的上下文就越少,模型选错工具的可能性也越低。

?apis=google_travel_flights          the one tool in this repo
?apis=google_travel                   add Google Hotels
?apis=google_travel_flights,airbnb    flights plus Airbnb stays

该参数接受 google_travel 这样的提供方名称,也接受 google_travel_flights 这样的具体 API 名称。拼写错误的名称会被忽略。如果所有名称都无效,请求将失败并返回 400;响应正文会列出无法识别的名称以及所有有效值。不传该参数,同一端点便会提供全部 57 个 HasData 工具。

对比

Google 于 2018 年停用了 QPX Express 航班 API,此后从未推出替代产品,因此没有官方的 Google Flights API。现有方案要么抓取公开搜索结果,要么购买原始 GDS 票价数据的授权,成本高且流程繁琐。本服务读取网站显示的相同结果,并以 JSON 格式返回。

Google 官方 API本服务
可用性QPX Express 于 2018 年关闭后便不再提供基于实时结果并持续维护的架构
排放数据不提供按行程提供,并与航线平均值对比
价格历史不提供通过 priceInsights 提供典型价格范围
设置无需设置,因为该 API 并不存在只需一个密钥和一个 URL
费用不适用超出免费额度后收费,每次调用消耗 15 个额度

本服务不提供的功能。 不提供预订或付款功能。它会读取票价、航段以及 Google 自身用于跳转到预订流程的令牌,然后将预订步骤交还给你。

常见问题

有官方的 Google Flights API 吗?

没有。Google 于 2018 年关闭了 QPX Express,此后没有推出替代产品。所有方案读取的都是网站提供的相同公开搜索结果。本服务由 HasData 维护,并以结构化 JSON 格式返回结果。

什么是 Google Flights MCP 服务?

它是一种将 Google Flights 封装为工具、供 AI 客户端调用的服务。客户端通过模型上下文协议发送工具调用,服务获取行程并返回结构化 JSON,模型再处理结果。本服务提供一个工具,并在远程运行。

为什么往返行程需要调用两次?

Google 会先返回去程选项,每个选项都带有 departureToken。选择一个选项并传回其令牌,即可获取与之匹配的返程航班。这与网站的工作方式一致,因此往返行程会消耗 30 个额度。

碳排放数值的单位是千克吗?

不是,是克。thisFlight: 433000 表示 433 千克,differencePercent 则将其与航线平均值进行比较。

什么是深度搜索?

一种速度较慢的模式,返回的结果与 Google Flights 在浏览器中的显示完全一致。若追求速度,请关闭该模式;若需要与网站结果一致,请开启该模式。

可以将它与其他 HasData API 一起使用吗?

可以。apis 参数接受一个列表,?apis=google_travel 会在航班搜索之外添加 Google Hotels。移除该参数即可获取所有工具。

合规与个人数据

HasData 仅访问公开数据。平台的条款可能限制自动访问,您需自行负责合规事宜。

HasData 链接

产品页面和请求构建器Google Flights API
服务文档MCP 服务文档
一个服务中的全部 57 个工具HasData/hasdata-mcp
客户端指南MCP 客户端和集成
我们抓取的其他所有内容Google Flights API 及另外 54 项
方案和积分费用方案和积分费用
密钥和用量HasData 控制面板
npm 上的 Node 启动器@hasdata/google-flights-mcp
PyPI 上的 Python 启动器hasdata-google-flights-mcp

开发

此代码库包含远程服务的配置和文档。无需构建,也无需将任何内容容器化。

test/ 中的测试用于断言工具契约,即无需在此提交代码就可能发生变化的部分。测试会检查 ?apis=google_travel_flights 是否恰好返回一个工具、工具是否仍声明必需参数、名称是否有变,以及正在使用的密钥是否确实可用。最后一项会实际调用工具,消耗 15 个积分;这就是一次可能因合理原因失败的金丝雀测试的成本。

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

同一套测试会在每次推送时以及每周定时在 CI 中运行,因为上游工具列表可能会在无人改动此代码库的情况下发生变化。失败意味着工具列表变了、密钥停止工作或端点无法访问,断言消息会说明具体原因。

贡献

修正参数表和响应示例是最有价值的贡献,因为这些内容最容易过时。请附上您发出的调用和收到的响应。来自 Fork 的拉取请求会在不使用密钥的情况下运行测试套件,实时检查会跳过,而不会导致构建失败。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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