Open Transfer Times

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

Check if a flight connection is comfortable, tight or risky, with cited airport data.

已驗證STDIO僅桌面位置與生活資料與分析

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理判斷航班轉機是否舒適、緊湊或有風險,並附上可引用的機場資料。

可以做什麼
  • 評估單次轉機:給出決策、評級、信心程度、實際轉機時間、計入的轉乘步驟、餘裕與機票保障情況。
  • 比較並排序 2–20 個行程,依據決策、評級、機票保障、信心程度與餘裕。
  • 查詢機場的轉機時間額度、各項是經驗法則還是有來源,以及附官方連結的引用資料。
  • 列出擁有獨立資料的機場及其資料完整程度。
適用情境
適合助理在比較一次轉機的航班選項時,判斷較短的轉機時間是否實際可行,或在推薦、訂票前依轉機風險排序搜尋結果。
執行需求
透過 npx(npm 套件 open-transfer-times-mcp)以 stdio 在本機執行,需要 Node.js 20 以上版本。不需要 API 金鑰、帳號或網路連線。
安裝前請注意
所有工具皆為唯讀,不會索取任何憑證。結果是依表定時間與公開機場資料所做的結構性估算,並非官方最短轉機時間,也不是延誤預測;僅支援一次轉機的行程,沒有獨立資料的機場會採用標準基準值。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

open-transfer-times-mcp

An MCP server that lets AI agents check whether a flight connection is realistic before recommending or booking it.

Flight-search tools return itineraries; they do not say whether a 50-minute layover in Frankfurt is enough. This server answers that with a deterministic, explainable assessment from the open-transfer-times engine, and it returns the cited airport facts behind every estimate so the agent can show its sources.

Runs locally over stdio. No API keys, no network calls.

Tools

All tools are read-only.

ToolWhat it does
check_connectionAssess one connection: a decision (recommend / caution / insufficient_data / avoid), the rating (comfortable → risky), a confidence level with reasons, the real layover, each transfer step counted with its minutes, the margin, ticket-protection exposure, and the connection airport's cited facts.
compare_connectionsAssess 2–20 itineraries (e.g. flight-search results) and rank them: by decision, then rating, then ticket protection (one ticket → unknown → self-transfer), then confidence, then margin. A connection with missing data never outranks a usable one. Pass your own id per option to map results back.
get_airport_profileAn airport's transfer allowances, whether each is heuristic or sourced, and its cited facts with official links.
list_airportsAirports with their own profile and how well each is sourced.

check_connection input

FieldRequiredExampleNotes
from, via, toyesBER, LHR, PVGIATA codes; case-insensitive.
arrival_timeone of2026-09-20T10:00First flight's arrival, local time at via; a UTC offset (+02:00) is optional.
departure_timeone of2026-09-20T11:30Second flight's departure, local time at via.
layover_minutesone of90Use instead of the two times when only the layover length is known.
ticketnoprotectedprotected (one booking), separate (self-transfer), unknown (default).
arrival_terminal, departure_terminalno2, 5A terminal change is detected when both are given and differ.
terminal_changenotrueUse when a change is known but terminals are not.
baggage_rechecknofalsetrue: bags must be collected and checked in again. false: hand luggage only, or checked through. Omit only if unknown; on separate tickets the result then shows whether it matters.

Give either both times or layover_minutes. If both are given they must agree.

Example result text:

text
BER–LHR–PVG: CAUTION — The terminals are not known, and a terminal change would leave little or no margin; ask for the terminals.Rating: REASONABLE — A practical connection on one ticket.Confidence: MEDIUM — The terminals are not known; a terminal change would make this connection tight or risky. With a terminal change (25 min) the margin would be 10 min (tight). The transfer-step durations are rule-of-thumb estimates, not sourced figures.Layover 90 min, transfer steps 55 min, margin 10 to 35 min (10 min if every possible step applies: tight).Steps counted: Move through airport 40 min (heuristic); Allow for another security check 15 min (heuristic). No other steps were counted.Possible step not counted: Change terminals 25 min (terminals not given). Give the margin as a range and ask for the terminals if it matters.Factors: Transfer through London Heathrow; Additional security screening may apply; Moderate transfer margin.Ticket: Protected itinerary.MCT: no published minimum connection time in this data. This is a structural estimate, not proof that an airline would sell this connection.Data: London Heathrow profile (partial, 3 cited facts).Comparing several options? Send them together to compare_connections, which ranks them.Airport facts are context, not extra steps. Apply a fact only where its scope matches this trip:- All connecting passengers go through security screening again at Heathrow.- ...

On separate tickets with bags not stated, where a re-check would matter:

text
BER–IST–PVG: INSUFFICIENT DATA — Separate tickets, and it is not known whether bags must be collected and checked in again; a re-check would make this connection tight or risky. With a bag re-check the margin would be -15 min (risky). The result cannot be relied on.Do not call this connection safe, fine or comfortable. Tell the user the estimate is unreliable, why, and what would settle it.Confidence: LOW, for the reasons above.Rough estimate only: layover 75 min, transfer steps 45 min, margin 30 min....Bags: not stated. If they must be collected and checked in again, the margin is -15 min (risky). Ask the user.
  • The text leads with the decision, and compare_connections explains each option that is not recommended ("Why: …"). With insufficient_data the text leaves out the rating entirely: in the agent evaluation, agents repeated "comfortable" and "healthy margin" as reassurance even when the decision said the rating could not be relied on. The rating stays in structuredContent.
  • mct is kept apart from the structural rating. below_published means the layover is under an airline's published minimum connection time at this airport (e.g. Lufthansa, 60 min at FRA); whether it applies to the trip is unknown, so it is never treated as a pass.
  • decision is the field to act on. insufficient_data means key information is missing (the confidence reasons say what): ask the user rather than recommending the connection.
  • steps always adds up to transfer_process_minutes. Facts are listed with their scope (for example "Air France connections at Paris airports") so the agent does not apply them to the wrong trip.
  • Layovers are real elapsed time: at the 13 profiled airports a layover across a daylight-saving change is computed in the airport's time zone, and wall_clock_layover_minutes shows what the clocks say.

Instructions for agents

The server sends usage instructions when a client connects (MCP instructions): call a tool first with what the user gave, pass layover_minutes instead of inventing times, ask only when the airport or the duration is missing, use compare_connections for comparisons, explain only the counted steps, report the decision, ask about bags on separate tickets after giving the result, and respect fact scopes (scoped facts are shown as "(Only for: …)"). Each rule addresses a failure seen when testing agents; see eval.

The same data is returned as structuredContent matching the tool's output schema.

Setup

Requires Node.js 20+.

Claude Desktop — add to claude_desktop_config.json:

json
{  "mcpServers": {    "open-transfer-times": {      "command": "npx",      "args": ["-y", "open-transfer-times-mcp"]    }  }}

Claude Code:

bash
claude mcp add open-transfer-times -- npx -y open-transfer-times-mcp

From a clone of this repository (before the package is published):

json
{  "mcpServers": {    "open-transfer-times": {      "command": "node",      "args": ["/absolute/path/to/open-transfer-times/packages/mcp/src/cli.js"]    }  }}

Run npm install at the repository root first.

Using it with a flight-search server

Pair it with any MCP server that searches flights. Ask the agent something like "Find flights from Berlin to Shanghai on 20 September and rank the one-stop options by how safe the connection is" — the agent searches with one server and passes the results to compare_connections.

Limits

  • One-stop itineraries (two segments) only.
  • A structural estimate from scheduled times and published airport information: not an official minimum connection time, and not a delay prediction.
  • 13 airports have their own profile; all others use a standard baseline, which the result reports as coverage: "baseline".
  • Clock changes are handled at the 13 profiled airports; elsewhere pass times with UTC offsets for exact layovers.

Development

bash
npm install                          # at the repository rootnode packages/mcp/test/server.test.jsnpx @modelcontextprotocol/inspector node packages/mcp/src/cli.js   # interactive testing

來源:packages/mcp/README.md,提交 689cc92

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

3
  1. v0.2.1最新Nov 7, 2026
  2. v0.2.0Nov 4, 2026
  3. v0.1.2Nov 3, 2026

評分

已滿足適用檢查項的 50%

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

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

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

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分