
Open Transfer Times
io.github.joelynli0110Published by GitHub account joelynli0110v0.2.1Updated Nov 7, 2026
Check if a flight connection is comfortable, tight or risky, with cited airport data.
Overview
A local MCP server that lets an assistant judge whether a flight connection is comfortable, tight or risky, with cited airport facts.
- What you can do
- Assess a single connection: decision, rating, confidence, real layover, counted transfer steps, margin and ticket-protection exposure.
- Compare and rank 2–20 itineraries by decision, rating, ticket protection, confidence and margin.
- Look up an airport's transfer allowances, whether each is heuristic or sourced, and its cited facts with official links.
- List airports that have their own profile and how well each is sourced.
- When to use it
- Useful when an assistant is comparing one-stop flight options and needs to say whether a short layover is realistic, or to rank search results by connection risk before recommending or booking.
- Requirements
- Runs locally over stdio via npx (npm package open-transfer-times-mcp) and needs Node.js 20 or later. No API keys, no accounts and no network calls.
Installation
In SourceWeft
- Open Open Transfer Times in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
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.
check_connection input
Give either both times or layover_minutes. If both are given they must agree.
Example result text:
On separate tickets with bags not stated, where a re-check would matter:
- The text leads with the decision, and
compare_connectionsexplains each option that is not recommended ("Why: …"). Withinsufficient_datathe 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 instructuredContent. mctis kept apart from the structural rating.below_publishedmeans 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 isunknown, so it is never treated as a pass.decisionis the field to act on.insufficient_datameans key information is missing (the confidence reasons say what): ask the user rather than recommending the connection.stepsalways adds up totransfer_process_minutes. Facts are listed with theirscope(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_minutesshows 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:
Claude Code:
From a clone of this repository (before the package is published):
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
Source: packages/mcp/README.md at commit 689cc92
Tools
0Version history
3- v0.2.1LatestNov 7, 2026
- v0.2.0Nov 4, 2026
- v0.1.2Nov 3, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts