FlyAI MCP Gateway
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FlyAI MCP Gateway查一下10月1日杭州到北京的机票,按价格排序"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FlyAI MCP Gateway
运行在 Cloudflare Workers 的 ChatGPT ↔ 飞猪 FlyAI 中间层。用户在 OAuth 授权页输入自己的 FlyAI API Key,无需注册 Gateway 账号。ChatGPT 仅持有 Gateway OAuth Token,服务端使用对应用户的 Key 查询飞猪。
ChatGPT → OAuth + MCP → Cloudflare Worker → FlyAI /mcp
↓
Workers KV
OAuth 授权与加密凭证已实现
Authorization Code + PKCE S256、动态客户端注册(DCR)、OAuth/资源发现、
resourceaudience 绑定。1 小时 access token、30 天 refresh token、刷新轮换、降权、撤销。
带 CSRF、HttpOnly/SameSite Cookie、来源校验、明确同意与取消按钮的中文授权页。
验证 Key 后才授权;用 HMAC 指纹作为用户标识,凭证通过 Cloudflare OAuth 库加密保存在授权 props 中。
请求级用户隔离、请求/响应体大小限制、45 秒上游超时、JSON/SSE 解析、敏感错误脱敏。
8 个明确限定的只读查询工具,不提供下单、支付或任意上游调用。
MCP 工具 | FlyAI 工具 | 功能 |
|
| 国内/国际航班 |
|
| 国内火车票 |
|
| 酒店 |
|
| 景点 |
|
| 旅行商品关键词搜索 |
|
| 自然语言旅行搜索 |
|
| 万豪酒店 |
|
| 万豪套餐 |
工具参数来自官方 @fly-ai/flyai-cli@1.0.16,如航班使用 origin、destination、depDate,酒店使用 destName、checkInDate、checkOutDate。酒店、航班、火车查询沿用官方 CLI 的 10 条候选限制,不代表完整库存。
Related MCP server: Travel Assistant MCP
本地运行
需要 Node.js 22 或更新版本。
npm ci
npm run setup:local
npm run check
npm test
npm run devsetup:local 生成已被 Git 忽略的 .dev.vars,包含两个独立随机服务密钥;已有文件不会被覆盖。打开 http://localhost:8787。本地 KV 与线上 KV 独立。
npm test 会先构建最新 Worker,再执行单元测试和真实 workerd/Miniflare 运行时集成测试,飞猪响应由测试桩提供,不使用真实 Key、不消耗额度。
# 只验证发现信息,不创建授权
npm run test:oauth -- http://localhost:8787
# 完整浏览器授权测试:在打印的网页地址中录入 Key
npm run test:oauth -- http://localhost:8787 --authorize完整测试会使用一次“杭州·西湖”景点查询验证 Key,可能消耗额度。测试结束撤销测试授权;Token 不输出、不写入文件。浏览器应与测试终端运行在同一台机器,回调绑定本机回环地址。
部署到 Cloudflare
登录并创建独立 KV:
node scripts/wrangler.mjs login node scripts/wrangler.mjs kv namespace create OAUTH_KV修改
wrangler.jsonc:把 KV 返回的 namespace ID 填入kv_namespaces[0].id;把MCP_RESOURCE_URL改成实际地址,如https://feizhu-mcp-gateway.<你的子域>.workers.dev/mcp。如果使用自定义域名,也要以该域名的/mcp为唯一 canonical resource,并在 Cloudflare 配置对应域名。设置两个独立随机 secret(至少 32 字符),不要使用示例占位符,也不要把 secret 写入
wrangler.jsonc。可以使用密码管理器生成:node scripts/wrangler.mjs secret put AUTH_COOKIE_SECRET node scripts/wrangler.mjs secret put USER_ID_SECRET构建和部署:
npm run check npm test npm run deploy npm run test:oauth -- https://feizhu-mcp-gateway.<你的子域>.workers.dev
AUTH_COOKIE_SECRET 用于授权表单防伪,USER_ID_SECRET 用于 Key 的不可逆 HMAC 指纹。FlyAI API Key 由用户在授权页面提交,不作为全局 Worker secret 配置。变更域名会改变 OAuth audience,旧客户端需重新连接;更换指纹密钥会改变新授权的用户标识。
飞猪签名兼容配置
固定上游是 https://flyai.open.fliggy.com/mcp。默认使用用户自己的 Bearer API Key;本项目没有复制官方 CLI 内置的共享 API Key 或签名密钥,也不依赖本机运行 CLI。
官方 CLI 还支持 v7 HMAC 请求签名和 AES-256-GCM x-ff-ctx。如飞猪为你的接入渠道要求签名,需要向飞猪获取适用于服务端的签名 profile,然后设置:
node scripts/wrangler.mjs secret put FLYAI_SIGN_SECRET
node scripts/wrangler.mjs secret put FLYAI_TTID签名算法已按 CLI 格式实现,并有签名/解密测试;环境信息如实标记为 Cloudflare Workers,未伪装个人设备。签名 secret 不能随意自生成,必须与飞猪服务端约定一致。
目前尚未使用真实 FlyAI Key 验证成功查询。 已验证无效 Key 会被官方入口拒绝。仅凭此结果无法确定有效 Key 是否还需要渠道签名或服务端风控许可;部署前请运行 test:oauth -- ... --authorize 验证。若验证失败,检查 Key、额度以及飞猪提供的签名要求。
在 ChatGPT 中连接
在支持自定义 MCP 的 ChatGPT 账户中打开开发者模式,创建远程 MCP 连接:
MCP URL:
https://你的域名/mcpAuthentication:OAuth
使用动态客户端注册(DCR),不手填 Client ID/Secret。
连接时,确认授权页展示的客户端及回调地址,输入自己的 Key,勾选同意后连接。服务依据注册元数据严格匹配回调 URI,不能把任意网页地址替换为回调。OpenAI 当前回调格式可能因连接模式不同而变化,以 ChatGPT 管理页为准。
连接后可尝试:“查询 2026-10-01 杭州到北京的机票,按价格升序排列。”未来使用时请换成实际出行日期。
数据、安全和运行边界
Key 只发给本 Gateway 和固定 FlyAI 上游。不会出现在工具参数、OAuth 元数据或 Token 响应中。服务运营者在处理请求时可以访问 Key。
KV 保存 OAuth 客户端、授权和令牌状态,Key 保存在库管理的加密 props 中,
user_id为带服务端 secret 的 HMAC 指纹。授权 metadata 不保存 Key。POST /oauth/token同时提供 RFC 7009 撤销:提交client_id、token、可选token_type_hint,不带grant_type。撤销 refresh token 会撤销整份授权。ChatGPT 断开连接是否请求撤销由客户端决定;在飞猪控制台撤销 Key 能阻止后续飞猪查询。测试覆盖顺序授权码重放、资源绑定、降权和用户隔离。OAuth 状态由 Workers KV 保存,KV 的全球最终一致性不提供跨地域并发消费的强一致保证;高并发公网多租户服务需进一步审计这一边界,不能将当前顺序重放测试视为并发安全证明。
默认关闭 Workers Observability,代码不记录 Key、Token 或上游原始错误。不要在 Cloudflare 自定义日志或代理层采集授权表单和 Authorization 请求头。
未自动重试上游请求;验证 Key 与工具查询都可能消耗飞猪额度。当前没有应用层用户限流;公开给大量用户前应为注册、授权及 MCP 路由配置 Cloudflare 限流,并核对 KV/Workers 用量。
本实现为查询网关,不保证飞猪完整库存、价格或库存时效;最终信息以飞猪为准。
验证状态与依据
已完成类型检查、Worker 打包、单元测试及 Workers 运行时 OAuth/MCP 集成测试。尚未创建 Cloudflare 线上资源、部署线上地址或完成真实 ChatGPT ↔ FlyAI 联调。
This server cannot be deployed
Maintenance
Related MCP Connectors
Search award flights and cash fares, optimize points, and predict fares inside ChatGPT and Claude.
Agent-native travel platform: read-only flight, hotel, and brand tools over MCP. OAuth sign-in.
Travel tools for AI agents: plan and edit real trips, search stays and tours, import travel videos.
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides access to 50+ Amadeus Travel APIs for AI assistants to search and book flights, hotels, activities, and ground transfers, along with travel analytics, price predictions, and comprehensive travel reference data.21 npmMIT
- AlicenseAqualityAmaintenanceEnables travel search workflows including airport lookup, route comparison, travel timing guidance, and external booking links with commission-eligible links.5586 npm1MIT
- AlicenseAqualityDmaintenanceEnables natural language search for flights, hotels, tours, and city information via the Amadeus Travel API, with automatic USD currency conversion.45 npm1MIT
- FlicenseNot gradedqualityAmaintenanceProvides real travel search for AI assistants, enabling flight, hotel, car rental, and ground transportation searches through a single MCP tool, with no API keys required.86-