mcpField
D
dealdata

dealdata

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

关于 dealdata

dealdata 是连接 HasData 托管 Google Flights deals MCP 服务的本地桥接程序,适合根据自然语言行程想法查找航班优惠的旅行者。它返回航班日期、价格、行程信息和 Google Flights 链接,不支持预订或付款。

主要功能

  1. 01根据自然语言行程描述搜索优惠
  2. 02指定出发机场及可选目的地
  3. 03筛选日期、舱位、停靠次数和价格
  4. 04返回航班、行程和航空公司信息
  5. 05提供 Google Flights 直达链接

适用场景

  1. 01从出发机场查找海滩度假航班优惠
  2. 02按日期范围和行程长度筛选航班
  3. 03比较价格、飞行时长及中途停靠

MCP 相关

向 MCP 客户端提供一个只读航班优惠搜索工具,并将调用转发至 HasData 托管 Google Flights deals MCP 服务。该工具不提供预订、订票或付款功能。

配置

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

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

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

安装包
npm@reneturcios/dealdata0.1.0
ocighcr.io/cloudcorprecords/dealdata:0.1.0

工具

1

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

参数类型必填说明
qstring是自由文本行程描述,可以是单独的地点名称,也可以是完整句子: - **目的地**:`Tokyo` - **行程类型**:`beach escape`、`weekend getaway in Europe` - **季节或活动**:`I would like to see cherry blossom in Japan` 如果查询中包含某个时段,Google 会自行确定日期,并在 `searchInformation.dateRange` 中返回日期范围。
glstring否要将搜索范围限制到的国家/地区的两字母国家代码。请提供一个精确的已记录值(共支持 245 个),例如 `ac`、`af`。
hlstring否要用于搜索的两位语言代码。请提供一个准确的文档所列值(共允许 159 个),例如 `af`、`ak`。
typeenum否航班类型。需要提供 `arrivalId`。 - `1` / `roundTrip` — 往返 - `2` / `oneWay` — 单程 单程优惠不包含 `returnDate` 和 `tripLengthDays`。1 | roundTrip | 2 | oneWay
stopsenum否最多中转次数。需要提供 `arrivalId`。省略时允许任意中转次数。 - `1` / `nonStop` — 直飞 - `2` / `oneStopOrFewer` — 最多一次中转 - `3` / `twoStopsOrFewer` — 最多两次中转 如果该中转次数下没有可用航线,则返回空的 `flightDeals` 数组,而不是错误;对于没有直飞航班的航线,使用 `nonStop` 也是有效查询,只是结果为空。1 | nonStop | 2 | oneStopOrFewer | 3 | twoStopsOrFewer
adultsnumber否成人数量。价格按全体同行人员计算,因此增加人数会提高每项优惠的价格。 乘客人数只会重新计算价格,不会缩小搜索范围,因此无需提供 `arrivalId`。同行总人数不得超过 9 人。
childrennumber否儿童数量,按儿童自身的票价计费。计入 9 名乘客的上限。
currencystring否此参数用于定义返回价格的货币。请提供一个准确的文档值(共允许 71 个),例如 `ALL`、`DZD`。
maxPricenumber否最高票价,包含该价格。需要提供 `arrivalId`。省略时不设上限。 使用请求中指定的货币:当 `currency` 为 `EUR` 时,`650` 表示 650 EUR;默认表示 650 USD。
arrivalIdstring否将搜索固定到一个目的地,而不是让 Google 根据查询选择目的地。 - **IATA 代码**:3 个大写字母,例如东京成田机场的 `NRT`。 - **地点 kgmid**:以 `/m/` 开头,可在 Wikidata 的“Freebase ID”中找到,例如东京的 `/m/07dfk`。 以下所有筛选条件都需要此参数:`type`、`travelClass`、`stops`、`outboundDate`、`returnDate`、`travelDuration`、`tripLength`、`maxPrice`、`maxDuration`、`includeAirlines` 和 `excludeAirlines`。未提供时,Google 会静默忽略这些筛选条件。
returnDatestring否返程日期,格式与 `outboundDate` 的精确日期或日期范围相同,并且必须同时提供 `outboundDate`。 不能与 `travelDuration` 或 `tripLength` 同时使用——三者都用于设置行程长度。当 `type` 为 `oneWay` 时会被忽略。
tripLengthstring否行程天数。需要提供 `arrivalId`。不能与 `returnDate` 或 `travelDuration` 同时使用。 - **精确天数**:`7` - **范围**:`5,10` — 第一个值为最小值 与 `outboundDate` 配合使用可限制出发日期范围。当 `type` 为 `oneWay` 时会被忽略。
departureIdstring是出发机场的 3 位大写 IATA 代码,例如 `LAX` 或 `LHR`。请在 [IATA](https://www.iata.org/en/publications/directories/code-search) 上搜索。 每次搜索只能指定一个机场;不接受城市名称。
maxDurationnumber否飞行时长上限,单位为分钟;`1500` 表示 25 小时。需要提供 `arrivalId`。省略时不设上限。此限制适用于每一程,而非往返总时长。 Google 使用的衡量时长比其返回的 `durationMinutes` 更长,因此应将上限设得高于目标航班的时长:在最短优惠航班为 635 分钟的航线上,设置 `635` 会返回空结果,设置 `680` 则会返回该航班。结果为空时,请将 `maxDuration` 最多提高 200 分钟,再判断该航线是否确实没有结果。
travelClassenum否舱位。需要提供 `arrivalId`。 - `1` / `economy` — 经济舱 - `2` / `premiumEconomy` — 超级经济舱 - `3` / `business` — 商务舱 - `4` / `first` — 头等舱 票价会大幅上涨:在 LAX-NRT 航线上,相同搜索的经济舱票价为 $730,商务舱票价为 $2882。1 | economy | 2 | premiumEconomy | 3 | business | 4 | first
infantsOnLapnumber否由成人抱在腿上的婴儿数量。计入 9 名乘客的上限。 Google 对抱在腿上的婴儿收费高于占用独立座位的婴儿——这与航空公司的通常收费方式相反。
outboundDatestring否出发日期。需要提供 `arrivalId`。 - **精确日期**:`2026-12-10` - **日期范围**:`2026-12-01,2026-12-10` — 范围内的任意一天 省略时,Google 会根据查询内容或最低票价选择日期。
infantsInSeatnumber否占用独立座位的婴儿数量。计入 9 名乘客的上限。
travelDurationenum否预设行程长度。需要提供 `arrivalId`。不能与 `returnDate` 或 `tripLength` 同时使用。 - `1` / `week` — 约一周(6–8 天) - `2` / `weekend` — 周末(2–3 天) - `3` / `twoWeeks` — 约两周(13–15 天) 与 `outboundDate` 配合使用可限制出发日期范围。当 `type` 为 `oneWay` 时会被忽略。1 | week | 2 | weekend | 3 | twoWeeks
excludeAirlinesstring否从优惠结果中排除这些航空公司。需要提供 `arrivalId`。不能与 `includeAirlines` 同时使用。 可使用与 `includeAirlines` 相同的值。
includeAirlinesstring否仅保留这些航空公司。需要 `arrivalId`。不能与 `excludeAirlines` 一起使用。 以逗号分隔的 2 个字符 IATA 代码(`AF`、`UA`、`B6`)以及 Google 的航空联盟 `STAR_ALLIANCE`、`SKYTEAM`、`ONEWORLD`。两者可以混合使用。 不运营该航线的航空公司会返回空的 `flightDeals` 数组,而不是错误。

详细介绍

dealdata

dealdata 是一个小型本地桥接工具,连接托管的 HasData Google Flights deals MCP 服务。提供一个自然语言的 旅行构想——海滩度假、日本樱花之旅、香港烟花节——再加上一个 出发机场,Google 就会选择目的地和旅行日期, 并返回优惠信息,包括去程和返程日期、价格、 飞行时长、行程长度、经停次数、承运航空公司、 出发和到达机场,以及 Google Flights 链接。如果搜索条件由 Google 自行确定, 优惠信息还可能包含典型价格及其折扣、带照片的目的地 介绍,以及 Google 根据查询推导出的日期范围。

此桥接工具不存储任何自己的票价数据。它会在本地提供 上游服务的工具列表,内容与从在线端点捕获的内容完全一致, 并将每次工具调用转发至上游,原样返回结果。捕获到的 工具范围仅包含一个只读优惠搜索:只有已发布的票价数据, 不包含预订、订位、出票或支付工具。

工具

  • hasdata_google_travel_flights_deals_getGoogleFlightsDeals — 将旅行描述转换为 Google Flights 优惠信息。 必填:q(自然语言旅行描述) 和 departureId(一个出发机场,使用 3 个字母的 大写 IATA 代码)。可选:arrivalId(通过 IATA 代码或地点 kgmid 指定一个目的地;所有票价筛选条件都要求提供此项)、type(往返或单程)、 travelClass(经济舱、高级经济舱、商务舱、头等舱)、outboundDate 和 returnDate(具体日期或日期范围)、travelDuration(一周、 周末、两周)、tripLength(天数,具体值或范围)、stops、 maxDuration(每段航程的分钟数上限)、 maxPrice、includeAirlines / excludeAirlines、 adults、children、infantsInSeat、infantsOnLap (同行人数总计不得超过 9 人),以及用于本地化的 gl、hl、 currency。

配置

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

首次调用工具时,客户端会与上游建立可流式传输的 HTTP 会话:发送 JSON-RPC initialize 请求(protocolVersion 2025-03-26, clientInfo name dealdata),接着发送 notifications/initialized 通知,然后发送携带调用者参数 且不作更改的 tools/call 请求。上游在响应 initialize 时若带有 Mcp-Session-Id 标头,该值会随会话中的 每个后续请求一同发送;该会话会在进程运行期间重复使用。响应 可能是普通 JSON,也可能是服务器发送事件;两种格式都会读取。

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

CLI

此工具也可作为子命令使用,并接受一个 JSON 参数字符串:

npx @reneturcios/dealdata hasdata_google_travel_flights_deals_getGoogleFlightsDeals '{"q":"beach escape","departureId":"LAX"}'
npx @reneturcios/dealdata --version

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

MCP 服务

npx -y @reneturcios/dealdata mcp

MCP 客户端配置:

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

Docker

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

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

开发

npm install
npm run build
npm test
npm run dev

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

许可证

MIT — 详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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