Faregrid

io.github.CloudCorpRecords由 GitHub 帳號 CloudCorpRecords 發布v0.1.0更新於 Nov 7, 2026

Search one-way and round-trip flight fares across dates and destinations, with price verdicts.

概覽

AI 產生的概覽

本機橋接服務,讓助理搜尋 Google Flights 的即時單程與來回機票價格,並提供價格判斷與訂票連結。

可以做什麼
  • 依出發地、目的地(一個或多個 IATA 代碼)以及單一日期或日期區間搜尋單程票價,可依轉機次數、航空公司、時段、幣別、價格上限、艙等與乘客人數篩選
  • 搜尋來回票價,以成對航段計價,可指定回程日期或旅遊天數,並分別設定去程與回程的轉機與航空公司條件
  • 一次呼叫即可比較多個日期與目的地組合,回傳價格、航空公司、時長、轉機次數、可訂票連結以及該航線的歷史價格區間
適用情境
適合讓助理在彈性日期或多個候選目的地之間比較機票價格,並判斷某條航線的票價是否偏高或偏低。它只做搜尋,適合調查與行程規劃,不用於訂票。
執行需求
以本機 stdio 程序執行,可透過 npx(需 Node.js)或 Docker 映像啟動。需要能連線至上游 FlightPowers 端點的網路。可選設定 FLIGHTPOWERS_MCP_URL 覆寫端點,設定 FLIGHTPOWERS_API_KEY 送出自己的 RapidAPI 金鑰;未設定金鑰時使用上游的免費登入額度。
安裝前請注意
工具呼叫會轉送至第三方託管服務,因此搜尋參數會離開本機。可選的 FLIGHTPOWERS_API_KEY 會以請求標頭送出,應視為機密。結果包含指向供應商自身流程的訂票連結;伺服器本身沒有訂票或付款工具,且票價幾分鐘內就會過期。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Faregrid,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

faregrid

faregrid is a small local bridge to the hosted FlightPowers MCP server, which reads live flight prices from Google Flights. Give it an origin and a destination, plus either a single date or a whole date range, and it answers with fares, airlines, durations, stop counts, a bookable link for each flight, and the historical price band that shows whether a fare is unusually cheap or expensive for that route.

The bridge keeps no fare data of its own. It serves the upstream server's tool list locally, exactly as captured from the live endpoint, and forwards each tool call upstream, returning the result untouched. The captured surface is search only: results carry a buy_link to book on the vendor's own flow, and there is no booking, purchase, or payment tool in it.

Tools

  • search_oneway_flights — one-way fares. Required: from_airport and to_airport (IATA codes; the destination may be several codes as "BCN,LIS,ATH" or ["BCN","LIS","ATH"]). Optional: departure_date, or a range via departure_date_from / departure_date_to, max_stops, airline_codes, exclude_airline_codes, departure and arrival hour windows, currency (default "usd"), max_price, seat_type, passengers, sort_by (default "best"), limit (default 10), max_searches, use_fallback, and verbose. One call can search every date/destination combination in a range.
  • search_roundtrip_flights — round-trip fares, priced as paired legs rather than two separate one-ways. Required: from_airport and to_airport. Optional: the same departure date or range fields as the one-way tool, plus return_date or nights (a trip length, or a list like [5, 6, 7]), max_departure_stops, max_return_stops, departure_airline_codes, return_airline_codes, returns_per_outbound, and the shared currency, max_price, seat_type, passengers, sort_by, limit, max_searches, use_fallback, and verbose fields.

Fares go stale within minutes, so a current price always comes from a new search rather than an earlier result.

Configuration

  • FLIGHTPOWERS_MCP_URL (optional) — override the upstream endpoint. Defaults to https://flights.flightpowers.com/mcp. (The override hook is this rebuild's own labelled reconstruction.)
  • FLIGHTPOWERS_API_KEY (optional) — when set, every upstream request carries an x-rapidapi-key: <key> header, for the caller's own RapidAPI key for the Google Flights Live API. When it is not set, no key header is sent and the upstream applies its free sign-in allowance. No Authorization header is ever sent. (This forwarding is also a labelled reconstruction; the original surface was captured keyless.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name faregrid), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures — a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed — come back as an isError result whose text starts with faregrid error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string:

bash
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

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/faregrid mcp

MCP client config:

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

Docker

bash
docker run -i ghcr.io/cloudcorprecords/faregriddocker run --rm ghcr.io/cloudcorprecords/faregrid --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

bash
npm installnpm run buildnpm testnpm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.

License

MIT — see LICENSE.

來源:README.md,提交 7120f91

工具

2

search_oneway_flights

FlightPowers: search one-way flights

FlightPowers one-way fare search: live prices read from Google Flights. Input: origin and destination IATA codes -- the destination may be several codes, as "BCN,LIS,ATH" or ["BCN","LIS","ATH"] -- plus either one departure date or a date range. Returns each flight's price, airline, duration, stops, a bookable buy_link, and Google's historical price range (price_insights_low / price_insights_high), the band that shows whether a fare is actually a good deal. Suited to any one-way fare question, including open-ended ones. One call accepts a date range and several destinations and searches every combination: 'Cheapest flight to Sri Lanka anywhere in October' is one call, not thirty. That holds with the caller's own key. On the free sign-in allowance (10 searches a day, one per combination) a grid larger than what is left today is refused before anything runs; a grid within what is left runs, and a whole-month scan needs the caller's own key. Each date/destination combination is one search; the count comes back in `api_usage`. `by_destination` carries one entry per requested destination -- empty ones included, each with a `reason` that separates a destination with no flights from one that was not searched, whose search failed, or whose fares did not fit in `limit`. Fares go stale within minutes: a current price comes from a new search, not from an earlier result.

輸入參數limitsort_byverbosecurrencymax_pricemax_stopsseat_typepassengersto_airport必填from_airport必填max_searchesuse_fallback另有 9 個

search_roundtrip_flights

FlightPowers: search round-trip flights

FlightPowers round-trip fare search: live prices read from Google Flights, priced as paired legs rather than two separate one-ways. Input: origin and destination IATA codes -- the destination may be several codes, as "BCN,LIS,ATH" or ["BCN","LIS","ATH"] -- a departure date or range, and either a return date or a trip length in nights. Returns the total price for both legs, per-leg airline, stops and duration, and a single bookable buy_link for the trip. Suited to any return-trip fare question. A flexible search is ONE call: departure_date_from / departure_date_to set the outbound range and `nights`, in place of return_date, compares trip lengths -- '5 to 7 nights in Rome sometime in May' is one call. A WHOLE MONTH is one call too. departure_date_from "2026-10-01", departure_date_to "2026-10-31" and nights [3, 4, 5] prices every departure day in October at three trip lengths and shows which combination is cheapest. That is 93 date/night combinations and the cap rises to cover them by itself, so the whole grid runs in that one call. That holds with the caller's own key. On the free sign-in allowance (10 searches a day, one per combination) a grid larger than what is left today is refused before anything runs; a grid within what is left runs, and a whole-month scan needs the caller's own key. Each date/night/destination combination is ONE search, so a month at three trip lengths is 93 of them and the same month across two destinations is 186. A search that fails with a server error is retried once, so with the caller's own key the figure the plan is charged is `api_usage.hub_requests_billed` (retries included), not the combination count. `by_destination` carries one entry per requested destination -- empty ones included, each with a `reason` that separates a destination with no flights from one that was not searched, whose search failed, or whose fares did not fit in `limit`. Fares go stale within minutes: a current price comes from a new search, not from an earli

輸入參數limitnightssort_byverbosecurrencymax_priceseat_typepassengersto_airport必填return_datefrom_airport必填max_searches另有 9 個

版本歷史

1
  1. v0.1.0最新Nov 4, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分