关于 cruisescope
cruisescope 是连接 gangwaze 托管 MCP 服务的本地桥接工具,适合查询邮轮航次。它转发只读工具,用于搜索和比较票价、查看价格历史及查询邮轮、港口和客舱信息;不提供预订或付款功能。
主要功能
- 01按行程和票价条件搜索航次
- 02比较航次信息与票价
- 03查看票价历史和降价情况
- 04查询邮轮、客舱和邮轮公司
- 05查找港口指南与岸上游览
适用场景
- 01按目的地、日期和预算筛选邮轮
- 02比较候选航次
- 03查看票价是否下降
- 04查询客舱和港口活动
MCP 相关
通过本地 MCP 服务公开 gangwaze 捕获的工具列表,并将调用转发至 gangwaze 托管 MCP 服务。工具仅供查询,结果原样返回。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
14收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| cabin | array | 否 | 舱房类型键,必须完全匹配以下小写值:"inside"、"oceanview"、"balcony"、"suite"。多个值按 OR 处理。不得使用其他拼写或大小写形式(例如 "Suite")——无法识别的值会被拒绝。 |
| ports | array | 否 | 停靠港,必须使用目录中的准确名称。多个值按 OR 处理。工具会将每个名称与实际目录匹配,并为无法识别的名称返回建议。 |
| price | any | 否 | 整趟邮轮每人 INSIDE 舱房总价,以整数美元表示,并使用冒号分隔的闭区间 "lo:hi",例如 "100:900" 表示 $100 到 $900。允许开放区间:"500:" 或 ":1500"。用于总预算(“低于 $1,500”);如果预算按天/晚计算,请改用 `pricePerNight`。始终使用 inside 舱房价格,不得使用其他舱房类型的价格。不要传入单个数字或用连字符表示的范围。null 表示不限制。 |
| ships | array | 否 | 船名,必须使用目录中的准确值。多个值按 OR 处理。工具会将每个名称与实际目录匹配,并为无法识别的名称返回建议。 |
| vibes | array | 否 | 行程风格,必须完全匹配以下值:"relaxing"、"adventure"、"nature"、"shopping"。多个值按 OR 处理。仅映射用户明确表达的内容(“轻松的海滩周” -> ["relaxing"];“风景和野生动物” -> ["nature"]);不得根据目的地推断风格。空数组表示不限制。 |
| family | any | 否 | 船舶的家庭适配度,取值范围为 0–100,并使用冒号分隔的闭区间 "lo:hi"。“家庭出游”、“带孩子”、“青少年”、“多代同游” -> "60:";“仅限成人”、“情侣度假”、“不要孩子”、“安静的船” -> ":40"。不得向用户提及分数。不要传入单个数字或用连字符表示的范围。null 表示不限制。 |
| nights | any | 否 | 邮轮时长,使用冒号分隔的闭区间 "lo:hi",例如 "7:7" 表示正好 7 晚,"5:9" 表示 5 到 9 晚。允许开放区间:"5:"(5 晚及以上)或 ":9"(最多 9 晚)。不要传入单个数字(如 "7"),也不要使用连字符(如 "5-9")——两者均无效,筛选条件会被拒绝。null 表示不限制。 |
| safety | any | 否 | 安全评分,取值范围为 0–100,并使用冒号分隔的闭区间 "lo:hi",例如 "80:100" 表示安全评分至少为 80。允许开放区间:"80:" 或 ":50"。不要传入单个数字或用连字符表示的范围。null 表示不限制。 |
| endDate | any | 否 | 最晚启航日期,格式为 "YYYY-MM-DD"(例如 "2027-06-30")。null 表示没有上限。 |
| regions | array | 否 | 子区域名称,必须使用目录中的准确值(例如 "Eastern Caribbean"、"Western Mediterranean")。多个值按 OR 处理。工具会将每个名称与实际目录匹配,并为无法识别的名称返回建议——不区分大小写,但必须是实际存在的区域。 |
| lineType | array | 否 | 邮轮公司档次,必须完全匹配以下值:"mainstream"、"premium"、"luxury"、"river"。多个值按 OR 处理。用于“豪华邮轮”、“高档一些的”、“主流大型邮轮公司”等条件。指定的邮轮公司(“Seabourn”)应传入 `cruiselines`,切勿传入此字段——仅在未指定邮轮公司时使用此字段。空数组表示不限制。 |
| shipSize | any | 否 | 船舶大小按载客量(乘客人数)计算,并使用冒号分隔的闭区间 "lo:hi"。将描述映射到以下范围:“小型船”/“私密氛围”/“精品”/“不要像浮动城市” -> ":1500";“中型船” -> "1500:3000";“大型船”/“巨型船”/“船上活动丰富” -> "3000:"。也可指定数字:“载客量低于 1,000 人” -> ":1000"。船队载客量为 100 至 7,600 人。允许开放区间。不要传入单个数字或用连字符表示的范围。null 表示不限制。 |
| shipYear | any | 否 | 船舶建造年份,使用冒号分隔的闭区间 "lo:hi",例如 "2015:" 表示 2015 年及之后建造的船舶——这是筛选“较新的船”的方式。目录涵盖 1998–2024 年。允许开放区间:"2015:" 或 ":2005"。注意这是建造年份,不是启航年份——邮轮出发时间请使用 startDate/endDate。不要传入单个数字或用连字符表示的范围。null 表示不限制。 |
| startDate | any | 否 | 最早启航日期,格式为 "YYYY-MM-DD"(例如 "2027-03-01")。null 表示没有下限。 |
| tripShape | any | 否 | 邮轮是否返回出发地。若航程结束于出发港,使用 "round_trip"——适用于不想预订两趟航班的情况。若航程结束于其他地点(包括调位邮轮),使用 "one_way"。仅限这两个字符串;null 表示不设限制。约五分之一的航程是单程。 |
| cruiselines | array | 否 | 邮轮公司名称,必须是目录中的准确值(例如 "Carnival Cruise Line",而非 "Carnival")。多个值按 OR 关系组合。工具会根据实际目录逐一解析,并为无法识别的名称返回建议。 |
| destination | any | 否 | 单个顶级区域名称,必须是目录中的准确值(例如 "Caribbean"、"Europe"、"Alaska")——不能是子区域,例如 "Mediterranean" 或 "Eastern Caribbean"(这些应填入 `regions`)。必须是目录中的实际值;如果无法识别,工具会返回建议。null 表示不设限制。 |
| departureDays | array | 否 | 邮轮出发的星期几,只能使用以下值:"mon"、"tue"、"wed"、"thu"、"fri"、"sat"、"sun"。多个值按 OR 关系组合。"Weekend getaway" / "leave on the weekend" -> ["fri","sat"],并将 `nights` 设为 ":4",除非用户指定了航程长度。指定某一天("sails on a Saturday")-> 对应日期。仅提到短途邮轮并不意味着周末出发。空数组表示不设限制。 |
| pricePerNight | any | 否 | 内舱房每晚价格,按每人计算,以整数美元表示,使用冒号分隔的闭区间 "lo:hi"——例如,“每天低于 $100”使用 ":100",每晚 $80 至 $120 使用 "80:120"。用户提到每天、每晚或每人每天预算时,使用此参数;总价预算使用 `price`。不要自行换算——直接传入用户所说的每晚价格。不要传入单个数字或用连字符连接的范围。null 表示不设限制。 |
| departurePorts | array | 否 | 出发港/登船港名称,必须是目录中的准确值。多个值按 OR 关系组合。工具会根据实际目录逐一解析,并为无法识别的名称返回建议。 |
详细介绍
cruisescope
cruisescope 是一个小型本地桥接程序,用于连接 gangwaze 托管的 MCP 服务。该服务收录了邮轮航次目录:告诉它你想去哪里、何时出发以及 预算多少,目录就会返回符合条件的航次、票价,以及指向 gangwaze.com 完整结果的 链接。
该桥接程序不维护自己的目录。它会在本地提供上游服务的工具列表,内容与从实时 端点捕获的完全一致,并将每次工具调用转发至上游,原样返回结果。捕获到的全部 功能都只能读取数据——搜索航次、比较候选航次、查看票价历史和降价信息,以及查询客舱、邮轮、邮轮公司、港口、 岸上观光项目和饮料套餐;其中没有预订、 购买或支付工具。
工具
searchCruises— 搜索即将启航的航次。所有筛选条件 均为可选:destination(顶级区域名称)、regions、departurePorts、ports、startDate/endDate、nights("lo:hi"范围)、cruiselines、ships、cabin(inside、oceanview、balcony、suite)、price/pricePerNight("lo:hi"范围)、safety、family、tripShape、shipYear、shipSize、lineType、vibes和departureDays。结果按出发时间从近到远排序,每个航次都包含一个id。compareSailings— 并排比较两到三个航次: 日期、港口、价格和每晚价格、相对于六个月平均价格的价格评估、 邮轮的船龄和大小、是否适合家庭、评分以及 CDC 评分。必填:ids。getPriceHistory— 根据某个航次六个月的票价历史,评估其当前票价, 并提供评估结果和降价标记。必填:id。getPriceDrops— 当前降价幅度最大的航次。 可选:limit(1-10)。getCabinDetail— 按邮轮和房间号查询一个特定客舱:甲板、位置、 类别、已知问题和乘客评论。必填:ship、cabin。getShipCabins— 按类型分组显示某艘邮轮的客舱,包括 类别、数量和面积范围。必填:ship。getShipProfile— 某艘邮轮的资料:建造和翻新年份、 大小、乘客和船员人数、评分、场所及编辑内容。 必填:ship。getCruiseLineProfile— 某家邮轮公司的资料:适合哪些人、 按旅客类型划分的评分、档次和船队规模。 必填:line。getDressCode— 某家邮轮公司的着装规范:白天和 晚间规定、正式之夜以及场所规定。 必填:line。getPortGuide— 邮轮港口指南:活动、海滩、购物、 码头、安全、wifi 和租车。 必填:port。getPortExcursions— 某个港口可预订的岸上观光项目和日间通行证, 包含价格、时长和评分。 必填:port。可选:activity、minPrice、maxPrice。getSailingExcursions— 一次调用即可查询某个航次每个港口的观光项目, 并按行程顺序排列。传入sailingId,或传入ship和date。可选:activity、minPrice、maxPrice。getBestTimeToVisit— 按月显示某个港口、区域或目的地的气温和 降雨量,并列出最温暖和最干燥的月份。必填:place。getDrinkPackages— 按邮轮公司查询饮料套餐详情:名称、饮料最高价格、 每日限额和小费。可选:cruiseline(省略则查询所有邮轮公司)。
配置
GANGWAZE_MCP_URL(可选)— 覆盖上游 端点。默认为https://gangwaze.com/api/mcp。 (此覆盖钩子是本次重建中自行标注的 还原内容。)GANGWAZE_API_KEY(可选)— 设置后,每个 上游请求都会携带X-Api-Key: <key>标头 (以获得更高的速率限制)。未设置时,不会发送密钥 标头,访问为匿名。绝不会发送Authorization标头。(此转发功能同样是明确标注的还原内容; 原始功能界面是在不带密钥的情况下捕获的。)
转发机制
首次调用工具时,客户端会通过可流式传输的
HTTP 与上游建立会话:发送 JSON-RPC initialize
请求(protocolVersion 2025-03-26,clientInfo name
cruisescope),随后发送 notifications/initialized
通知,再发送携带调用方原样参数的 tools/call 请求。
当上游通过 Mcp-Session-Id 标头响应
initialize 时,该值会随会话的后续每个请求一并发送,
并在进程的整个生命周期内复用。响应
可能是纯 JSON,也可能是服务器发送事件;
两种格式都会读取。
成功的上游结果会原样传递,
包括上游设置的任何 isError 标记。
失败情况——JSON-RPC 错误、非 2xx 状态、
无法读取的响应,或无法完成的请求——
会作为 isError 结果返回,其文本以
cruisescope error: 开头(此呈现方式是本次重建自行添加的标注)。
CLI
每个工具也可作为子命令使用,并接受一个 JSON 参数 字符串(无需参数的工具可省略):
npx @reneturcios/cruisescope searchCruises '{"destination":"Caribbean","nights":"7:7"}'
npx @reneturcios/cruisescope compareSailings '{"ids":["carnival-breeze:2026-09-21:5","carnival-breeze:2026-09-28:5"]}'
npx @reneturcios/cruisescope getPriceHistory '{"id":"carnival-breeze:2026-09-21:5"}'
npx @reneturcios/cruisescope getPriceDrops '{"limit":5}'
npx @reneturcios/cruisescope getPortGuide '{"port":"Cozumel"}'
npx @reneturcios/cruisescope --version
退出代码:成功时为 0,结果为 isError 时为 1,
用法错误时为 2。
MCP 服务
npx -y @reneturcios/cruisescope mcp
MCP 客户端配置:
{
"mcpServers": {
"cruisescope": {
"command": "npx",
"args": ["-y", "@reneturcios/cruisescope", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/cruisescope
docker run --rm ghcr.io/cloudcorprecords/cruisescope --version
容器的默认命令是 mcp,因此第一种
形式是 stdio MCP 服务;其他参数会按常规方式传递给
CLI。
开发
npm install
npm run build
npm test
npm run dev
测试套件完全使用桩接的 JSON-RPC 上游运行,不会发起实时网络调用。
许可证
MIT — 详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。