
KeyFlight PNR Converter
io.keyflight由 keyflight.io 發布官方發布者v1.0.0更新於 Oct 28, 2026
Decode Amadeus, Sabre, Galileo and Worldspan PNRs into itineraries, JSON and PRO ticket PDFs.
概覽
託管式 MCP 伺服器,可將 Amadeus、Sabre、Galileo 與 Worldspan 的 PNR 解碼為可讀行程、JSON 與 PRO 機票 PDF。
- 可以做什麼
- 把原始 GDS 訂位文字解碼為可讀行程文字與結構化 JSON,包含旅客、航班、機場、航廈、當地時間、飛行時長與航空公司訂位代號,並可選擇版面、時間與日期格式
- 依 PNR 產生 PRO 機票 PDF,可指定旅客姓名、訂位代號、艙等、價格、幣別與標誌,並回傳 PDF 連結
- 適用情境
- 適合處理 GDS 訂位的旅行社與代理,或為訂位工具、CRM、聊天機器人、電子郵件流程加入 PNR 解碼的開發者,希望助理把貼上的訂位文字轉成行程或給旅客的機票 PDF。
- 執行需求
- 遠端 Streamable HTTP 端點 keyflight.io/mcp,僅支援 POST,無需本機安裝。需要付費的 KeyFlight 訂閱(沒有免費額度)與 API 金鑰,透過 Authorization 標頭以 Bearer kfp_… 形式傳送;金鑰在訂閱頁面建立且只顯示一次。Claude Desktop 需經由 mcp-remote 連線,因此需要 Node.js。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 KeyFlight PNR Converter,將其新增到工作區。
- 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.keyflight%2Fpnr/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"keyflight-pnr-converter": {
"type": "http",
"url": "https://keyflight.io/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}README
KeyFlight PNR Converter: MCP server and PNR API
Paste a raw booking from a GDS (Amadeus, Sabre, Galileo, Worldspan) into Claude, Cursor or another AI assistant and get a readable itinerary, the booking as JSON, or a PRO ticket PDF.
KeyFlight runs a hosted Model Context Protocol server at https://keyflight.io/mcp and an HTTP API at https://keyflight.io/api/v1/pnr/decode. Both use the same decoder as the free PNR converter on keyflight.io.
This repository holds the documentation and examples. The server itself is hosted by KeyFlight: there is nothing to install or run. Full reference: keyflight.io/pnr-api.
Who it is for: travel agents and agencies who work with GDS bookings, and developers who add PNR decoding to a booking tool, CRM, chat bot or e-mail flow.
- Get an API key
- Connect an AI assistant (MCP)
- MCP tools
- PNR API over HTTP
- Limits
- Errors
- Supported GDS formats
Get an API key
The MCP server and the PNR API take the same key, kfp_ followed by 43 letters, digits, - and _.
- Get the KeyFlight subscription (the subscription for travel agents).
- On the same page use "Already subscribed?", open the link we e-mail you and press "Create API key".
- Copy the key: it is shown once. A subscription can have 2 keys at a time; you revoke a key on the same page.
While the subscription is not active, the key answers 403 subscription_inactive. There is no free tier for the API or the MCP server. The PNR converter on the website is free for everyone, with no key.
Connect an AI assistant (MCP)
Claude Code
Cursor (.cursor/mcp.json)
Claude Desktop (claude_desktop_config.json, needs Node.js)
Claude Desktop connects through mcp-remote:
Cline (cline_mcp_settings.json)
In Cline open MCP Servers → Configure MCP Servers and add:
Step-by-step notes for AI agents that install the server: llms-install.md.
Then ask, for example: "Decode this PNR and make a PRO ticket with a price of 850 EUR" and paste the booking.
Other clients: any MCP client that supports Streamable HTTP and custom headers. Requests sent from web pages of other sites (with a browser Origin header) are refused with 403 origin_not_allowed, so connect from a desktop app, a CLI or your server. Without a client, see examples/mcp/raw-jsonrpc.sh: one JSON-RPC message per POST, JSON back.
MCP tools
decode_pnr: decode a PNR
Turns a raw PNR into a readable itinerary (text) and structured JSON: passengers, flights, airports, terminals, local times, flight duration, airline locators.
Returns the itinerary text, then JSON: and the same JSON as the PNR API answer. Clients that read structuredContent get that JSON there.
Each decode that finds flights counts towards the monthly decodes of the subscription, like an API call. A text without flights returns an error and does not count. When the decodes of the month are used up, the tool returns an error until the 1st (UTC).
make_ticket: make a PRO ticket PDF
Makes a PRO ticket PDF (PNR, airline logos, class, optional price) from a raw PNR and returns a link to the PDF. Included in the KeyFlight subscription.
The ticket is a document for the traveller: it is not an airline ticket and its PNR is not checked against airline systems.
Returns a line PRO ticket PDF: https://keyflight.io/tickets/….pdf with the PNR, the number of flights and the passengers, and as structuredContent:
Tickets do not count towards the monthly decodes; one key can make up to 30 tickets an hour.
Errors (no flights in the text, a flight without a date or time, no passenger names, a wrong pnr or option, more than 30 tickets in an hour) come back as tool results with isError: true, so the assistant can read them and fix the call.
PNR API over HTTP
POST https://keyflight.io/api/v1/pnr/decode with Content-Type: application/json and Authorization: Bearer kfp_…. The body is { "text": "…", "options": { … } }. The HTTP API returns data and the itinerary as text and HTML; PRO ticket PDFs come from the MCP tool make_ticket. The examples below send the Amadeus booking from examples/pnr-amadeus.txt.
curl
Node.js 18+
Python
examples/api/decode.py (needs requests):
Options
An unknown option or a wrong value answers 400 invalid_option with the field and the allowed values.
Response
The full answer to the example above: examples/api/response-example.json (itinerary.html shortened). Main fields:
itinerary.html of the example in the table view, with options.show.logo: false, as the free converter shows it:
Limits
Answers of the HTTP API carry X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset and X-Monthly-Limit, X-Monthly-Remaining, X-Monthly-Reset.
Errors
PNR API errors are JSON: { "error": "<code>", "message": "…" }.
Before a tool runs, the MCP server answers in the same JSON: 401 missing_api_key / invalid_api_key, 403 subscription_inactive, 429 too_many_requests and 503 service_unavailable; also 403 origin_not_allowed for requests from web pages of other sites and 405 method_not_allowed for anything but POST. Inside a tool, errors (the monthly limit too) are tool results with isError: true.
Supported GDS formats
Amadeus (1A), Sabre (1B/1S), Galileo (1G) and Worldspan (1P). Send the booking as the GDS shows it; you don't need to say which system it came from. Example bookings for each system: Amadeus, Sabre, Galileo, Worldspan.
Links
- API and MCP reference: keyflight.io/pnr-api
- Free PNR converter (no key): keyflight.io/tickets/pnr
- KeyFlight subscription for travel agents: keyflight.io/subscription
License
The examples and documentation in this repository are under the MIT License. The KeyFlight service is not open source; using it needs a KeyFlight subscription.
來源:README.md,提交 f0ebd7c
工具
0版本歷史
1- v1.0.0最新Oct 20, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分