关于 TourScanner
TourScanner 提供 REST API 和远程 MCP 服务,可搜索全球旅游、活动与景点,查询实时库存并完成预订。它面向旅游应用和 AI Agent,预订流程涵盖搜索、选择票种、生成支付链接及确认订单。
主要功能
- 01搜索旅游和活动
- 02查询实时库存与价格
- 03获取票种选项和预订问题
- 04暂留订单并生成 Stripe 支付链接
- 05付款后确认预订
适用场景
- 01按城市和关键词查找活动
- 02预订前确认供应商时段
- 03为所选票种创建支付链接
- 04客户付款后确认订单
MCP 相关
位于 https://tourscanner.ai/api/mcp 的远程 MCP 服务提供 12 个工具,涵盖搜索、库存查询、结账链接和预订状态。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://tourscanner.ai/api/mcpclaude mcp add --transport http tourscanner-org-tourscanner https://tourscanner.ai/api/mcp{"mcpServers":{"tourscanner-org-tourscanner":{"type":"http","url":"https://tourscanner.ai/api/mcp"}}}在 Cursor 中打开{"servers":{"tourscanner-org-tourscanner":{"type":"http","url":"https://tourscanner.ai/api/mcp"}}}在 VS Code 中打开{"mcpServers":{"tourscanner-org-tourscanner":{"type":"http","url":"https://tourscanner.ai/api/mcp"}}}{"mcpServers":{"tourscanner-org-tourscanner":{"serverUrl":"https://tourscanner.ai/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://tourscanner.ai/api/mcp需要授权工具
详细介绍
TourScanner AI 指南
如何使用 TourScanner API:搜索旅游和活动、查看实时可用情况并预订。本文也介绍 MCP 服务,供你让 AI Agent 执行相同操作时参考。
这是一个面向全球旅游、活动和景点的 REST API(通过 HTTPS 传输 JSON,采用 OpenAPI 3.1)。目录收录了来自 14 家供应商的约 100 万项活动,并通过一组统一的端点提供服务。本仓库是文档的实践指南:说明要调用哪些接口、按什么顺序调用,以及哪些错误会让人白白耗上一下午。
参考文档位于 tourscanner.ai/docs,机器可读规范位于 tourscanner.ai/openapi.json。
获取密钥
密钥需人工签发。请发送邮件至 [email protected],说明你正在开发什么,以及你关注哪些城市。每次请求都要在 X-API-Key 标头中发送密钥。未提供密钥时会收到 401。
export TOURSCANNER_API_KEY=your_key
发起第一个请求
curl -s "https://tourscanner.ai/api/search/activities?city=rome&q=colosseum&limit=3" \
-H "X-API-Key: $TOURSCANNER_API_KEY"
响应中会包含 activities,以及 total、page 和一些筛选项。每项活动都有一个 id、名称、评分,以及一个格式为 { "currency": "EUR", "price": 5400 } 的 price。
价格以最小货币单位的整数表示,因此 5400 相当于 54.00。min_price 和 max_price 筛选项也遵循这一规则。
预订流程
按以下顺序调用五个接口:
- 使用
GET /api/search/activities查找活动。 - 使用
POST /api/availability/slots查询指定日期的实际时段和价格。 - 使用
POST /api/booking/options获取票种和预订问题。 POST /api/booking/hold会预留时段并返回 StripecheckoutUrl。此时只会授权银行卡,不会扣款。- 客户付款后,使用
POST /api/booking/confirm。此操作会向供应商确认预订并扣款。
详情和请求正文见 docs/booking.md。步骤 1 至 4 的可运行示例见 examples/node/book.mjs。
示例
Node、Python、Ruby、Go 和 curl 示例都执行相同的三项操作:搜索、查看可用情况,以及完成预订流程直至获取 Stripe 链接。除语言标准库外,无需安装其他软件包(Node 18 或更高版本)。
| 搜索 | 可用情况 | 预订 | |
|---|---|---|---|
| Node | node examples/node/search.mjs rome colosseum | node examples/node/availability.mjs 12345 2026-12-01 | OPTION_CODE=... node examples/node/book.mjs 12345 2026-12-01 |
| Python | python3 examples/python/search.py rome colosseum | python3 examples/python/availability.py 12345 2026-12-01 | OPTION_CODE=... python3 examples/python/book.py 12345 2026-12-01 |
| Ruby | ruby examples/ruby/search.rb rome colosseum | ruby examples/ruby/availability.rb 12345 2026-12-01 | OPTION_CODE=... ruby examples/ruby/book.rb 12345 2026-12-01 |
| Go | go run . search rome colosseum | go run . availability 12345 2026-12-01 | OPTION_CODE=... go run . book 12345 2026-12-01 |
Go 示例请在 examples/go 目录中运行。curl 脚本位于 examples/curl。
示例会从 TOURSCANNER_API_KEY 读取密钥。设置 TOURSCANNER_BASE_URL 可将其指向其他主机。首次运行 book 时不要设置 OPTION_CODE:程序会打印可选项后停止,方便你选择代码。在生产主机上完整运行 book 会实际预留时段并创建 Stripe 结账页面。
没有你使用的语言?该 API 通过 HTTPS 传输纯 JSON,因此任何 HTTP 客户端都能使用。上面的 OpenAPI 规范可为大多数语言生成客户端。
面向 AI Agent
远程 MCP 服务位于 https://tourscanner.ai/api/mcp。它提供 12 个工具,涵盖搜索、可用情况、结账链接和预订状态。Claude、Cursor、VS Code 等产品的配置方法见 docs/mcp.md。
容易让人踩坑的地方
- 使用分,而不是欧元。 所有价格字段都以最小货币单位计。
productOptionCode来自booking/options。 没有它就无法创建预留,而且不同活动的代码也不同。passengers中必须包含adults,且其值至少为 1。- **电话号码必须包含国家代码,**例如
+442079460000。其他格式都会被拒绝。 - Stripe 会话会在 30 分钟后过期。 之后预留会被释放。
- 请在预订前立即检查可用性。 搜索结果来自我们的目录,时段则来自供应商的实时数据,两者可能不一致。
- 并非所有供应商都由我们直接处理预订。 其他供应商需要将旅客转交给合作伙伴。搜索时添加
providers=2,3,7,即可将结果限制为由我们直接预订的供应商。MCPget_activity工具会通过每项活动的bookableByUs字段报告这一信息。 - 触发速率限制时会返回
429,并附带Retry-After标头。请遵守该值。
环境
生产环境主机会创建真实预留和真实 Stripe 结账会话。如果你想使用基于供应商测试环境的沙盒,请在获取密钥时提出申请。
许可证
本仓库中的代码采用 MIT 许可证。通过 API 获取的目录内容受条款约束。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。