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.8 npmMIT
- AlicenseAqualityBmaintenanceEnables travel search workflows including airport lookup, route comparison, travel timing guidance, and external booking links with commission-eligible links.539 npm1MIT
- AlicenseAqualityBmaintenanceEnables AI agents to plan trips by searching flights, accommodations, and activities, and managing itineraries collaboratively with role-based permissions.205 npm148 PyPI1MIT

mcp-travelcodeofficial
AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search flights and hotels, manage bookings, check flight status, and access delay statistics through the TravelCode corporate travel API, all via natural language conversations.14 npm2MIT