mcpField
C
cruisescope

cruisescope

本地服务
github.com/CloudCorpRecords地图与出行01 周前更新

关于 cruisescope

cruisescope 是连接 gangwaze 托管 MCP 服务的本地桥接工具,适合查询邮轮航次。它转发只读工具,用于搜索和比较票价、查看价格历史及查询邮轮、港口和客舱信息;不提供预订或付款功能。

主要功能

  1. 01按行程和票价条件搜索航次
  2. 02比较航次信息与票价
  3. 03查看票价历史和降价情况
  4. 04查询邮轮、客舱和邮轮公司
  5. 05查找港口指南与岸上游览

适用场景

  1. 01按目的地、日期和预算筛选邮轮
  2. 02比较候选航次
  3. 03查看票价是否下降
  4. 04查询客舱和港口活动

MCP 相关

通过本地 MCP 服务公开 gangwaze 捕获的工具列表,并将调用转发至 gangwaze 托管 MCP 服务。工具仅供查询,结果原样返回。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-cruisescope": {
"command": "npx",
"args": [
"-y",
"@reneturcios/cruisescope"
]
}
}
}
启动命令npx -y @reneturcios/cruisescope

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/cruisescope0.1.0
ocighcr.io/cloudcorprecords/cruisescope:0.1.0

工具

14

收录的工具列表 · 更新于 1 周前

参数类型必填说明
cabinarray否舱房类型键,必须完全匹配以下小写值:"inside"、"oceanview"、"balcony"、"suite"。多个值按 OR 处理。不得使用其他拼写或大小写形式(例如 "Suite")——无法识别的值会被拒绝。
portsarray否停靠港,必须使用目录中的准确名称。多个值按 OR 处理。工具会将每个名称与实际目录匹配,并为无法识别的名称返回建议。
priceany否整趟邮轮每人 INSIDE 舱房总价,以整数美元表示,并使用冒号分隔的闭区间 "lo:hi",例如 "100:900" 表示 $100 到 $900。允许开放区间:"500:" 或 ":1500"。用于总预算(“低于 $1,500”);如果预算按天/晚计算,请改用 `pricePerNight`。始终使用 inside 舱房价格,不得使用其他舱房类型的价格。不要传入单个数字或用连字符表示的范围。null 表示不限制。
shipsarray否船名,必须使用目录中的准确值。多个值按 OR 处理。工具会将每个名称与实际目录匹配,并为无法识别的名称返回建议。
vibesarray否行程风格,必须完全匹配以下值:"relaxing"、"adventure"、"nature"、"shopping"。多个值按 OR 处理。仅映射用户明确表达的内容(“轻松的海滩周” -> ["relaxing"];“风景和野生动物” -> ["nature"]);不得根据目的地推断风格。空数组表示不限制。
familyany否船舶的家庭适配度,取值范围为 0–100,并使用冒号分隔的闭区间 "lo:hi"。“家庭出游”、“带孩子”、“青少年”、“多代同游” -> "60:";“仅限成人”、“情侣度假”、“不要孩子”、“安静的船” -> ":40"。不得向用户提及分数。不要传入单个数字或用连字符表示的范围。null 表示不限制。
nightsany否邮轮时长,使用冒号分隔的闭区间 "lo:hi",例如 "7:7" 表示正好 7 晚,"5:9" 表示 5 到 9 晚。允许开放区间:"5:"(5 晚及以上)或 ":9"(最多 9 晚)。不要传入单个数字(如 "7"),也不要使用连字符(如 "5-9")——两者均无效,筛选条件会被拒绝。null 表示不限制。
safetyany否安全评分,取值范围为 0–100,并使用冒号分隔的闭区间 "lo:hi",例如 "80:100" 表示安全评分至少为 80。允许开放区间:"80:" 或 ":50"。不要传入单个数字或用连字符表示的范围。null 表示不限制。
endDateany否最晚启航日期,格式为 "YYYY-MM-DD"(例如 "2027-06-30")。null 表示没有上限。
regionsarray否子区域名称,必须使用目录中的准确值(例如 "Eastern Caribbean"、"Western Mediterranean")。多个值按 OR 处理。工具会将每个名称与实际目录匹配,并为无法识别的名称返回建议——不区分大小写,但必须是实际存在的区域。
lineTypearray否邮轮公司档次,必须完全匹配以下值:"mainstream"、"premium"、"luxury"、"river"。多个值按 OR 处理。用于“豪华邮轮”、“高档一些的”、“主流大型邮轮公司”等条件。指定的邮轮公司(“Seabourn”)应传入 `cruiselines`,切勿传入此字段——仅在未指定邮轮公司时使用此字段。空数组表示不限制。
shipSizeany否船舶大小按载客量(乘客人数)计算,并使用冒号分隔的闭区间 "lo:hi"。将描述映射到以下范围:“小型船”/“私密氛围”/“精品”/“不要像浮动城市” -> ":1500";“中型船” -> "1500:3000";“大型船”/“巨型船”/“船上活动丰富” -> "3000:"。也可指定数字:“载客量低于 1,000 人” -> ":1000"。船队载客量为 100 至 7,600 人。允许开放区间。不要传入单个数字或用连字符表示的范围。null 表示不限制。
shipYearany否船舶建造年份,使用冒号分隔的闭区间 "lo:hi",例如 "2015:" 表示 2015 年及之后建造的船舶——这是筛选“较新的船”的方式。目录涵盖 1998–2024 年。允许开放区间:"2015:" 或 ":2005"。注意这是建造年份,不是启航年份——邮轮出发时间请使用 startDate/endDate。不要传入单个数字或用连字符表示的范围。null 表示不限制。
startDateany否最早启航日期,格式为 "YYYY-MM-DD"(例如 "2027-03-01")。null 表示没有下限。
tripShapeany否邮轮是否返回出发地。若航程结束于出发港,使用 "round_trip"——适用于不想预订两趟航班的情况。若航程结束于其他地点(包括调位邮轮),使用 "one_way"。仅限这两个字符串;null 表示不设限制。约五分之一的航程是单程。
cruiselinesarray否邮轮公司名称,必须是目录中的准确值(例如 "Carnival Cruise Line",而非 "Carnival")。多个值按 OR 关系组合。工具会根据实际目录逐一解析,并为无法识别的名称返回建议。
destinationany否单个顶级区域名称,必须是目录中的准确值(例如 "Caribbean"、"Europe"、"Alaska")——不能是子区域,例如 "Mediterranean" 或 "Eastern Caribbean"(这些应填入 `regions`)。必须是目录中的实际值;如果无法识别,工具会返回建议。null 表示不设限制。
departureDaysarray否邮轮出发的星期几,只能使用以下值:"mon"、"tue"、"wed"、"thu"、"fri"、"sat"、"sun"。多个值按 OR 关系组合。"Weekend getaway" / "leave on the weekend" -> ["fri","sat"],并将 `nights` 设为 ":4",除非用户指定了航程长度。指定某一天("sails on a Saturday")-> 对应日期。仅提到短途邮轮并不意味着周末出发。空数组表示不设限制。
pricePerNightany否内舱房每晚价格,按每人计算,以整数美元表示,使用冒号分隔的闭区间 "lo:hi"——例如,“每天低于 $100”使用 ":100",每晚 $80 至 $120 使用 "80:120"。用户提到每天、每晚或每人每天预算时,使用此参数;总价预算使用 `price`。不要自行换算——直接传入用户所说的每晚价格。不要传入单个数字或用连字符连接的范围。null 表示不设限制。
departurePortsarray否出发港/登船港名称,必须是目录中的准确值。多个值按 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。